ABAP 日期时间函数
ABAP 日期时间函数收集:
函数名称 (内页-点击名称可 查看操作) FIMA_DATE_CREATE RP_CALC_DATE_IN_INTERVAL
LAST_DAY_OF_MONTHS
RP_LAST_DAY_OF_MONTHS BKK_GET_MONTH_LASTDAY CCM_GO_BACK_MONTHS
函数说明
备注
获取查询日期前、 后的年、月、日 获取查询日期最 后一天的日期
1
获取查询日期过 去 N 月的日期 获取查询日期 未来 N 月的日 期
MONTH_PLUS_DETERMINE
DATE_GET_WEEK
获取查询日期 该年的第几周 获取查询周数 的第一天 获取查询日期 该天是星期几 获取查询日期 该年的第几周 和这周周一、 周日日期 获取查询日期 该年的第几周 和这周周一、 周日日期,该
输出格式: YYYYWW
WEEK_GET_FIRST_DAY
DAY_IN_WEEK
GET_WEEK_INFO_BASED_ON_DATE
周起始日是 周一
2
HR_GBSSP_GET_WEEK_DATES
周起始日是 周日
3
天是周几
DATE_CHECK_PLAUSIBILITY
检查日期有效 性 检查时间有效 性 判断某天是否 是假日
SY-SUBRC = 0 有效 SY-SUBRC = 0 有效
TIME_CHECK_PLAUSIBILITY
HOLIDAY_CHECK_AND_GET_INFO
CONVERT_DATE_TO_INTERNAL
将
日期格 式转换为数字 格式 将数字日期格 式转换为系统 日期格式 将查询日期转 为工厂日历日 期
CONVERT_DATE_TO_EXTERNAL
DATE_CONVERT_TO_FACTORYDATE
4
HR_99S_INTERVAL_BETWEEN_DATES
获取两日期间 的:天数、周 数、月数、年 数、期间月份 开始截止日期 计算两日期之 间间隔的天数 比较两个日期 大小 两日期的时间 差 时间:12/24 小时制转换 返回:GT、 EQ、LT 等
FIMA_DAYS_AND_MONTHS_AND_YEARS
FIMA_DATE_COMPARE
SD_DATETIME_DIFFERENCE
HRVE_CONVERT_TIME
5
MONTH_NAMES_GET
获取所有的月 份名字 获取所有的星 期名字 查看日期属性 需要输入国 包括:该日期 家日历 是星期几,第 几天 (周 2=2) , 是不是公共假 期等
WEEKDAY_GET
DAY_ATTRIBUTES_GET
F4_DATE
弹出日历对话 框,供用户选 择日期 弹出时间对话 框,供用户选 择时间
F4_CLOCK
POPUP_TO_SELECT_MONTH
弹出选择年和 月的对话框 弹出选择周的 对话框
POPUP_CALENDAR_SDB
6
GET_CURRENT_YEAR
获得当前的财 政年(fiscal year) 获得期间首日 获得期间末日
FIRST_DAY_IN_PERIOD_GET LAST_DAY_IN_PERIOD_GET
7
函数操作说明:
FIMA_DATE_CREATE 函数
获取输入日期前、后的年、月、日
01DATA: date TYPE vtbbewe-dvalut, 02 flag TYPE
trff_flg, 03 days TYPE trff_type_n_2. 04 05CALL
FUNCTION 'FIMA_DATE_CREATE' 06 EXPORTING 07 i_date = '20140101' &输入日期
08 i_flg_end_of_month = ' ' 09 i_years = 2 &两年
后的日期. 即输 10入日期的年加 2 所得日期,可为负数,
示前两年 11 i_months = 1 &一个月后的日期.即输 12入
日期的月加 1 所得日期,可为负数,表示前一个月 13
i_days = 23 &23 天后的日期。可为 14负数,表示 23 天前
的日期 15 i_calendar_days = 10 &10 天后的日历。同
16I_DAYS 参数。 17 i_set_last_day_of_month = 'X' &返回的日期为当前月 份的最后一天
IMPORTING e_date = date &返回的日期为当前月 份的最
后一天 e_flg_end_of_month = flag &如果输入参数
I_SET_LAST_DAY_OF_MONTH 设置’X’了,则返回值
为’X’。 e_days_of_i_date = days. &返回输入日期的
i_calendar_days 字段与 I_DAYS 字段的和。
8
输出结果:
date:2016.03.31
flag:X
days:24
9
RP_CALC_DATE_IN_INTERVAL 函数
获取输入日期前、后的年、月、日
01DATA calc_date TYPE p0001-begda. 02 03CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' 04 EXPORTING 05 date = '20140101' &输入日
期 06 days = 10 &天数 07 months = 0 &月数 08 signum =
'+' &+号: 表示 N 天/月/年后的日期, 09-号:
表示过去的日期 10 years = 0 &年数 11 IMPORTING
calc_date = calc_date. (2014.01.11) &返回结果:10 天后
的日期
LAST_DAY_OF_MONTHS 函数
获取输入日期最后一天的日期
01DATA date TYPE sy-datum. 02 03CALL FUNCTION 'LAST_DAY_OF_MONTHS' 04 EXPORTING 05 day_in = '20140101' 06 IMPORTING 07 last_day_of_month = date 08 EXCEPTIONS 09 day_in_no_date = 1 10 OTHERS = 2.
10
&输入日期 &返回日期:20140131
RP_LAST_DAY_OF_MONTHS 函数
11
获取输入日期最后一天的日期
01DATA date TYPE sy-datum. 02 03CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' 04
EXPORTING 05 day_in = '20140101' &输入日期
06 IMPORTING 07 last_day_of_month = date &返回日期:
20140131 08 EXCEPTIONS 09 day_in_no_date = 1 10 OTHERS = 2.
BKK_GET_MONTH_LASTDAY 函数
获取输入日期最后一天的日期
1DATA date TYPE sy-datum. 2 3CALL FUNCTION 'BKK_GET_MONTH_LASTDAY' 4
EXPORTING 5 i_date = '20140101' &输入日期
6 IMPORTING 7 e_date = date. &返回日期:20140131
CCM_GO_BACK_MONTHS 函数
获取输入日期过去 N 月的日期
12
1DATA date TYPE sy-datum. 2 3CALL FUNCTION 'CCM_GO_BACK_MONTHS' 4 EXPORTING 5 currdate = '20140101' &输入日期 6 backmonths
= 3 &过去月数 7 IMPORTING 8 newdate = date. &返回日
期:20131001
13
MONTH_PLUS_DETERMINE 函数
获取输入日期后来 N 月的日期
1DATA date TYPE sy-datum. 2 3CALL FUNCTION 'MONTH_PLUS_DETERMINE' 4 EXPORTING 5 months = 3 6 olddate = '20140101' &输入日期
7 IMPORTING 8 newdate = date. &返回日期:20140401
DATE_GET_WEEK 函数
获取输入日期该年的周数,输出格式为:YYYYWW。
01DATA week TYPE scal-week. 02 03CALL FUNCTION 'DATE_GET_WEEK' 04 EXPORTING 05 date = '20140101' 06 IMPORTING 07 week = week 08 EXCEPTIONS 09 date_invalid = 1 10 OTHERS = 2.
&输入日期 &返回周数:201401
WEEK_GET_FIRST_DAY 函数
14
获取输入周数的第一天
01DATA date TYPE sy-datum. 02
15
03CALL FUNCTION
'WEEK_GET_FIRST_DAY' 04 EXPORTING 05 week = '201401' &输入周 06 IMPORTING 07
date = date &返回该周第一天(周一): 082013.12.30 09 EXCEPTIONS 10 week_invalid = 1 OTHERS = 2.
DAY_IN_WEEK 函数
获取输入日期该天是星期几/周几
1DATA wotnr TYPE p. 2 3CALL FUNCTION 'DAY_IN_WEEK' 4 EXPORTING 5 datum = '20140101' &输入日期 6 IMPORTING 7 wotnr = wotnr. &返回:3 =》星期三/周三
GET_WEEK_INFO_BASED_ON_DATE 函数
获取输入日期该年的周数和这周周一、周日日期(周起始
日是周一)
01DATA: week TYPE scal-week , 02 monday TYPE sy-datum, 03 sunday TYPE sy-datum. 04 05CALL
16
FUNCTION
'GET_WEEK_INFO_BASED_ON_DATE' 06 EXPORTING 07 date = '20140101' 08 IMPORTING 09 week = week &返回周数:201401 10
monday = monday &返回周一日期:2013.12.30 11 sunday = sunday. &返回周日日期:2014.01.05
17
HR_GBSSP_GET_WEEK_DATES 函数
获取查询日期该年的第几周和这周周一、周日日期,该天
是星期几/周几(周起始日是周日)
01DATA: sunday TYPE sy-datum, 02 saturday TYPE sy-datum, 03 day_in_week TYPE i, 04 week_no TYPE p08_weekno. 05 06CALL FUNCTION
'HR_GBSSP_GET_WEEK_DATES' 07 EXPORTING 08 p_pdate = '20140101' &输入日
期 09 IMPORTING 10 p_sunday = sunday &返回本周开始
日期 (周日): 112013.12.29 12 p_saturday = saturday &返
回本周结束日期 (周六): 132014.01.04 14 p_day_in_week = day_in_week &返回该日星期几/周几: 4 = 星期三/周三
&(这周中的第 4 天,由于开 始日期是周日,故需要-1)
p_week_no = week_no. 201352 &返回本周开始日期的周数:
HOLIDAY_CHECK_AND_GET_INFO 函数
判断某天是否是假日
01DATA holiday TYPE c. 02DATA attributes TYPE
18
SORTED TABLE OF thol. 03 04CALL FUNCTION 'HOLIDAY_CHECK_AND_GET_INFO' 05 EXPORTING 06 date = '20140201' 07春节 08
holiday_calendar_id = 'ZS' 09ID 10 with_holiday_attributes = ' ' 11 IMPORTING 12
holiday_found = holiday
&输入日期: &假日日历 &属性标识 &输出是否
19
13为假日的标记 输出结果:X 14 TABLES 15
holiday_attributes = attributes &输出该假 16日的属性 17
&若 18WITH_HOLIDAY_ATTRIBUTES 参数 = X,则会
带出属性记录 19 EXCEPTIONS 20
calendar_buffer_not_loadable = 1 21 date_after_range = 2 date_before_range = 3 date_invalid = 4 holiday_calendar_id_missing = 5
holiday_calendar_not_found = 6 OTHERS = 7.
CONVERT_DATE_TO_INTERNAL 函数
将标准日期格式转换为内部数字格式
日期的格式与用户参数有关,转化为内部数字格式时,都
为:YYYYMMDD.
01DATA date TYPE sy-datum. 02 03CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL' 04
EXPORTING 05 date_external = '2014.01.01' &当前用户日期 06格式:YYYY.MM.DD 07
accept_initial_date = ' ' 08 IMPORTING 09 date_internal = date &输出 20140101 10 EXCEPTIONS 11
20
date_external_is_invalid = 1 OTHERS = 2.
CONVERT_DATE_TO_EXTERNAL 函数
将内部数字日期格式转换为系统日期格式
21
系统日期格式输出时,与用户参数设置有关
01DATA date2(10) TYPE c. 02 03CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL' 04 EXPORTING 05 date_internal = '20140101' 06 IMPORTING 07 date_external = date2 &根据用户日期格式
08参数输出:YYYY.MM.DD 09 EXCEPTIONS 10
date_internal_is_invalid = 1 OTHERS = 2.
DATE_CONVERT_TO_FACTORYDATE 函数
根据日期返回工厂日历日期
01DATA: date TYPE scal-date, 02 factorydate TYPE facdate, 03 workingday TYPE scal-indicator. 04 05CALL FUNCTION
'DATE_CONVERT_TO_FACTORYDATE' 06 EXPORTING 07 correct_option = '+' 08作日计
算方式的标记 09 date = '20140101' 10换的日期
11 factory_calendar_id = 'ZS' 12历 ID 13
IMPORTING 14 date = date 15历日期 16 factorydate =
factorydate 17历中的工作日数 18 workingday_indicator =
22
workingday 19日期是否为工作日的标志 20 EXCEPTIONS
21 calendar_buffer_not_loadable = 1 correct_option_invalid
= 2
&表示工 &必须转 &工厂日
&工厂日 &指定日 &表示某
23
date_after_range date_before_range date_invalid factory_calendar_not_found OTHERS
输出结果: date: 20140102 factorydate: 1531 workingday: +
= = = = =
3 4 5 6 7.
HR_99S_INTERVAL_BETWEEN_DATES 函数
获取两个日期期间的:天数、周数、月数、年数;
包括期间月份的开始(月份第一天日期)、截止日期(月份
最后一天日期)
01TYPE-POOLS: p99sg. 02DATA: days TYPE i, 03 weeks TYPE i, 04 months TYPE i, 05 years TYPE i. 06 07DATA: month_tab TYPE STANDARD TABLE OF
p99sg_month_tab_row. 08 09CALL FUNCTION 'HR_99S_INTERVAL_BETWEEN_DATES' 10 EXPORTING 11 begda = '20130101' &开始日期
24
12 endda = '20140101' &截止日期 13 IMPORTING 14 days = days &返回天数:266 15 c_weeks = weeks &返回周数:52 16 c_months = months &返回月数:
12 17 c_years = years &返回年数:1 18 month_tab = month_tab. &期间月份首尾日
month_tab 内容明细:
25
FIMA_DAYS_AND_MONTHS_AND_YEARS 函数
计算两个日期期间的天数
01DATA: days TYPE i, 02 months TYPE i, 03 years TYPE i. 04 05CALL FUNCTION
'FIMA_DAYS_AND_MONTHS_AND_YEARS'
06 EXPORTING 07 i_date_from = '20130101' 08 i_date_to = '20141001' 09 i_flg_separate = ' ' &是否单独计算 若有标识,则返 10回两日期相差的
天数 11 IMPORTING 12 e_days = days &返回天数:638 13
e_months = months &返回月数:21 14 e_years = years. &返
回年数:2 15 16* 单独计算 17CALL FUNCTION
'FIMA_DAYS_AND_MONTHS_AND_YEARS'
18 EXPORTING 19 i_date_from = '20130101' 20 i_date_to = '20141001'
26
21 22 23 24
i_flg_separate = 'X' IMPORTING e_days e_months e_years = days = months = years.
&标识 'X' &返回天数:0 &返回月数:9 &返
回年数:1
FIMA_DATE_COMPARE 函数
比较两个日期大小,返回结果是关系操作符:GT、EQ、
LT
01TYPE-POOLS trff . 02 03DATA log_op TYPE trff_type_c_2. 04 05CALL FUNCTION
'FIMA_DATE_COMPARE' 06 EXPORTING 07 i_flg_intraday = ' ' 08 i_date = '20140101' 09 i_time = '000000' 10 i_sincl = '0' 11 i_sult = '' 12 i_comp_date = '20140201' 13 i_comp_time = '000000' 14 i_comp_sincl = '0' 15 i_comp_sult = '' 16 IMPORTING 17 e_log_op =
27
log_op.
&计算期间开始的排除标识 &计算期间开始的月末标识符 &比较日期 &比较时间 &计算期间结束的包含标识 &计算期间结束的月末标识符 &返回比较结果:LT
SD_DATETIME_DIFFERENCE 函数
两个日期作差,即是两个日期相减,包括当天时间。
01DATA: datediff TYPE p, 02 timediff TYPE p, 03 earliest
TYPE c. 04 05CALL FUNCTION 'SD_DATETIME_DIFFERENCE' 06 EXPORTING
28
07 date1 08 time1 09 date2 10 time2 11 IMPORTING 12
datediff 13 timediff 14 earliest 150-相等 2-正 16
EXCEPTIONS 17 invalid_datetime OTHERS
= = = =
'20140101' '240000' '20140101' '083000' &返回日期差:0
&返回时间差:16 &返回时间正负:2,1-负
= datediff = timediff = earliest
= 1 = 2.
HRVE_CONVERT_TIME 函数
12 小时制与 24 小时制的时间转换,例如:07:00:00 pm - 19:00:00。
01DATA: lv_in_time TYPE tims, 02 lv_out_time TYPE
tims, 03 lv_am_pm TYPE c. 04lv_in_time = '060000'. 05CALL FUNCTION
29
'HRVE_CONVERT_TIME' 06 EXPORTING 07 type_time = 'B' A = 24 小时制 - 12 小时制 B
08= 12 小时制 - 24 小时制 09 input_time = lv_in_time 10 input_am_pm = 'PM' 11 IMPORTING 12 output_time = lv_out_time 13 output_am_pm = lv_am_pm 14 EXCEPTIONS 15 parameter_error = 1 16 OTHERS = 2. 17 18WRITE:/ | Input Time - { lv_in_time }|. 输出:060000
WRITE:/ |Output Time - { lv_out_time }|. 输出:180000
MONTH_NAMES_GET 函数
30
获取所有的月份名字信息
01DATA return_code TYPE sy-subrc. 02 03DATA month_names TYPE STANDARD TABLE OF t247. 04 05CALL FUNCTION 'MONTH_NAMES_GET' 06 EXPORTING 07 language = sy-langu &系统当前语言 08
IMPORTING 09 return_code = return_code &返回
SY-SUBRC 10 TABLES 11 month_names = month_names &返回月份信息 12 EXCEPTIONS 13
month_names_not_found = 1 14 OTHERS = 2.
month_names 明细内容:
WEEKDAY_GET 函数
获取所有的星期名字
31
01DATA return_code TYPE sy-subrc. 02 03DATA weekday TYPE STANDARD TABLE OF t246. 04 05CALL FUNCTION 'WEEKDAY_GET' 06
EXPORTING 07 language = sy-langu &系统当前语言 08
IMPORTING 09 return_code = return_code &返回
SY-SUBRC 10 TABLES 11 weekday = weekday &返回星期
名字信息 12 EXCEPTIONS 13 weekday_not_found = 1 14 OTHERS = 2.
weekday 内容明细:
DAY_ATTRIBUTES_GET 函数
查看日期属性 包括:该日期是星期几,第几天,是否公共
假期等;
公共假期等内容需要输入国家日历。
01DATA: year_of_valid_from TYPE scal-year, 02 year_of_valid_to TYPE scal-year, 03 return_code TYPE sy-subrc. 04
32
05DATA day_attributes TYPE STANDARD TABLE OF casdayattr. 06 07CALL FUNCTION
'DAY_ATTRIBUTES_GET' 08 EXPORTING 09 factory_calendar = ' ' &工厂日 10历 ID 11
holiday_calendar = ' ' &假期日 12历 ID 13
date_from = '20140101' &开始日 14期 15
date_to = '20140110' &截止日 16期 17 language
= sy-langu &系统当 18前语言 19 non_iso = ' '
20 IMPORTING 21 year_of_valid_from =
year_of_valid_from 22 year_of_valid_to = year_of_valid_to 23 returncode = return_code 24 TABLES 25 day_attributes = day_attributes &返回日期 26每日属性 EXCEPTIONS
factory_calendar_not_found = 1
holiday_calendar_not_found = 2 date_has_invalid_format = 3 date_inconsistency = 4 OTHERS = 5.
day_attributes 内容明细:
33
F4_DATE 函数
为 F4 帮助显示日历,弹出日历对话框,供用户选择日期
01PARAMETERS:p1(6) TYPE c. 02 03AT
SELECTION-SCREEN ON VALUE-REQUEST 04 05 DATA:l_date TYPE sy-datum. 06 07 CALL FUNCTION 'F4_DATE' 08 EXPORTING 09
date_for_first_month = 10 IMPORTING 11 select_date = 12后返回的日期 13 EXCEPTIONS 14
calendar_buffer_not_loadable = 15 date_after_range = 16 date_before_range = 17 date_invalid = 18 factory_calendar_not_found = 19
holiday_calendar_not_found = 20 parameter_conflict = OTHERS =
显示效果:
FOR p1.
sy-datum l_date &用户选择
1 2 3 4 5 6 7 8.
34
35
F4_CLOCK 函数
为 F4 帮助显示时间,弹出时间对话框,供用户选择时间
01PARAMETERS:p1(6) TYPE c. 02 03AT
SELECTION-SCREEN ON VALUE-REQUEST FOR p1. 04 05 DATA: l_time TYPE sy-uzeit. 06 07 CALL FUNCTION 'F4_CLOCK' 08 EXPORTING 09 start_time = sy-uzeit 10 display = ' ' 11 IMPORTING 12 selected_time = l_time.
效果显示:
36
POPUP_TO_SELECT_MONTH 函数
为 F4 帮助显示月份:弹出选择年和月的对话框
01PARAMETERS: p_year TYPE mard-lfgja DEFAULT 02sy-datum+0(4), 03 p_month TYPE mard-lfmon. 04 05AT SELECTION-SCREEN ON VALUE-REQUEST FOR
p_month. 06 07 DATA: actual_month LIKE isellist-month, 08 selected_month LIKE isellist-month, 09 return_code TYPE sy-subrc. 10 11 CONCATENATE p_year
sy-datum+4(2) INTO actual_month. 12 13 CALL FUNCTION 'POPUP_TO_SELECT_MONTH'
14 EXPORTING 15 actual_month = actual_month &传入年
16份 17 factory_calendar = ' ' &工厂日 18历
ID 19 holiday_calendar = ' ' &假日日 20历 ID
21 language = sy-langu &当前系 22统语言 23 start_column
= 8 &弹出框 24屏幕位置
37
25 start_row 26屏幕位置 27 IMPORTING 28
selected_month 29户输入月份 30 return_code 31sy-subrc 32 EXCEPTIONS 33 factory_calendar_not_found 34 holiday_calendar_not_found month_not_found OTHERS IF
return_code = 0.
= 5
&弹出框
= selected_month &返回用 = return_code &返回
= = = =
1 2 3 4.
p_year = selected_month+0(4). p_month = selected_month+4(2). ENDIF.
效果显示:
POPUP_CALENDAR_SDB 函数
38
弹出选择周的对话框
01DATA: begin_date TYPE sy-datum, 02 end_date TYPE
sy-datum. 03 04CALL FUNCTION
'POPUP_CALENDAR_SDB'
39
05 06 07 08 09 10 11 12 13
EXPORTING sel_day sel_week sel_month sel_interval focus_day IMPORTING begin_date end_date = = = = 'X' 'X' 'X' 'X' &启用天 选择 &启用周 选择 &启用月 选择 &默认选择
日期
= sy-datum
= begin_date &返回选择周第一天 = end_date. &返回选择
周最后一天
效果显示:
40
GET_CURRENT_YEAR 函数
获得当前的财政年(Fiscal year)
01DATA: currm TYPE bkpf-monat, 02 curry TYPE bkpf-gjahr, 03 prevm TYPE bkpf-monat, 04 prevy TYPE bkpf-gjahr. 05 06CALL FUNCTION
'GET_CURRENT_YEAR' 07 EXPORTING 08 bukrs = '3010' &输入公司代码 09 date =
sy-datum &输入日期 10 IMPORTING 11 currm = currm &当前会计期间 12 curry = curry &当前会计年度 13 prevm
= prevm &上期会计期间 14 prevy = prevy. &上期会计年度
41
42