ABAP日期格式转换

这两天接到一个新的需求,其中有一个日期格式转换的,主要用到一个系统类cl_abap_datfm,这里简单地写个测试程序记录一下!
选择界面就是一个日期输入框(显示样式由su3中设置的格式决定),和一个格式输入框,直接上程序:

*&---------------------------------------------------------------------*
*& 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中显示的就是目前系统默认显示的日期格式:
选择界面.png

我们可以看到系统中的日期格式有下图这些,基本上我们会用到前6种,这里选择转换成第2种格式:
日期格式的搜索帮助.png

现在运行程序看下结果:
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Web网站测试流程和方法(转载) 1测试流程与方法 1.1测试流程 进行正式测试之前,应先确定如何开展测试,不可盲...
    夏了夏夏夏天阅读 5,098评论 0 0
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,904评论 1 32
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,917评论 0 17
  • #负能预警# #真的,慎入# #一个假的读后感# 接连看完《人间失格》《无声告白》《被嫌弃的松子的一生》三本致郁系...
    苍穹之蓝阅读 4,114评论 9 4
  • 爱情,真的是一件很奇妙的事。不知不觉,也已经单身快4年了,我想我对爱情已经快要麻木了吧。不知道我的什么能够有幸吸引...
    b31cfff923dd阅读 1,396评论 0 1

友情链接更多精彩内容