메뉴 건너뛰기

SAP 한국 커뮤니티

금액을 한글로 변환하기

김관현 2007.03.19 15:47 조회 수 : 7261 추천:50

FUNCTION Z_CHANGE_GET_TEXT_AMOUNT .
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     REFERENCE(I_AMOUNT) LIKE  BSIS-DMBTR OPTIONAL
*"     REFERENCE(I_WAERS) LIKE  T001-WAERS OPTIONAL
*"  EXPORTING
*"     REFERENCE(E_AMT_TEXT) LIKE  BSIS-SGTXT
*"     REFERENCE(E_AMT_DIGIT) LIKE  BSIS-SGTXT
*"----------------------------------------------------------------------
* - 숫자로된 금액을 한글로 변환한다.
  DATA: L_AMOUNT(60),
        L_AMOUNT_TEXT(60),
        L_DIGIT,
        L_DIGIT_TEXT(2),
        L_UNIT          TYPE  I,
        L_UNIT_TEXT(4),
        LV_LEN          TYPE  I.


* - - - 입력받은 금액을 문자필드로 옮긴다.
  WRITE I_AMOUNT  CURRENCY I_WAERS LEFT-JUSTIFIED TO L_AMOUNT.
  MOVE  L_AMOUNT   TO  E_AMT_DIGIT.


  CHECK  I_WAERS  = 'KRW'.


  DO.
    REPLACE ','  WITH  ''  INTO  L_AMOUNT.
    IF SY-SUBRC <> 0.
       EXIT.
    ENDIF.
  ENDDO.


  CONDENSE  L_AMOUNT  NO-GAPS.


* -- 하나씩 한글로 변환 한다.


    DO.
    L_UNIT = STRLEN( L_AMOUNT ).
    L_DIGIT = L_AMOUNT(1).


    IF L_UNIT EQ 0. EXIT. ENDIF.


    CASE L_DIGIT.
      WHEN '0'.
        PERFORM ZERO_AMOUNT USING L_UNIT L_UNIT_TEXT.
        IF L_UNIT_TEXT NE ' '.
          CLEAR LV_LEN.
          LV_LEN = STRLEN( L_AMOUNT_TEXT ).
          LV_LEN = LV_LEN - 2.
          IF L_AMOUNT_TEXT+LV_LEN(2) = '억'.
          ELSE.
            CONCATENATE L_AMOUNT_TEXT L_UNIT_TEXT INTO L_AMOUNT_TEXT.
          ENDIF.
        ENDIF.
      WHEN '1'.
        PERFORM GET_UNIT_TEXT USING L_UNIT L_UNIT_TEXT.
        CONCATENATE L_AMOUNT_TEXT '일' L_UNIT_TEXT INTO L_AMOUNT_TEXT.
      WHEN '2'.
        PERFORM GET_UNIT_TEXT USING L_UNIT L_UNIT_TEXT.
        CONCATENATE L_AMOUNT_TEXT '이' L_UNIT_TEXT INTO L_AMOUNT_TEXT.
      WHEN '3'.
        PERFORM GET_UNIT_TEXT USING L_UNIT L_UNIT_TEXT.
        CONCATENATE L_AMOUNT_TEXT '삼' L_UNIT_TEXT INTO L_AMOUNT_TEXT.
      WHEN '4'.
        PERFORM GET_UNIT_TEXT USING L_UNIT L_UNIT_TEXT.
        CONCATENATE L_AMOUNT_TEXT '사' L_UNIT_TEXT INTO L_AMOUNT_TEXT.
      WHEN '5'.
        PERFORM GET_UNIT_TEXT USING L_UNIT L_UNIT_TEXT.
        CONCATENATE L_AMOUNT_TEXT '오' L_UNIT_TEXT INTO L_AMOUNT_TEXT.
      WHEN '6'.
        PERFORM GET_UNIT_TEXT USING L_UNIT L_UNIT_TEXT.
        CONCATENATE L_AMOUNT_TEXT '육' L_UNIT_TEXT INTO L_AMOUNT_TEXT.
      WHEN '7'.
        PERFORM GET_UNIT_TEXT USING L_UNIT L_UNIT_TEXT.
        CONCATENATE L_AMOUNT_TEXT '칠' L_UNIT_TEXT INTO L_AMOUNT_TEXT.
      WHEN '8'.
        PERFORM GET_UNIT_TEXT USING L_UNIT L_UNIT_TEXT.
        CONCATENATE L_AMOUNT_TEXT '팔' L_UNIT_TEXT INTO L_AMOUNT_TEXT.
      WHEN '9'.
        PERFORM GET_UNIT_TEXT USING L_UNIT L_UNIT_TEXT.
        CONCATENATE L_AMOUNT_TEXT '구' L_UNIT_TEXT INTO L_AMOUNT_TEXT.
    ENDCASE.


    SHIFT L_AMOUNT.
  ENDDO.


  CONCATENATE L_AMOUNT_TEXT '원' INTO E_AMT_TEXT.


