ABAP日期时间函数(转载)

本文介绍了一系列日期操作函数,如日期计算、比较、转换等,并提供了具体用法和输出示例,适用于不同场景下的日期处理需求。

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字段的和。
输出结果:
date:2016.03.31
flag:X
days:24

RP_CALC_DATE_IN_INTERVAL 函数

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

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 函数

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

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 函数

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

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 函数

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

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月的日期

DATA date TYPE sy-datum.
CALL FUNCTION 'CCM_GO_BACK_MONTHS'
  EXPORTING
    currdate   = '20140101' "输入日期
    backmonths = 3          "过去月数
  IMPORTING
    newdate    = date.      "返回日期:20131001

MONTH_PLUS_DETERMINE 函数

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

DATA date TYPE sy-datum.
CALL FUNCTION 'MONTH_PLUS_DETERMINE'
  EXPORTING
    months   = 3
    olddate  = '20140101' "输入日期
  IMPORTING
    newdate  = date.      "返回日期:20140401

DATE_GET_WEEK 函数

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

DATA week TYPE scal-week.
CALL FUNCTION 'DATE_GET_WEEK'
  EXPORTING
    date         = '20140101'   "输入日期
  IMPORTING
    week         = week         "返回周数:201401
  EXCEPTIONS
    date_invalid = 1
    OTHERS       = 2.

### ABAP 中常用的日期处理函数 #### 获取最后工作日 为了获得特定工厂日历下的最后一个工作日,`LAST_FACTORYDATE_GET` 函数模块被调用。此功能返回给定工厂日历中的最近的工作日[^1]。 ```abap DATA: lv_last_workday TYPE d. CALL FUNCTION 'LAST_FACTORYDATE_GET' EXPORTING factory_calendar_type = 'GREGORIAN' " 或其他类型的工厂日历 IMPORTING last_factory_date = lv_last_workday. ``` #### 构建日期范围条件 当构建一个日期区间的选择条件时,可以通过设置 `so_date-sign`, `so_date-option` 和附到内表来实现。这通常用于筛选数据记录的时间跨度[^2]。 ```abap TYPES: BEGIN OF ty_date_range, sign TYPE c LENGTH 1, option TYPE c LENGTH 2, low TYPE d, high TYPE d, END OF ty_date_range. DATA: lt_date_range TYPE TABLE OF ty_date_range, ls_date_range LIKE LINE OF lt_date_range. ls_date_range-sign = 'I'. ls_date_range-option = 'BT'. ls_date_range-low = '20230101'. ls_date_range-high = '20231231'. APPEND ls_date_range TO lt_date_range. ``` #### 执行日期运算 对于执行基于一定间隔的日期计算(比如增或减少天数、月份数或是年数),可以利用 `RP_CALC_DATE_IN_INTERVAL` 函数模块完成这样的操作。该函数允许指定正负号来进行增减,并最终导出经过调整后的日期值[^3]。 ```abap DATA: lv_new_date TYPE sy-datum. CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' EXPORTING date = sy-datum days = 7 months = 0 signum = '+' years = 0 IMPORTING calc_date = lv_new_date. ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值