ABAP 日期转换

FUNCTION zfundate.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(I_DATUM)
*"  EXPORTING
*"     REFERENCE(E_DATUM) TYPE  DATUM
*"----------------------------------------------------------------------


  DATA:l_dlen    TYPE i,
       l_month   TYPE i,
       l_day     TYPE i,
       l_search  TYPE i,
       l_search1 TYPE i,
       l_datum   TYPE string.

  l_datum = i_datum.

  REPLACE ALL OCCURRENCES OF '.' IN l_datum WITH '-'.
  REPLACE ALL OCCURRENCES OF '/' IN l_datum WITH '-'.

  l_dlen = strlen( l_datum ).
  SEARCH l_datum FOR '-'.
  IF sy-subrc EQ 0.
    l_search = sy-fdpos + 1.
    REPLACE '-' WITH '/' INTO l_datum.
    SEARCH l_datum FOR '-'.
    l_search1 = sy-fdpos - l_search.

    l_month = l_datum+l_search(l_search1).
    l_search = sy-fdpos + 1.

    l_search1 = l_dlen - l_search .
    l_day = l_datum+l_search(l_search1).
  ENDIF.

  DATA: lv_datfm    LIKE usr01-datfm,
        lv_year(4)  TYPE c,
        lv_month(2) TYPE c,
        lv_day(2)   TYPE c,
        lv_date     TYPE char10.

  lv_year = l_datum+(4).
  lv_month = l_month.
  lv_day = l_day.

  SELECT SINGLE datfm INTO lv_datfm
    FROM usr01
  WHERE bname = sy-uname .

  IF sy-subrc = 0.
    CASE lv_datfm.
      WHEN '1'.
        CONCATENATE lv_day
                    lv_month
                    lv_year INTO lv_date SEPARATED BY '.'.
      WHEN '2'.
        CONCATENATE lv_month
                    lv_day
                    lv_year INTO lv_date SEPARATED BY '/'.
      WHEN '3'.
        CONCATENATE lv_month
                    lv_day
                    lv_year INTO lv_date SEPARATED BY '-'.
      WHEN '4'.
        CONCATENATE lv_year
                    lv_month
                    lv_day INTO lv_date SEPARATED BY '.'.
      WHEN '5'.
        CONCATENATE lv_year
                    lv_month
                    lv_day INTO lv_date SEPARATED BY '/'.
      WHEN '6'.
        CONCATENATE lv_year
                    lv_month
                    lv_day INTO lv_date SEPARATED BY '-'.
    ENDCASE.
  ELSE.
    CONCATENATE lv_month
                lv_day
                lv_year INTO lv_date SEPARATED BY '/'.

  ENDIF.

  CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
    EXPORTING
      date_external            = lv_date "Should be same as the user's default setting
*     ACCEPT_INITIAL_DATE      =
    IMPORTING
      date_internal            = E_DATUM
    EXCEPTIONS
      date_external_is_invalid = 1
      OTHERS                   = 2.

ENDFUNCTION.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值