ABAP 日期格式转换(非函数转换)
1.应用情况:把excel的数据导入SAP中,并且日期格式放入日期格式字段是会直接宕了程序,
这时候,就需要把文本带符号的日期,转化为SAP内部纯数字的日期格式。
2.需求:
输入:2020/6/1 或者 2020.6.1 以及 2020-6-1
结果:20200601
3.源代码
DATA: lv_date1 TYPE string VALUE '2020-6-20'.
DATA: lv_date2 TYPE string VALUE '2020/06/21'.
PERFORM date_change CHANGING lv_date1.
MESSAGE lv_date1 TYPE 'I'.
PERFORM date_change CHANGING lv_date2.
MESSAGE lv_date2 TYPE 'I'.
FORM date_change CHANGING lv_date.
DATA:lv_str TYPE c, "使用什么日期分割符号
lw_1(4) TYPE c, "年
lw_2(2) TYPE c, "月
lw_3(2) TYPE c. "日
*按照符号把数字分开,可能是'.'或者'/' '-'.
SEARCH lv_date FOR '/'.
IF sy-subrc = 0.
lv_str = '/'.
ELSE.
SEARCH lv_date FOR '.'.
IF sy-subrc = 0.
lv_str = '.'.
ELSE.
SEARCH lv_date FOR '-'.
IF sy-subrc = 0.
lv_str = '-'.
ENDIF.
ENDIF.
ENDIF.
*把年月日分开分别放在lw_1 lw_2 lw_3.
SPLIT lv_date AT lv_str INTO lw_1 lw_2 lw_3.
*月份和日子,只有一位的话加个0.
DATA(length2) = strlen( lw_2 ).
DATA(length3) = strlen( lw_3 ).
IF length2 = 1.
lw_2 = '0' && lw_2.
ENDIF.
IF length3 = 1.
lw_3 = '0' && lw_3.
ENDIF.
"日期格式转换成系统格式,纯数字。
lv_date = lw_1 && lw_2 && lw_3.
ENDFORM.
输入:lv_date1:2020-6-20
结果:
输入:lv_date2:2020/06/21
结果:
分享使我快乐,我们一同成长,码创天下!