OTHERS                    = 2.

IF SY-SUBRC <> 0.

MESSAGE '第' && SY-TABIX && '行日期不合法' TYPE 'S'.

LEAVE LIST-PROCESSING AND RETURN TO SCREEN 0.

ENDIF.

计算两个时间间隔的分钟数

data lv_minutes type i.

call function 'DELTA_TIME_DAY_HOUR'

exporting

t1      = ls_ztwm011-eruhr "开始时间

t2      = sy-uzeit "结束时间

d1      = ls_ztwm011-erdat "开始日期

d2      = sy-datum "结束日期

importing

minutes = lv_minutes.

  • 输入开始结束日期,获取日期的属性(如对应星期几)

DAY_ATTRIBUTES_GET

  • 返回两个日期之间的年数、月数、天数

DATA E_DAYS TYPE I.

CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'

EXPORTING

I_DATE_FROM = '20110402'

I_DATE_TO = '20110522'

IMPORTING

E_DAYS = E_DAYS " 值为50

E_MONTHS = E_MONTHS " 值为2

E_YEARS = E_YEARS . " 值为1

  • 计算一个月的最后一天

call function 'DATE_GET_MONTH_LASTDAY'

exporting

i_date = gs_poper-budat_f

importing

e_date = gs_poper-budat_m.

  • 计算出一个日期(根据当前日期计算一个日期或返回一个月最后一天)

CALL FUNCTION 'FIMA_DATE_CREATE'

EXPORTING

I_DATE = SY-DATUM

* I_FLG_END_OF_MONTH = ' '

* I_YEARS = 0

* I_MONTHS = 0

I_DAYS = P_DAYS " 加填正数,减填负数,类型为 I

* I_CALENDAR_DAYS = 0

* I_SET_LAST_DAY_OF_MONTH = ' '

IMPORTING

E_DATE = P_DATE

* E_FLG_END_OF_MONTH =

* E_DAYS_OF_I_DATE =

检查是否是工作日

DATE_CHECK_WORKINGDAY

不同国家时间转换

IB_CONVERT_INTO_TIMESTAMP

先把时间转成时间戳

IB_CONVERT_FROM_TIMESTAMP

再把时间戳转成时间

取当前周(返回6位 4位年+2位周)

DATE_GET_WEEK

期间开始结束日期

data lv_variant            type t009b-periv.

data lv_from_date          type sy-datum.

data last_normal_period type t009b-poper.

data lv_to_date            type sy-datum.

select single periv

into lv_variant

from t001

where bukrs = p_bukrs.

call function 'G_POSTING_DATE_OF_PERIOD_GET'

exporting

period              = p_monat

variant             = lv_variant

year                = p_gjahr

importing

from_date           = lv_from_date

to_date             = lv_to_date

exceptions

period_not_defined  = 1

variant_not_defined = 2.

if sy-subrc <> 0.

message id sy-msgid type 'S' number sy-msgno

with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

leave list-processing.

endif.