0v0__DEV

[04] 화폐 단위 변경( Currency Conversion Function / Wrtie Currency) 본문

SAP BASIC

[04] 화폐 단위 변경( Currency Conversion Function / Wrtie Currency)

0v0_삐약 2024. 7. 23. 22:45
728x90

 

프로그램 개발 중 화폐 단위 변경으로 애먹었다,,,

화폐 단위 변경 관련 함수에 대해 알아보겠다!

 

[ SAP의 금액 저장, 표시 ] 

금액필드의 경우 보통 CURR 타입/ DEC2 자리

아래와 같이 테이블에는 금액과 통화키 필드가 같이 저장이 되고, 통화 키 필드가 적용된 상태로 보인다 

 

금액을 저장할 때에는 소수점 두자리로 저장을 하고, DISPLAY할 때 화폐를 적용해서 보여주는 것 

EX) KRW 10,000원은 SAP TABLE에 저장 시 10,00으로 저장되고, 보여줄 때 다시 X100 해서 10,000이 된다 

 

금액 필드에 대해 사용자가 값을 입력하고 DB에 저장하는 경우,
참조하는 통화 키 필드가 없는 경우 등 여러 경우에 

화폐단위로 컨버전하는 펑션을 사용할 수 있다! 

 

 

1. 

BAPI_CURRENCY_CONV_TO_INTERNAL - DB에 저장 ( KRW 10,000 > 10.00 ) 

max_number_of_digits 는 Maximum Field Length of Internal Domains 로, 최대 23자리

import> amount_external이 bapiccur-bapicurr로 (dec23.4) 맞춰줘야 함 

export> 따로 정해진 타입 없음 

 

 

BAPI_CURRENCY_CONV_TO_EXTERNAL - 화면에 표시 ( KRW 10.00 > 10,000 ) 

import > 정해진 타입 x export > bapicurr-bapicurr (DEC 23.4)

 


2. 

CURRENCY_AMOUNT_DISPLAY_TO_SAP - DB에 저장 ( KRW 10,000 > 10.00 ) 

import > wmto_s-amount (DEC 15.4 )

export > wmto_s-amount

 

CURRENCY_AMOUNT_SAP_TO_DISPLAY - 화면에 표시 ( KRW 10.00 > 10,000 ) 

import > wmto_s-amount (DEC 15.4 )

export >  wmto_s-amount

 


3. 텍스트로 된 금액을 통화 단위로 변환 

CURRENCY_AMOUNT_SAP_TO_IDOC 

lv_idoc는 char임

CURRENCY_AMOUNT_IDOC_TO_SAP


4. WRITE문으로 CURR 변경하기 :

바로 위 펑션(CURRENCY_AMOUNT_IDOC_TO_SAP와 유사, 화폐단위 적용 > 화폐단위 적용된 C 출력) 

 

1) 문법 

WRITE (A 금액) CURRENCY (B 변환하려는 화폐단위) to (C 변환된 금액) .

 

2-1) C가 char 형식이 아니면, 액티브 안됨 

2-2) A가 금액 필드가 아니라 char 필드일 경우 : 변환 안됨 

 

2-3) A가 소수점 2자리 초과일 때 : 변환 제대로 안됨 (소수점이 두개만 옮겨져야 하는데, 네개가 뒤로 가버림) 

 

2-4) A가 소수점 2자리일 때 : 정상 변환 가능!

 


 

+ 참고) 

TCURX( Decimal Places in Currencies ) 테이블에는 통화별 소수점 위치에 대한 정보가 담겨있음! 

파운드, 달러 등은 표준(소수점 2자리)이라서 데이터가 저장되어 있지 않음 

표준이 dec 2 이기 때문에, KRW는 금액 X 10-² 해서 보이게 됨! 

 

끄으읕!!

728x90