通過 Function Module 将外部日期轉換為内部日期
所屬 Function Group : SCON
所屬 Package : SZP
DATA:date_input TYPE c LENGTH 10 VALUE ’2009-1-16′, date_output TYPE sy-datum. CALL FUNCTION ‘CONVERT_DATE_INPUT’ EXPORTING input = date_input plausibility_check = ‘X’ IMPORTING output = date_output "output前是否檢查資料合理性 EXCEPTIONS plausibility_check_failed = 1 wrong_format_in_input = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. WRITE:’date_input:’,date_input,’date_output:’,date_output.
結果:date_input: 2009-1-16 date_output: 2009-01-16
————
注意:
1、在R3 4.71 使用時會提示:函數子產品 CONVERT_DATE_INPUT 已過時 – 無法使用
2、如果外部日期包含除目前使用者日期分割符以外的非數字字元,則報錯 WRONG_FORMAT_IN_INPUT ,相關源代碼:
*—START
DATE_CHAR-SEP = DATE_SEP.
IF INPUT CN DATE_CHAR.
MESSAGE S012 WITH DATE_SEP RAISING WRONG_FORMAT_IN_INPUT.
ENDIF.
*—END
3、無法處理長度大于10或小于5的外部日期,相關源代碼:
LENGTH = STRLEN( INPUT ).
IF LENGTH GT 10
OR LENGTH LT 5.
MESSAGE S001 WITH DATE_MASK RAISING WRONG_FORMAT_IN_INPUT.
4、如果外部日期不包含日期分隔符,且外部日期長度不等于6位或8位時,報錯 WRONG_FORMAT_IN_INPUT
IF INPUT CS DATE_SEP.
SW_SEP = ‘X’.
ELSE.
SW_SEP = SPACE.
IF LENGTH NE 6 " Jahr auffuellen
AND LENGTH NE 8.
MESSAGE S001 WITH DATE_MASK RAISING WRONG_FORMAT_IN_INPUT.
ENDIF.