ENDFUNCTION.


*&---------------------------------------------------------------------*
*&      Form  zero_amount
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_L_UNIT  text
*      -->P_L_UNIT_TEXT  text
*----------------------------------------------------------------------*
FORM ZERO_AMOUNT  USING P_UNIT P_UNIT_TEXT.


  DATA: L_UNIT    TYPE   I,
        L_PORTION TYPE   I.


  CLEAR: P_UNIT_TEXT.
  L_UNIT = P_UNIT MOD 4.
  L_PORTION = TRUNC( P_UNIT / 4 ).


  CASE L_UNIT.
    WHEN 1.
      CASE L_PORTION.
        WHEN 0.
        WHEN 1.
          CONCATENATE P_UNIT_TEXT '만' INTO P_UNIT_TEXT.
        WHEN 2.
          CONCATENATE P_UNIT_TEXT '억' INTO P_UNIT_TEXT.
        WHEN 3.
          CONCATENATE P_UNIT_TEXT '조' INTO P_UNIT_TEXT.
        WHEN 4.
          CONCATENATE P_UNIT_TEXT '경' INTO P_UNIT_TEXT.
      ENDCASE.
  ENDCASE.



ENDFORM.                    " zero_amount
*&---------------------------------------------------------------------*
*&      Form  get_unit_text
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_L_UNIT  text
*      -->P_L_UNIT_TEXT  text
*----------------------------------------------------------------------*
FORM GET_UNIT_TEXT  USING P_UNIT P_UNIT_TEXT.


  DATA: L_UNIT    TYPE  I,
        L_PORTION TYPE   I.


  CLEAR: P_UNIT_TEXT.
*  L_UNIT = CEIL( P_UNIT / 4 ).
*  L_PORTION = P_UNIT MOD 4.
  L_UNIT = P_UNIT MOD 4.
  L_PORTION = TRUNC( P_UNIT / 4 ).


  CASE L_UNIT.
    WHEN 1.
      CASE L_PORTION.
        WHEN 0.
        WHEN 1.
          CONCATENATE P_UNIT_TEXT '만' INTO P_UNIT_TEXT.
        WHEN 2.
          CONCATENATE P_UNIT_TEXT '억' INTO P_UNIT_TEXT.
        WHEN 3.
          CONCATENATE P_UNIT_TEXT '조' INTO P_UNIT_TEXT.
        WHEN 4.
          CONCATENATE P_UNIT_TEXT '경' INTO P_UNIT_TEXT.
      ENDCASE.
    WHEN 2.
      MOVE: '십' TO P_UNIT_TEXT.
    WHEN 3.
      MOVE: '백' TO P_UNIT_TEXT.
    WHEN 0.
      MOVE: '천' TO P_UNIT_TEXT.
  ENDCASE.



ENDFORM.                    " get_unit_text


* e-abap님에 의해서 게시물 이동되었습니다 (2007-03-19 16:18)
번호 제목 글쓴이 날짜 조회 수
427 Five Different "User Types" D.Y.Kim 2007.07.20 4779
426 설명이 비교적 자세하고 원리를 알수 있는 효과적인 ABAP코딩 문서.doc [13] file 박영신 2007.07.26 4041
425 pop up message 보내고 싶을때 허접하지만 오다리 2007.07.30 4392
424 user-exit 찾기 [12] file 솔로몬 2007.07.31 6039
423 일/주/월/분기/년..연산가능 펑션~ [7] 초짜 2007.07.31 5206
422 인용부호를 변수에 저장하려면 [2] 푸른밤 2007.07.31 3847
421 트리 만들기 [6] 푸른밤 2007.07.31 5351
420 SQL 추적 사용하기 [1] 푸른밤 2007.07.31 3581
419 SAP Logo 바꾸기.. 애니메이션 로고.. [2] 푸른밤 2007.07.31 4004
418 ALV에 아이콘 넣는 방법 [1] 푸른밤 2007.07.31 7615
417 ALV에 아이콘 넣는 방법2 푸른밤 2007.07.31 10865
416 SY 모음 [4] 푸른밤 2007.07.31 4153
415 대문자 소문자 관련 신종철 2007.07.31 4157
414 new_abap_editor [3] file Lastforone 2007.07.31 3734
413 ICON으로 DISPLAY sapjoy 2007.08.06 4027
412 workingday 기준으로 N일 후 날짜구하는 펑션입니다. [4] 홍성현 2007.08.08 5024
411 "GRAPH_HPGL" 수치데이터를 그래프로 표시해주는 펑션 [1] 홍성현 2007.08.08 3643
410 ABAP에서 .Net connector로 .Net Function호출 시 한글이 깨질 경우 홍성현 2007.08.08 4120
409 Useful SAP System Administration Transactions [2] 홍성현 2007.08.08 12752
408 유지보수 view 생성 후 Field selection 화면 나오게 하려면? [7] file 나침반친구 2007.08.08 7897