SAP/기타

SAP 화폐 출력

쌥돌이 2025. 1. 2. 00:43

 

SAP는 화폐단위에 따라 값이 다르게 출력된다.

DB에 300이라는 값이 저장되어있어도 매핑된 화폐단위에 따라 다르게 출력된다는 것이다.

 

시스템(ABAP 프로그램)에서 매핑된 화폐단위가 KRW라면 30,000으로 보이고 USD라면 300.00으로 보인다.

 

왜 그럴까?

가장 먼저 화폐금액 필드인 CURR을 볼 필요가 있다.

* CURR은 SAP에서 지정한 화폐를 다루는 컬럼 타입이다.

이 타입을 쓰면 SAP 내부적으로 로직이 트리거된다. 어떤 말인지는 아래에서 설명할 것이다. 

 

CURR타입을 보면 소수점 2자리까지 갖는다.

즉, CURR타입의 컬럼에 100이라는 값을 집어넣으면 100.00으로 다뤄지게 되는 것이다.

 

 

한편, SAP의 화폐단위테이블 TCURX를 살펴보면 KRW는 소수점을 다루지 않는다.

(USD, EUR 등 다른 화폐는 소수점 2자리를 다룬다)

 

 

화폐단위에 따라 금액필드의 타입을 바꿀 수는 없다.

화폐단위 컬럼이 KRW라고 하더라도 CURR타입이 갑자기 소수점이 0자리가 될 수 없다는 말이다.

 

따라서 금액필드의 타입에 맞춰 화폐단위 컬럼이 KRW라면

그에 맞게 출력을 조정하는 것이고 값만 그대로 DB에 꽂히는 것이다.

 

여기까지 정리하자면 결론은 다음과 같다.

- 화폐컬럼은 소수점을 2자리 다룬다.

- KRW는 소수점이 0자리다.

- 따라서 300.00을 출력할 땐 소수점을 없애버리며(30000) 출력한다.

 

 

확인해보자.

 

먼저 금액이 들어갈 컬럼의 타입을 CURR으로 지정해줘야 한다.

그리고 참조 필드로써 어떤 통화컬럼을 참고할 지 값을 참조필드를 지정해줘야 한다.

만약 CURR 타입을 지정하고 통화컬럼을 알려주지 않은 채 활성화 시킬 경우 다음과 같은 에러가 발생한다.

*통화키 필드의 타입은 CUKY다.

 

 

따라서 같은 테이블 내에 있는 화폐단위 필드를 지정해줘야 한다.

또는 단위 값(waers)을 갖는 아밥 딕셔너리의 필드를 알려줘야 한다(물론 이 경우 원하는 화폐단위대로 출력하고 싶다면 화폐단위를 하드코딩하여 지정해줘야 할 것이다).

 

비즈니스 상 세계 곳곳에서 수 십개의 금액데이터가 들어온다고 할 때 

화폐단위에 따라 300이라는 값이 300.00이 되거나 30,000이 될 수 있으므로

테이블에 화폐단위를 추가해서 트랜잭션에 따라 같이 움직이도록 할 수 있다.

 

 

데이터

 

 

결과