這兩天接到一個(gè)新的需求难菌,其中有一個(gè)日期格式轉(zhuǎn)換的试溯,主要用到一個(gè)系統(tǒng)類cl_abap_datfm,這里簡單地寫個(gè)測試程序記錄一下郊酒!
選擇界面就是一個(gè)日期輸入框(顯示樣式由su3中設(shè)置的格式?jīng)Q定)耍共,和一個(gè)格式輸入框,直接上程序:
*&---------------------------------------------------------------------*
*& Report ZGML_DATE
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zgml_date.
DATA: gv_xudatfm TYPE xudatfm,
gv_domval TYPE domvalue_l,
gv_text TYPE val_text,
gv_exdat TYPE char25,
gv_exdatfm TYPE xudatfm,
gv_msg TYPE string,
gv_date TYPE string.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p_date TYPE sy-datum,
p_udatfm TYPE xudatfm OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
INITIALIZATION.
*get default date format.
CALL METHOD cl_abap_datfm=>get_datfm
RECEIVING
datfm = gv_xudatfm.
MOVE gv_xudatfm TO p_udatfm.
START-OF-SELECTION.
*check the date format entered
CLEAR: gv_xudatfm,gv_domval,gv_text.
CALL METHOD cl_abap_datfm=>get_datfm
RECEIVING
datfm = gv_xudatfm.
IF gv_xudatfm IS NOT INITIAL.
MOVE gv_xudatfm TO gv_domval.
CALL FUNCTION 'DOMAIN_VALUE_GET'
EXPORTING
i_domname = 'XUDATFM'
i_domvalue = gv_domval
IMPORTING
e_ddtext = gv_text
EXCEPTIONS
not_exist = 1
OTHERS = 2.
IF sy-subrc = 0.
WRITE :/ 'Default Date format',
AT 39(2) '=> ',
AT 44(10) gv_text.
ENDIF.
ENDIF.
IF p_udatfm IS NOT INITIAL.
MOVE p_udatfm TO gv_domval.
CALL FUNCTION 'DOMAIN_VALUE_GET'
EXPORTING
i_domname = 'XUDATFM'
i_domvalue = gv_domval
IMPORTING
e_ddtext = gv_text
EXCEPTIONS
not_exist = 1
OTHERS = 2.
IF sy-subrc = 0.
WRITE :/ 'Selected Date format',
AT 39(2) '=> ',
AT 44(10) gv_text.
ENDIF.
ENDIF.
WRITE :/ '----------------------------------------------------'.
CLEAR : gv_msg.
TRY.
CALL METHOD cl_abap_datfm=>conv_date_int_to_ext
EXPORTING
im_datint = p_date
im_datfmdes = p_udatfm
IMPORTING
ex_datext = gv_exdat
ex_datfmused = gv_exdatfm.
CATCH cx_abap_datfm_format_unknown .
MOVE 'Wrong Date format' TO gv_msg.
ENDTRY.
IF gv_msg IS NOT INITIAL.
WRITE :/ gv_msg.
ELSE.
MOVE p_date TO gv_date.
WRITE :/ 'Int format => ',
AT 15(10) gv_date,
AT 28(15) 'Ext Format => ',
AT 44(10) gv_exdat.
ENDIF.
p_date中顯示的就是目前系統(tǒng)默認(rèn)顯示的日期格式:選擇界面.png
日期格式的搜索幫助.png
image.png