본문 바로가기
ERP-SAP/ABAP

<ABAP> Write ~ Currency ~, Interface 시에 통화키, 원화 문제

by 행복한워니의 기록 2012. 8. 9.
728x90
반응형

사실 sap 안에서 display 할때는 Write 문으로 충분히 해결이 가능하다.

 

Write 금액필드 currency 통화필드(예 : KRW) to 캐릭터필드(넣어줄 필드) DECIMALS 0 . "소수점 없애려고.. DECIMALS 0을 붙인다.  

 

이렇게 하면 sap 에서 저장된 금액필드 금액이 1.25 라면. 통화필드안에 값을 만나 (KRW라 가정)

 

*100이 붙어져서 캐릭터 필드안에 들어간다.

 

이렇게 하면 간단하게 가능하나...  (원래 내가 열심히 알던 방법)

 

문제는 INTERFACE 시에 저렇게 캐릭터 필드안에 넣고 다시 숫자필드로 넣어줘야 하는 번거로움이 있다.

 

위와 같은 방법 외에 또 다른 방법이 있으니....

 

 

BAPI를 이용하는 것이다. 뭐 사용법도 펑션이니까.. 어렵진 않고..

 

이 방법을 조언해준 창진과장님에게 이 영광을 돌리며...

 

      PERFORM amt_conv_to_external USING    gt_zcoht642-TWAER
                                 CHANGING gt_zcoht642-NETPR.

 

이런 부분을 만들었다. TWAER은 당연히 KRW 가 들어가 있었다. NETPR은 금액필드였다. (100.00)

아래 펑션을 지나면...

  *&---------------------------------------------------------------------*
*&      Form  AMT_CONV_TO_EXTERNAL
*&---------------------------------------------------------------------*
FORM amt_conv_to_external USING    p_waers
                          CHANGING p_amount.

  DATA:
    l_internal TYPE bapicurr-bapicurr,
    l_external TYPE bapicurr-bapicurr.

  l_internal p_amount.  "금액이 들어간다.

  CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL'
    EXPORTING
      currency        p_waers   "통화가 들어간다. KRW 겠지
      amount_internal l_internal "100.00이 들어간다.
    IMPORTING
      amount_external l_internal. "10000이 나온다.

p_amount l_internal. 다시 원래 INTERFACE 할 필드에 넣은것이다.
*  p_external = l_external.

ENDFORM.                    " AMT_CONV_TO_EXTERNAL

 

 

 

이 펑션을 사용하면 상당히 간편하게 변환이 가능하고.

 

또한.. BAPI_CURRENCY_CONV_* 하고 F4로 검색해보면 관련 펑션들이 몇개 있다.

 

잘 사용하면 아주 편리할 것이라 생각한다...^^

 

 

 

여담으로 ALV 에서 왜 KRW로 안보이냐고.... 하는 분들이 계신데..

ALV는 필드 카탈로그에 통화키를 줄 수가 있다.

그러면 그 필드는 자동으로 그 통화키에 맞게 나온다.

 

 

꼭 *100 으로 해서 보일 필요가 없다는 것이다..

종종 코딩에서 보면 *100으로 강제로 한화로 맞추는 분들이 계시는 것 같은데..

이 블로그를 참조하여 *100 하는 일이 없었으면 좋겠다..

곱하기 백!! 하는 분들은.. 다른 개발자들이 속으로 욕한다고 한다.....

 

왕초보라고... -_-...

왕초보 티는 내지 말아야 하니..

자 우리모두 화이팅 합시다!! ^^ 이 글은 공개해놔야징^0^.

 

 

 

728x90
반응형