메뉴 건너뛰기

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)
번호 제목 글쓴이 날짜 조회 수
87 운영서버 프로그램 소스를 직접 변경하는 프로그램 [6] sapjoy 2006.12.21 8588
86 입력 필드 입력 중 이력이 지원되지 않는 문제 해결법. [1] file 장용천 2013.09.03 8598
85 Area menu 한방에 다운로드 >,.< [10] 배불뚝이용 2013.02.26 8613
84 모듈 풀 스크린에서 마이너스(-)값 표시하기 [12] ecbase 2006.12.02 8640
83 Report 개발 시 Select-option에 search help 값이 자동으로 입력이 안될때 [6] file 곰님MAX 2010.02.12 8671
82 SAP 모니터링 T-CODE [11] 아밥뽀 2014.07.08 8708
81 ABAP에서다른DB가져오기(DB-Link처리) [4] Delight 2008.06.16 8731
80 where 조건을 상황에따라 바꿔볼까? [8] 양키 2011.04.14 8740
79 유용한 t-code 모음들 [26] 아이디빵 2008.04.24 8800
78 효과적인 ABAP/4 프로그램 작성기법 [24] 열공아밥 2009.12.20 8881
77 SAP GUI 730 ALV Grid 느림 현상(해결방법) [3] Dave 2013.09.27 8885
76 ALV 내용 변경 방법. [8] 초보보초보 2007.02.07 8934
75 SELECT-OPTIONS 문법 [5] sapjoy 2006.12.28 8985
74 엑셀에서 '-' 부호 앞으로 옮기기 [18] file MasFI 2013.02.08 9006
73 TYPE-1 프로그램에서 실행버튼 없애기 [1] 아밥뽀 2013.09.23 9117
72 SAP 단순하지만, 모르면 정말 불편 한 기능들 [22] SARA 2007.03.27 9233
71 BAPI_MATERIAL_SAVEDATA 자재마스터 생성시에 사용하세요. [1] 노름마치 2007.12.10 9265
70 표준편차구하는 로직 윤사모 2011.03.23 9370
69 테이블컨트롤에서 F4 값 변경시 다른 필드 값도 변경하기 F4IF_INT_TABLE_VALUE_REQUEST [1] 한해동안 2008.07.24 9424
68 <img src=d.gif>Source Activation 시 [READ_REPORT_LINE_TOO_LONG] dump 발생하면?[추천:e-abap] [5] JYG 2011.02.11 9425