abap获取日期_ABAP 日期函数

本文介绍了ABAP中处理日期的几种方法,包括获取财务期间的年月、工厂日历处理、普通日期加减以及一系列日期转换和计算函数。通过示例代码展示了如何使用这些函数进行日期操作,如获取会计期间的月初和月末日期、工厂日历的日期转换等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 财务期间处理 T_CODE: OB29

**取 公司年度变式, 和 货币

SELECT SINGLE waers periv FROM t001

INTO (v_waers,v_periv)

WHERE bukrs = 'HL01'.

**取当前日期所在的财务期间年月

CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'

EXPORTING

i_date  = sy-datum

i_periv = v_periv

IMPORTING

e_buper = p_emonth

e_gjahr = p_gjahr.

** 根据会计期间得到月初日期

CALL FUNCTION 'FIRST_DAY_IN_PERIOD_GET'

EXPORTING

i_gjahr              = p_gjahr

i_periv              = v_periv

i_poper              = p_emonth

IMPORTING

e_date               = v_fr_date

EXCEPTIONS

input_false          = 1

t009_notfound        = 2

t009b_notfound       = 3

OTHERS               = 4

.

***根据会计期间得到月末日期

CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'                 "取本月最后一天

EXPORTING

i_gjahr = p_gjahr                                     "会计年度

i_periv = v_periv   &nbs

### 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、付费专栏及课程。

余额充值