CONVERT_DATE_INPUT

【转自http://www.cnblogs.com/VerySky/articles/2226862.html】

通过  将外部日期转换为内部日期
所属 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的外部日期,相关源代码:
*—START
  LENGTH = STRLEN( INPUT ).
  IF LENGTH GT 10
  OR LENGTH LT 5.
    MESSAGE S001 WITH DATE_MASK RAISING WRONG_FORMAT_IN_INPUT.
  ENDIF.
*—END
4、如果外部日期不包含日期分隔符,且外部日期长度不等于6位或8位时,报错 WRONG_FORMAT_IN_INPUT
*—START
  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.
  ENDIF.

原文地址:https://www.cnblogs.com/rainysblog/p/4020680.html