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 값으로 리턴 해 줍니다.
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 옵션을 추가해 주면 이동한 문자가 반대쪽으로 이동하게 됩니다.
결과적으로 맨 끝의 마이너스 부호가 맨 앞으로 이동해서 붙게 됩니다.
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
이 글이 도움이 되었기를 바랍니다. ^-^