需求:根据SU3设置的参数将任意格式的日期重新转换成年月日8位字符串
1.在事务代码SU01或者SU3中查看设置的Date Format参数如下图:

2.此设置参数会存在于透明表USR01中如下图:

3.点开字段DATFM的搜索帮助如下图:

4.或者在事务代码SE11中查看Domain XUDATFM的值如下图:

5.比较麻烦的实现方式:

"从表USR01取得DATFM的参数值
SELECT SINGLE datfm
INTO @DATA(lv_format)
FROM usr01
WHERE bname = @sy-uname.
IF sy-subrc = 0.
"从DD07T中取得该参数值的描述
SELECT SINGLE ddtext
INTO @DATA(lv_ddtext)
FROM dd07t
WHERE domname = @lc_xudatfm
AND ddlanguage = @sy-langu
AND domvalue_l = @lv_format.
IF sy-subrc = 0.
"根据是否是Japan格式日期来取描述中的字符串
IF lv_ddtext+0(1) = lc_gflag.
DATA(lv_format_jap) = lv_ddtext+0(9).
ELSE.
DATA(lv_format_text) = lv_ddtext+0(10).
ENDIF.
"获取年月日对应的字符串的起始位置
IF lv_format_text IS NOT INITIAL.
FIND lc_year IN lv_format_text MATCH OFFSET lv_year_pos.
ELSE.
FIND lc_gyear IN lv_format_text MATCH OFFSET lv_year_pos.
ENDIF.
FIND lc_month IN lv_format_text MATCH OFFSET DATA(lv_month_pos).
FIND lc_day IN lv_format_text MATCH OFFSET DATA(lv_day_pos).
"截取年月日字符串并重新拼接至目标日期字段
READ TABLE rs_variant_content_expanded-toitems ASSIGNING FIELD-SYMBOL(<ls_datub>)
WITH KEY selname = lc_datub.
IF sy-subrc = 0.
DATA(lv_datub) = <ls_datub>-low.
<ls_datub>-low = lv_datub+lv_year_pos(4) && lv_datub+lv_month_pos(2) && lv_datub+lv_day_pos(2).
ENDIF.
READ TABLE rs_variant_content_expanded-toitems ASSIGNING FIELD-SYMBOL(<ls_datuv>)
WITH KEY selname = lc_datuv.
IF sy-subrc = 0.
DATA(lv_datuv) = <ls_datuv>-low.
<ls_datuv>-low = lv_datuv+lv_year_pos(4) && lv_datub+lv_month_pos(2) && lv_datub+lv_day_pos(2).
ENDIF.
ENDIF.
ENDIF.
6.比较简单的实现方式:

6.1 通过Class CL_ABAP_DATFM中的method CONV_DATE_INT_TO_EXT实现
6.2 CONV_DATE_EXT_TO_INT可以实现外部日期到内部日期的实现