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.
ABAP 日期转换
最新推荐文章于 2023-05-05 15:23:55 发布