본문 바로가기

Abap

[Abap-Report] 숫자 사이에 쓸데없는 ',' 등 삭제

숫자 사이에 쓸데없는 ',' '.' 등을 삭제해주는 펑션.

FUNCTION Z_CHECK_AND_CONVERT_NUMBER.
*"----------------------------------------------------------------------
*"*"Local interface:

*"       IMPORTING
*"             VALUE(P_INPUT)
*"       EXPORTING
*"             VALUE(P_OUTPUT)
*"       EXCEPTIONS
*"              NO_NUMERIC
*"----------------------------------------------------------------------
  DATA : NUMBER(30),
         NUMBER_OUT(30),
         LENGTH     TYPE I,
         LENGTH2    TYPE I,
         ONE.

  MOVE P_INPUT TO NUMBER.
  LENGTH = STRLEN( NUMBER ).

  IF NUMBER CP '*.*.*'.
     RAISE NO_NUMERIC.
  ENDIF.

  DO LENGTH TIMES.
     ONE = NUMBER(1).

     IF ONE = ','.
     ELSEIF ONE = ' '.
        LENGTH2 = STRLEN( NUMBER_OUT ).
        IF LENGTH2 > 0. EXIT. ENDIF.
     ELSEIF ONE BETWEEN '0' AND '9' OR
            ( ONE EQ '-' AND SY-INDEX EQ LENGTH ) OR
            ONE EQ '.'.
        CONCATENATE NUMBER_OUT ONE INTO NUMBER_OUT.
     ELSE.
        RAISE NO_NUMERIC.
     ENDIF.

     SHIFT NUMBER.
  ENDDO.

  MOVE NUMBER_OUT TO P_OUTPUT.
ENDFUNCTION.