SAP ABAP에서 숫자 맨 뒤의 마이너스 부호를 앞으로 보내는 방법 2가지


SAP에서 숫자를 출력할 때 마이너스 값인 경우 마이너스 부호가 숫자 뒤에 붙게 됩니다.
일반적으로 숫자를 표현할 때 마이너스 부호가 앞에 붙는 것과 대조적입니다.

SAP 리포터 결과물을 엑셀로 내려받기 하거나 ABAP 프로그램에서 엑셀 형식으로 다운로드 했을 때 마이너스 부호가 뒤에 붙어 있으면 엑셀에서 연산을 제대로 수행할 수 없게 됩니다.
따라서 부호를 앞으로 보내는 작업을 추가로 해 주어야 합니다.

이번 글에서는 숫자의 맨 뒤에 붙어있는 마이너스 부호를 숫자 앞으로 보내는 방법, 즉 SAP ABAP에서 숫자 맨 뒤의 마이너스 부호를 앞으로 보내는 방법 2가지에 대해 알아보겠습니다.
ABAP Function을 이용하는 방법과 ABAP의 SHIFT 구문을 이용하는 2가지 방법에 대해 설명해 보겠습니다.

CLOI_PUT_SIGN_IN_FRONT 함수를 사용하여 마이너스 부호 앞으로 보내기(권장 방법)

▼ 아래 ABAP 예제에서 보는 것과 같이 CLOI_PUT_SIGN_IN_FRONT 함수를 사용하면 뒤에 있는 마이너스 부호를 쉽게 앞으로 보낼 수 있습니다.

DATA: gv_value(10) TYPE C VALUE ‘123.45-‘.
 
CALL FUNCTION ‘CLOI_PUT_SIGN_IN_FRONT’       
    CHANGING
         VALUE = gv_value.
 
WRITE gv_value.     ” -123.45

별도의 Import, Export 매개변수는 없고, 입력 받은 VALUE 값을 그대로 변환한 다음 다시 VALUE 값으로 리턴 해 줍니다.

CLOI_PUT_SIGN_IN_FRONT 함수를 사용하여 마이너스 부호 앞으로 보내기

ABAP의 SHIFT 구문을 사용하여 마이너스 부호 앞으로 보내기

▼ 아래 ABAP 예제는 문자를 이동하는 SHIFT 구문을 사용하여 마이너스 부호를 맨 앞으로 보내는 방법의 예시입니다.

DATA: v1 TYPE P DECIMALS 2 VALUE ‘123.45-‘,
      v2(15) TYPE C.
 
WRITE: v1.
WRITE v1 TO v2.
 
IF v1 < 0.   
   SHIFT v2 RIGHT CIRCULAR.   “문자열 이동
ENDIF.
 
CONDENSE v2 NO-GAPS.
WRITE:/ v2.    ” -123.45
 

CIRCULAR 옵션을 추가해 주면 이동한 문자가 반대쪽으로 이동하게 됩니다.
결과적으로 맨 끝의 마이너스 부호가 맨 앞으로 이동해서 붙게 됩니다.





이 글이 도움이 되었기를 바랍니다. ^-^


답글 남기기