개념: ABAP에서 금액 필드(CURR:Currency field)는 통화키 필드(CUKY:Currency key)가 연결되어 있어야 합니다. 각 통화에 따라 금액 필드의 소수점을 해석하는 방법이 다릅니다. 예를 들어 금액 필드의 1.00 이라는 값을 USD 통화로는 1$로 해석하고 KRW 통화로는 100원으로 해석합니다. 금액 필드의 값을 통화 없이 값 그대로 사용하게 되면 100원을 1원으로 보게 됩니다. 금액에는 반드시 통화가 있어야 합니다. USD 통화일때는 무시해도 되는 함정이 있어서 USD만 테스트하는 실수를 주의해야 합니다.
흔한 오류: USD는 잘 되는데 KRW 통화일때 1/100 으로 표시 또는 처리 되어서 곱하기 100 을 하도록 로직 작성한다. 인터페이스 받아서 SAP에 저장하는데 KRW 통화일때 100배로 처리 되어서 나누기 100을 하도록 로직 작성한다.
무엇이 문제인가: KRW인지 체크하여 곱하기 100, 나누기 100을 하면 안됩니다. 표준적인 방법으로 통화를 적용하여 계산하세요.
왜 이렇게 하나요: 각 통화별로 금액의 최소 단위가 다르기 때문입니다. USD는 소수점 아래 2 자리까지 표시를 합니다. 0.01$(=1센트) 가 최소단위 입니다. KRW는 소수점이 없습니다. 1원이 최소단위 입니다. 소수점을 입력하면 안됩니다. 이런 차이를 수용하기 위한 방법입니다.
관련 테이블: 통화 마스터 테이블 TCURC 별 내용 없음 통화별 소수점 자리수 테이블 TCURX 기본값 2인 경우 생략되어 있음.
외부 -> 내부(SAP): BAPI_CURRENCY_CONV_TO_INTERNAL CURRENCY_AMOUNT_DISPLAY_TO_SAP
내부 외부 변환이 없어도 자동으로 적용되는 경우: 스트럭쳐에서 통화필드가 연결되어 있는 금액 필드를 SAP 화면에 표시하면 자동 적용.
변환이 필요한 경우: 고정된 통화라서 통화필드가 연결되지 않은 금액필드를 화면에 표시하는 경우. 금액을 인터페이스로 다른 시스템에 주거나 받는 경우. BDC로 작성한 프로그램에서 금액 입력시 외부 값으로 바꿔야함. 금액 필드를 숫자 필드로 타입 변환할때 외부 값으로 바꿔야함. 숫자 필드로 입력 받아서 DB에는 금액필드로 저장하는 경우 내부 값으로 바꿔야함.