sap 日期相关函数

限于喜欢 提交于 2019-12-03 14:22:10

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

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字段的和。
 
 
获取输入日期月份最后一天的日期:LAST_DAY_OF_MONTHS
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.
 
 
获取输入日期过去N月的日期:CCM_GO_BACK_MONTHS
DATA date TYPE sy-datum.
 
CALL FUNCTION 'CCM_GO_BACK_MONTHS'
  EXPORTING
    currdate   = '20140101'   "输入日期
    backmonths = 3            "过去月数
  IMPORTING
    newdate    = date.        "返回日期:20131001
 
 
获取输入日期后来N月的日期:MONTH_PLUS_DETERMINE
DATA date TYPE sy-datum.
 
CALL FUNCTION 'MONTH_PLUS_DETERMINE'
  EXPORTING
    months  = 3
    olddate = '20140101'   "输入日期
  IMPORTING
    newdate = date.        "返回日期:20140401
 
获取输入日期该天是星期几/周几:DAY_IN_WEEK
DATA wotnr TYPE p.
 
CALL FUNCTION 'DAY_IN_WEEK'
  EXPORTING
    datum = '20140101'  "输入日期
  IMPORTING
    wotnr = wotnr.      "返回:3 =》星期三/周三
 
 
将标准日期格式转换为内部数字格式:CONVERT_DATE_TO_INTERNAL
(日期的格式与用户参数有关,转化为内部数字格式时,都为:YYYYMMDD.)
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.
 
 
计算两个日期期间的天数:FIMA_DAYS_AND_MONTHS_AND_YEARS 
DATA: days   TYPE i,
      months TYPE i,
      years  TYPE i.
 
CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
  EXPORTING
    i_date_from    = '20130101'
    i_date_to      = '20141001'
    i_flg_separate = ' '       "是否单独计算 若有标识,则返回两日期相差的天数
  IMPORTING
    e_days         = days      "返回天数:638
    e_months       = months    "返回月数:21
    e_years        = years.    "返回年数:2
 
* 单独计算
CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
  EXPORTING
    i_date_from    = '20130101'
    i_date_to      = '20141001'
    i_flg_separate = 'X'       "标识 'X'
  IMPORTING
    e_days         = days      "返回天数:0
    e_months       = months    "返回月数:9
    e_years        = years.    "返回年数:1
 
12小时制与24小时制的时间转换,例如:07:00:00 pm -> 19:00:00。:HRVE_CONVERT_TIME
DATA: lv_in_time  TYPE tims,
      lv_out_time TYPE tims,
      lv_am_pm    TYPE c.
lv_in_time = '060000'.
CALL FUNCTION 'HRVE_CONVERT_TIME'
  EXPORTING
    type_time       = 'B'    " A = 24小时制 -> 12小时制  B = 12小时制 -> 24小时制
    input_time      = lv_in_time
    input_am_pm     = 'PM'
  IMPORTING
    output_time     = lv_out_time
    output_am_pm    = lv_am_pm
  EXCEPTIONS
    parameter_error = 1
    OTHERS          = 2.
 
WRITE:/ | Input Time - { lv_in_time }|.    " 输出:060000
WRITE:/ |Output Time - { lv_out_time }|.   " 输出:180000
 
 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!