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.    "期间月份首尾日 | 
未完,待续。


发表评论