[SAP/ABAP] 통화 변환 BAPI_CURRENCY ... 등
2023. 2. 20. 11:08ㆍSAP_ABAP
728x90
통화 변환
SAP에서는 숫자를 소수 2자리의 숫자로 변환하여 DB에 저장한다.
예를 틀어 1,000이라는 숫자를 입력하면 10.00으로 저장하며, 다시 사용할 때는 100을 곱해 사용한다.
그러나 통화의 경우 소수자리 까지 사용하는 통화가 있다 이 경우에는 소수점을 그대로 저장한다.(USD, EUR, ...)
이떄 입출력 금액필드에서 ABAP 코딩으로 금액을 계산하여 입-출력하게 되면 자릿수가 맞지 않는 경우가 생긴다.
이를 방지하기 위해 해당 금액에 통화키를 지정하여 올바르게 입력, 출력되도록 한다.
1. BAPI_CURRENCY 함수
DATA : lv_curr LIKE tcurc-waers,
lv_before_amt LIKE bapicurr-bapicurr,
lv_after_amt LIKE bapicurr-bapicurr.
CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL'
EXPORTING
amount_internal = lv_before_amt
currency = lv_curr
IMPORTING
amount_external = lv_after_amt.
BAPI_CURRENCY_CONV_TO_EXTERNAL
DB에서 불러온 금액을 통화키대로 출력할 때 사용
"KRW 일때 10.00 -> 1,000 으로 변환
DATA : lv_curr LIKE tcurc-waers,
lv_before_amt LIKE bapicurr-bapicurr,
lv_after_amt LIKE bapicurr-bapicurr.
CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL'
EXPORTING
amount_external = lv_before_amt
currency = lv_curr
max_number_of_digits = 21 "출력할 금액필드의 자릿수"
IMPORTING
amount_internal = lv_after_amt.
BAPI_CURRENCY_CONV_TO_INTERNAL
입력된 금액을 DB로 저장할 때 사용
"KRW 일때 1,000 -> 10.00 으로 변환
2. WRITE
WRITE lv_before_amt CURRENCY lv_curr TO lv_after_amt.
lv_before_amt를 lv_curr의 형태로 lv_after_amt로 출력
3. CURRENCY_AMT
DATA : lv_curr LIKE tcurc-waers,
lv_before_amt LIKE wmto_s-amount,
lv_after_amt LIKE wmto_s-amount,.
CALL FUNCTION 'CURRENCY_AMOUNT_DISPLAY_TO_SAP'
EXPORTING
amount_display = lv_before_amt
currency = lv_curr
IMPORTING
amount_internal = lv_after_amt.
728x90
'SAP_ABAP' 카테고리의 다른 글
[SAP/ABAP] BDC프로그램 RECORD (0) | 2023.03.24 |
---|---|
[SAP/ABAP] 관계연산자 / 산술연산자 (0) | 2021.12.27 |
SAP_ABAP 매크로 macro 만들기 (0) | 2021.11.24 |
SAP_ABAP ALV GRID 요소 (0) | 2021.11.11 |
SAP_ABAP ALV 필드 카탈로그 (0) | 2021.11.10 |