SAP·ABAP/ABAP

ABAP 통화 환산

SEO_Joon 2025. 11. 12. 09:30

부가비용(프레잇) 같이 작은 금액의 경우 

팩터 = 환율

CURRENCY_AMOUNT_SAP_TO_IDOC
CURRENCY_AMOUNT_IDOC_TO_SAP : 
인터페이스, 폼 등 에서 형식 맞출 떄 사용 
데시멀 필드 이슈에 대한 처리
 


1. 기존 화폐(소수점2) 
큰금액 상관 X
소액 ->절삭 또는 반올림 문제 발생

 


2. 기존화폐 -> 익스터널 화폐 변환
CURRENCY_AMOUNT_SAP_TO_IDOC
큰 CHar 

 


3. 기준일 환률 * 익스터널 화폐 = 버림이 적은 화폐

 


4. 익스터널 화폐 -> sap(인터널) 화폐

 


  "1. Get Convert Rate (FM : READ_EXCHANGE_RATE)
  IF RATE IS INITIAL.
    PERFORM GET_CONVERT_RATE
      USING DATE
            BASE_CURRENCY
            SOURCE_CURRENCY
            SOURCE_AMOUNT
            TARGET_CURRENCY
            TYPE_OF_RATE
            EXACT_DATE
      CHANGING TARGET_RATE.
  ELSE.
    TARGET_RATE = RATE.
  ENDIF.

 


  "2. Get Source Amount Of External Format
  DATA: SOURCE_AMOUNT_IDOC TYPE C LENGTH 30,
        TARGET_AMOUNT_IDOC TYPE C LENGTH 30.

  CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC'
    EXPORTING
      CURRENCY    = SOURCE_CURRENCY
      SAP_AMOUNT  = SOURCE_AMOUNT
    IMPORTING
      IDOC_AMOUNT = SOURCE_AMOUNT_IDOC.

 


  "3. Calculate Amount
  TARGET_AMOUNT_IDOC = SOURCE_AMOUNT_IDOC * TARGET_RATE.

 


  "4. Get Target Amount Of Internal Format
  CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP'
    EXPORTING
      CURRENCY    = TARGET_CURRENCY
      IDOC_AMOUNT = TARGET_AMOUNT_IDOC
    IMPORTING
      SAP_AMOUNT  = TARGET_AMOUNT.