[abap] 有关Date的Function

本文介绍了一系列日期操作函数,包括获取日期对应的周信息、判断具体日期是周几、计算下周日期等实用功能,并提供了函数调用示例。

说明:以下是关于星期的函数,输入参数与返回结果说明。

1. GET_WEEK_INFO_BASED_ON_DATE

 输入参数                        值
 DATE                            2010-12-27
 

 输出参数                        值
 WEEK                            201052      <—-2010年第52周
 MONDAY                          2010-12-27  <—-这个周周一的日期
 SUNDAY                          2011-01-02  <—-周日的日期

2. DAY_IN_WEEK(输入日期是星期几)
 
 输入参数                        值
 DATUM                           2010-12-28

 输出参数                        值
 WOTNR                           2           <—-2010-12-28为周二
 

3. DATE_TO_DAY(输入日期是星期几)
 
 输入参数                        值
 DATUM                           2010-12-28

 输出参数                        值
 WEEKDAY                         TUESDAY           <—-2010-12-28为TUESDAY

4. NEXT_WEEK(下周是星期几)
 
 输入参数                        值
 CURRENT_WEEK                    201012

 输出参数                        值
 NEXT_WEEK                       TUESDAY           <—-2010-12-28为TUESDAY

 MONDAY                          2010-03-29

 SUNDAY                          2010-04-04

 

 

5.WEEK_GET_FIRST_DAY(得到本周的第一天)

CALL FUNCTION 'WEEK_GET_FIRST_DAY'

EXPORTING

week = l_week

IMPORTING

date = it_week-week_dt

EXCEPTIONS

week_invalid = 1

OTHERS = 2.

 

6. DATE_CHECK_PLAUSIBILITY(Check传入日期是否正确)

 

CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'

EXPORTING

date = it_excel-redat

EXCEPTIONS

plausibility_check_failed = 1

OTHERS = 2.

IF sy-subrc <> 0.

it_err-ecode = '10'.

it_err-evalue = it_excel-redat.

it_err-ereason = 'Release Date is not valid'.

APPEND it_err.

endif.

 

7. RP_CALC_DATE_IN_INTERVAL (年月日相加減)

 

 

CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'

EXPORTING

date = l_date

days = '00'

months = p_month

signum = '-'

years = '00'

IMPORTING

calc_date = l_date.

* date为输入的日期,months要加或減的月份,也可以用days or yearssignum为运算符号?..

 

ABAP中将日期转换为ISO格式(即`YYYY-MM-DD`)是一个常见的需求,尤其是在需要将日期传递给外部系统或进行标准化处理时。ABAP提供了多种方法来实现此目标,包括使用内置函数、函数模块以及CDS视图中的日期处理功能。 ### 使用 `CONVERT_DATE_TO_INTERNAL` 函数模块 该函数模块可以将外部格式的日期字符串转换为ABAP内部使用的日期格式(即`YYYYMMDD`),然后可以将其格式化为ISO格式输出。 ```abap DATA: lv_date_external TYPE string VALUE '20230101', lv_date_internal TYPE d. CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL' EXPORTING date_external = lv_date_external IMPORTING date_internal = lv_date_internal EXCEPTIONS date_external_is_invalid = 1 OTHERS = 2. IF sy-subrc = 0. WRITE: / 'Internal Date:', lv_date_internal. " 格式化为 ISO 格式输出 WRITE: / 'ISO Format:', lv_date_internal(4), '-', lv_date_internal+4(2), '-', lv_date_internal+6(2). ENDIF. ``` ### 使用 `CONVERT_DATE_INPUT` 函数模块 尽管此函数模块在某些系统版本中已过时,但在处理带有分隔符的外部日期输入时仍然有效。它可以自动识别用户设置的日期格式,并将其转换为标准格式。 ```abap DATA: lv_input_date TYPE string VALUE '2023-01-01', lv_output_date TYPE d. CALL FUNCTION 'CONVERT_DATE_INPUT' EXPORTING date_input = lv_input_date IMPORTING date_output = lv_output_date EXCEPTIONS wrong_format_in_input = 1 OTHERS = 2. IF sy-subrc = 0. WRITE: / 'ISO Format Date:', lv_output_date. ENDIF. ``` ### 使用 ABAP 内置函数格式化日期 从 ABAP 7.52 版本开始,可以使用内置的日期转换函数来直接格式化日期为 ISO 格式。 ```abap DATA(lv_date) = '20230101'. DATA(lv_iso_date) = |{ CONV d( lv_date ) }|. WRITE: / 'ISO Format Date:', lv_iso_date. ``` ### 使用 CDS 视图中的日期函数 在 CDS 视图中,可以使用 `ABAP_CONV_INTO_ISO8601` 函数将日期转换为 ISO 格式。此方法适用于需要在数据库层进行日期格式转换的场景。 ```sql define view ZV_DATE_ISO as select from sflight { sflight.fldate as InternalDate, abap_conv_into_iso8601( sflight.fldate ) as ISODate } ``` ### 使用用户设置格式化日期 如果希望根据用户的本地设置动态格式化日期,可以使用 `CL_RECA_DATE` 或 `CL_ABAP_DATE` 类来处理。 ```abap DATA(lv_date) = '20230101'. DATA(lv_iso) TYPE string. lv_iso = cl_abap_date=>get_date_in_format( iv_date = lv_date iv_format = 'YYYY-MM-DD' ). WRITE: / 'ISO Format:', lv_iso. ``` 这些方法均可以在不同场景下使用,具体选择应根据系统版本、开发需求以及是否需要考虑用户本地设置来决定。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值