SAP 는 글로벌하게 쓰이는 솔루션이다. 그래서 금액을 저장하는 방식이 각 나라의 통화에 따라 다르기 때문에 화면에 출력하기 위해서는 별도의 조치를 취해 줘야한다. 특히 달러와 원하는 표현하는 방식이 다르기 때문에 ( 달러는 1.00 달러, 원화는 1000원 ) 이 다르기 때문에 별도의 변환하는 로직을 넣어주어야 한다.
특히 테이블에 저장 될 때는 통화 필드는 별도의 통화단위를 가지는 필드를 엮어 주는데 테이블에 저장될 때 원화의 경우에도 달러와 같이 소숫점으로 저장을 해야 한다. 예를 들면 1000원을 테이블에 저장할 때 10.00 으로 저장이 되어야 나중에 추가로 계산을 하거나 통화필드와 연동해서 보여줄때 1000원이라고 정상적으로 표현이 가능하다.
오늘은 통화를 1000원을 10.00 으로 바꾸는 방법을 포스팅 하려고 한다 . 간단하게 하자면 /100을 해버리면 간단하지만 SAP에서는 여러가지 방식을 지원하는데 많이 사용하는 두가지 방식을 포스팅 하려고 한다.
테이블에서 조회를 하면 금액은 소수점으로 표시된 것을 원화로 표시하는 방식이다. 기존에도 많이 사용한 방식이고 현재도 많이 사용하고 있다. 간단한 Write 구문을 이용하여 원화로 출력을 할 수 있다. 처음에 이 코드를 왜 쓰나 했는데 차츰 지나고 나서 SAP가 글로벌 솔루션이 되기 위한 장치라고 생각하니 이해가 되었다.
" 60.50 을 KRW 원화로 6050원으로 출력 DATA : L_ORIGINAL(15) TYPE P DECIMALS 2, L_TARGET(15) TYPE N. L_ORIGINAL = '60.50'. WRITE L_ORIGINAL TO L_TARGET CURRENCY 'KRW'. WRITE L_TARGET.
나는 function 을 이용하는 방식을 선호하는데 이것이 스텐다드에서 제공하는 Function 이라 믿음도 가고 보기에도 좋아서 사용하는 편이다. Function 명은 BAPI_CURRENCY_CONV_TO_INTERNAL 이다. 반대로 바꾸는 함수명은 BAPI_CURRENCY_CONV_TO_EXTERNAL 이다. 적절한 위치에 잘 넣어서 사용하면 되겠다.
DATA : EXTERNAL LIKE BAPICURR-BAPICURR. EXTERNAL = L_VALUE. " 금액을 변환한다. KRW 6,000 -> 60.00 로 변환 CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' EXPORTING CURRENCY = L_WAERS " L_WAERS 는 KRW AMOUNT_EXTERNAL = EXTERNAL MAX_NUMBER_OF_DIGITS = 15 IMPORTING AMOUNT_INTERNAL = L_VALUE.
2020-10-05 추가
function currency_amount_sap_to_idoc 도 사용가능하다. ( SAP -> External )
function currency_amount_idoc_to_sap ( External -> SAP )
'SAP > ABAP' 카테고리의 다른 글
ABAP Report 프로그램 실행시 Tcode 체크 (0) | 2014.11.17 |
---|---|
ABAP Parameters 에 소숫점 및 마이너스 금액 입력 (0) | 2014.10.21 |
ABAP RANGE 변수를 PERFORM 문의 파라메터로 사용하기 (0) | 2014.09.04 |
ABAP Field Symbol 의 사용 (0) | 2014.09.03 |
ABAP Collect 의 사용 가이드 (0) | 2014.09.01 |
ABAP 문자열 대문자, 소문자로 변환하는 방법 Translate (0) | 2014.08.07 |
CR 이 Lock 걸렸을 때 푸는 방법 ( SE09 사용 ) (0) | 2014.08.06 |
Short Dump AC_SYSTEM_FLUSH 에 대처하는 우리의 자세 (0) | 2014.08.01 |
SM30 Maintenance View 실행시 상단 타이틀 깨지는 현상 (0) | 2014.07.30 |
ABAP 정규표현식을 사용한 사번체크 (0) | 2014.07.24 |