1, 获取查询日期前、后的年、月、日
RP_CALC_DATE_IN_INTERVAL
1 2 3 4 5 6 7 8 9 10 11 |
DATA calc_date TYPE p0001-begda. CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' EXPORTING date = '20140101' "输入日期 days = 10 "天数 months = 0 "月数 signum = '+' "+号:表示 N天/月/年后的日期, -号:表示过去的日期 years = 0 "年数 IMPORTING calc_date = calc_date. "返回结果:10天后的日期(2014.01.11) |
FIMA_DATE_CREATE
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
DATA: date TYPE vtbbewe-dvalut, flag TYPE trff_flg, days TYPE trff_type_n_2. CALL FUNCTION 'FIMA_DATE_CREATE' EXPORTING i_date = '20140101' "输入日期 i_flg_end_of_month = ' ' i_years = 2 "两年后的日期. 即输入日期的年加2所得日期,可为负数,表示前两年 i_months = 1 "一个月后的日期.即输入日期的月加1所得日期,可为负数,表示前一个月 i_days = 23 "23天后的日期。可为负数,表示23天前的日期 i_calendar_days = 10 "10天后的日历。同I_DAYS参数。 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字段的和。 |
输出结果:
date:2016.03.31
flag:X
days:24
2, 获取查询日期最后一天的日期
LAST_DAY_OF_MONTHS
1 2 3 4 5 6 7 8 9 10 |
DATA date TYPE sy-datum. CALL FUNCTION 'LAST_DAY_OF_MONTHS' EXPORTING day_in = '20140101' "输入日期 IMPORTING last_day_of_month = date "返回日期:20140131 EXCEPTIONS day_in_no_date = 1 OTHERS = 2. |
RP_LAST_DAY_OF_MONTHS
1 2 3 4 5 6 7 8 9 10 |
DATA date TYPE sy-datum. CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' EXPORTING day_in = '20140101' "输入日期 IMPORTING last_day_of_month = date "返回日期:20140131 EXCEPTIONS day_in_no_date = 1 OTHERS = 2. |
BKK_GET_MONTH_LASTDAY
1 2 3 4 5 6 7 |
DATA date TYPE sy-datum. CALL FUNCTION 'BKK_GET_MONTH_LASTDAY' EXPORTING i_date = '20140101' "输入日期 IMPORTING e_date = date. "返回日期:20140131 |
3, 获取查询日期过去N月的日期
CCM_GO_BACK_MONTHS,年月日期减,
1 2 3 4 5 6 7 8 |
DATA date TYPE sy-datum. CALL FUNCTION 'CCM_GO_BACK_MONTHS' EXPORTING currdate = '20140101' "输入日期 backmonths = 3 "过去月数 IMPORTING newdate = date. "返回日期:20131001 |
4, 获取查询日期未来N月的日期
MONTH_PLUS_DETERMINE,年月日期加,
1 2 3 4 5 6 7 8 |
DATA date TYPE sy-datum. CALL FUNCTION 'MONTH_PLUS_DETERMINE' EXPORTING months = 3 olddate = '20140101' "输入日期 IMPORTING newdate = date. "返回日期:20140401 |
5, 获取查询日期该年的第几周
DATE_GET_WEEK
获取输入日期该年的周数,输出格式为:YYYYWW。
1 2 3 4 5 6 7 8 9 10 |
DATA week TYPE scal-week. CALL FUNCTION 'DATE_GET_WEEK' EXPORTING date = '20140101' "输入日期 IMPORTING week = week "返回周数:201401 EXCEPTIONS date_invalid = 1 OTHERS = 2. |
6, 获取查询日期该天是星期几
DAY_IN_WEEK
获取输入日期该天是星期几/周几
1 2 3 4 5 6 7 |
DATA wotnr TYPE p. CALL FUNCTION 'DAY_IN_WEEK' EXPORTING datum = '20140101' "输入日期 IMPORTING wotnr = wotnr. "返回:3 =》星期三/周三 |
7, 获取查询日期该年的第几周和这周周一、周日日期
GET_WEEK_INFO_BASED_ON_DATE
获取输入日期该年的周数和这周周一、周日日期(周起始日是周一)
1 2 3 4 5 6 7 8 9 10 11 |
DATA: week TYPE scal-week , monday TYPE sy-datum, sunday TYPE sy-datum. CALL FUNCTION 'GET_WEEK_INFO_BASED_ON_DATE' EXPORTING date = '20140101' IMPORTING week = week "返回周数:201401 monday = monday "返回周一日期:2013.12.30 sunday = sunday. "返回周日日期:2014.01.05 |
8, 获取查询日期该年的第几周和这周周一、周日日期,该天是周几
HR_GBSSP_GET_WEEK_DATES
获取查询日期该年的第几周和这周周一、周日日期,该天是星期几/周几(周起始日是周日)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
DATA: sunday TYPE sy-datum, saturday TYPE sy-datum, day_in_week TYPE i, week_no TYPE p08_weekno. CALL FUNCTION 'HR_GBSSP_GET_WEEK_DATES' EXPORTING p_pdate = '20140101' "输入日期 IMPORTING p_sunday = sunday "返回本周开始日期(周日):2013.12.29 p_saturday = saturday "返回本周结束日期(周六):2014.01.04 p_day_in_week = day_in_week "返回该日星期几/周几: 4 => 星期三/周三 "(这周中的第4天,由于开始日期是周日,故需要-1) p_week_no = week_no. "返回本周开始日期的周数:201352 |
9, 检查日期有效性
DATE_CHECK_PLAUSIBILITY
10, 检查时间有效性
TIME_CHECK_PLAUSIBILITY
SY-SUBRC = 0 有效,无效会raise exceptions
11, 判断某天是否是假日
HOLIDAY_CHECK_AND_GET_INFO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
DATA holiday TYPE c. DATA attributes TYPE SORTED TABLE OF thol. CALL FUNCTION 'HOLIDAY_CHECK_AND_GET_INFO' EXPORTING date = '20140201' "输入日期:春节 holiday_calendar_id = 'ZS' "假日日历 ID with_holiday_attributes = ' ' "属性标识 IMPORTING holiday_found = holiday "输出是否为假日的标记 输出结果:X TABLES holiday_attributes = attributes "输出该假日的属性 "若WITH_HOLIDAY_ATTRIBUTES参数 = X,则会带出属性记录 EXCEPTIONS calendar_buffer_not_loadable = 1 date_after_range = 2 date_before_range = 3 date_invalid = 4 holiday_calendar_id_missing = 5 holiday_calendar_not_found = 6 OTHERS = 7. |
12, 将标准日期格式转换为数字格式
CONVERT_DATE_TO_INTERNAL
将标准日期格式转换为内部数字格式
日期的格式与用户参数有关,转化为内部数字格式时,都为:YYYYMMDD.
1 2 3 4 5 6 7 8 9 10 11 |
DATA date TYPE sy-datum. CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL' EXPORTING date_external = '2014.01.01' "当前用户日期格式:YYYY.MM.DD accept_initial_date = ' ' IMPORTING date_internal = date "输出20140101 EXCEPTIONS date_external_is_invalid = 1 OTHERS = 2. |
13, 将数字日期格式转换为系统日期格式
CONVERT_DATE_TO_EXTERNAL
将内部数字日期格式转换为外部系统日期格式
系统日期格式输出时,与用户参数设置有关,SU3.
1 2 3 4 5 6 7 8 9 10 |
ATA date2(10) TYPE c. CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL' EXPORTING date_internal = '20140101' IMPORTING date_external = date2 "根据用户日期格式参数输出:YYYY.MM.DD EXCEPTIONS date_internal_is_invalid = 1 OTHERS = 2. |
用户参数设置 SU3 如下:
14, 将查询日期转为工厂日历日期
DATE_CONVERT_TO_FACTORYDATE
根据日期返回工厂日历日期
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
DATA: date TYPE scal-date, factorydate TYPE facdate, workingday TYPE scal-indicator. CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE' EXPORTING correct_option = '+' "表示工作日计算方式的标记 date = '20140101' "必须转换的日期 factory_calendar_id = 'ZS' "工厂日历ID IMPORTING date = date "工厂日历日期 factorydate = factorydate "指定日历中的工作日数 workingday_indicator = workingday "表示某日期是否为工作日的标志 EXCEPTIONS calendar_buffer_not_loadable = 1 correct_option_invalid = 2 date_after_range = 3 date_before_range = 4 date_invalid = 5 factory_calendar_not_found = 6 OTHERS = 7. |
输出结果:
date: 20140102
factorydate: 1531
workingday: +
15, 获取两日期间的:天数、周数、月数、年数、期间月份开始截止日期
HR_99S_INTERVAL_BETWEEN_DATES
获取两个日期期间的:天数、周数、月数、年数;
包括期间月份的开始(月份第一天日期)、截止日期(月份最后一天日期)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
TYPE-POOLS: p99sg. DATA: days TYPE i, weeks TYPE i, months TYPE i, years TYPE i. DATA: month_tab TYPE STANDARD TABLE OF p99sg_month_tab_row. CALL FUNCTION 'HR_99S_INTERVAL_BETWEEN_DATES' EXPORTING begda = '20130101' "开始日期 endda = '20140101' "截止日期 IMPORTING days = days "返回天数:266 c_weeks = weeks "返回周数:52 c_months = months "返回月数:12 c_years = years "返回年数:1 month_tab = month_tab. "期间月份首尾日 |
未完,待续。
发表评论