ABAP 日期时间函数

Posted Rainystuday

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ABAP 日期时间函数相关的知识,希望对你有一定的参考价值。

转自:http://www.sapjx.com/abap-datetime-function.html

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 获取查询日期过去N月的日期  

 

MONTH_PLUS_DETERMINE 获取查询日期未来N月的日期  
     
DATE_GET_WEEK 获取查询日期该年的第几周 输出格式:YYYYWW
WEEK_GET_FIRST_DAY 获取查询周数的第一天  
DAY_IN_WEEK 获取查询日期该天是星期几  
GET_WEEK_INFO_BASED_ON_DATE 获取查询日期该年的第几周和这周周一、周日日期 周起始日是周一
HR_GBSSP_GET_WEEK_DATES 获取查询日期该年的第几周和这周周一、周日日期,该天是周几 周起始日是周日
     
DATE_CHECK_PLAUSIBILITY 检查日期有效性 SY-SUBRC = 0 有效
TIME_CHECK_PLAUSIBILITY 检查时间有效性 SY-SUBRC = 0 有效
HOLIDAY_CHECK_AND_GET_INFO 判断某天是否是假日  
     
CONVERT_DATE_TO_INTERNAL 将标准日期格式转换为数字格式  
CONVERT_DATE_TO_EXTERNAL 将数字日期格式转换为系统日期格式  
DATE_CONVERT_TO_FACTORYDATE 将查询日期转为工厂日历日期  
     
HR_99S_INTERVAL_BETWEEN_DATES 获取两日期间的:天数、周数、月数、年数、期间月份开始截止日期  
FIMA_DAYS_AND_MONTHS_AND_YEARS 计算两日期之间间隔的天数  
FIMA_DATE_COMPARE 比较两个日期大小 返回:GT、EQ、LT等
SD_DATETIME_DIFFERENCE 两日期的时间差  
HRVE_CONVERT_TIME 时间:12/24小时制转换  
     
MONTH_NAMES_GET 获取所有的月份名字  
WEEKDAY_GET 获取所有的星期名字  
DAY_ATTRIBUTES_GET 查看日期属性 包括:该日期是星期几,第几天(周2=2),是不是公共假期等 需要输入国家日历
     
F4_DATE 弹出日历对话框,供用户选择日期  
F4_CLOCK 弹出时间对话框,供用户选择时间  
     
POPUP_TO_SELECT_MONTH 弹出选择年和月的对话框  
POPUP_CALENDAR_SDB 弹出选择周的对话框  
     
GET_CURRENT_YEAR 获得当前的财政年(fiscal year)  
FIRST_DAY_IN_PERIOD_GET 获得期间首日  
LAST_DAY_IN_PERIOD_GET 获得期间末日  

 

函数操作说明:

FIMA_DATE_CREATE 函数

获取输入日期前、后的年、月、日

01
02
03
04
05
06
07
08
09
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

 

RP_CALC_DATE_IN_INTERVAL 函数

获取输入日期前、后的年、月、日

01
02
03
04
05
06
07
08
09
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)

 

LAST_DAY_OF_MONTHS 函数

获取输入日期最后一天的日期

01
02
03
04
05
06
07
08
09
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 函数

获取输入日期最后一天的日期

01
02
03
04
05
06
07
08
09
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

 

CCM_GO_BACK_MONTHS 函数

获取输入日期过去N月的日期

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

 

MONTH_PLUS_DETERMINE 函数

获取输入日期后来N月的日期

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

 

DATE_GET_WEEK 函数

获取输入日期该年的周数,输出格式为:YYYYWW。

01
02
03
04
05
06
07
08
09
10
DATA week TYPE scal-week.
 
CALL FUNCTION \'DATE_GET_WEEK\'
  EXPORTING
    date         = \'20140101\'   "输入日期
  IMPORTING
    week         = week         "返回周数:201401
  EXCEPTIONS
    date_invalid = 1
    OTHERS       = 2.

 

WEEK_GET_FIRST_DAY 函数

获取输入周数的第一天

01
02
03
04
05
06
07
08
09
10
DATA date TYPE sy-datum.
 
CALL FUNCTION \'WEEK_GET_FIRST_DAY\'
  EXPORTING
    week         = \'201401\'   "输入周
  IMPORTING
    date         = date       "返回该周第一天(周一):2013.12.30
  EXCEPTIONS
    week_invalid = 1
    OTHERS       = 2.

 

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 =》星期三/周三

 

GET_WEEK_INFO_BASED_ON_DATE 函数

获取输入日期该年的周数和这周周一、周日日期(周起始日是周一)

01
02
03
04
05
06
07
08
09
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

 

HR_GBSSP_GET_WEEK_DATES 函数

获取查询日期该年的第几周和这周周一、周日日期,该天是星期几/周几(周起始日是周日)

01
02
03
04
05
06
07
08
09
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

 

HOLIDAY_CHECK_AND_GET_INFO 函数

判断某天是否是假日

01
02
03
04
05
06
07
08
09
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.

 

CONVERT_DATE_TO_INTERNAL 函数

将标准日期格式转换为内部数字格式

日期的格式与用户参数有关,转化为内部数字格式时,都为:YYYYMMDD.

01
02
03
04
05
06
07
08
09
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.

 

CONVERT_DATE_TO_EXTERNAL 函数

将内部数字日期格式转换为系统日期格式

系统日期格式输出时,与用户参数设置有关

01
02
03
04
05
06
07
08
09
10
DATA 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.

 

DATE_CONVERT_TO_FACTORYDATE 函数

根据日期返回工厂日历日期

01
02
03
04
05
06
07
08
09
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

(c)2006-2024 SYSTEM All Rights Reserved IT常识