FUNCTION ZS4_CONVERSION_AMOUNT.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" REFERENCE(INPUT) TYPE FINS_VHCUR12
*" EXPORTING
*" REFERENCE(OUTPUT) TYPE STRING
*"----------------------------------------------------------------------
PERFORM frm_chinesemoney USING input CHANGING output.
IF input < 0 .
CONCATENATE '' output INTO output.
" CONCATENATE '负' OUTPUT INTO OUTPUT.
ELSEIF input = 0.
output = '零元整'.
ENDIF.
ENDFUNCTION.
*&---------------------------------------------------------------------*
*& Form FRM_CHINESEMONEY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> INPUT
*& <-- OUTPUT
*&---------------------------------------------------------------------*
FORM frm_chinesemoney USING val
CHANGING dxstr.
DATA: zs(15).
DATA: xs(15).
DATA: str(30).
DATA: ca(30).
DATA: cb(30).
DATA: len TYPE i VALUE 0.
DATA: cis TYPE i VALUE 0.
DATA: ss(2).
DATA: rr(1).
DATA: strr(15).
DATA: change(30) TYPE c VALUE '1壹2贰3叁4肆5伍6陆7柒8捌9玖0零'.
CLEAR dxstr.
MOVE val TO str.
SHIFT str LEFT DELETING LEADING space.
SHIFT str LEFT DELETING LEADING '0'.
SPLIT str AT '.' INTO zs xs.
len = strlen( zs ).
CLEAR strr.
cis = len - 1.
DO len TIMES.
MOVE zs+cis(1) TO rr.
CONCATENATE strr rr INTO strr.
cis = cis - 1.
ENDDO.
cis = 0.
DO len TIMES.
MOVE strr+cis(1) TO ss.
TRANSLATE ss USING change.
CASE cis.
WHEN 0.
IF ss = '零'.
CONCATENATE '元' dxstr INTO dxstr.
ELSE.
CONCATENATE ss '元' dxstr INTO dxstr.
ENDIF.
WHEN 1.
IF ss = '零'.
CONCATENATE ss dxstr INTO dxstr.
ELSE.
CONCATENATE ss '拾' dxstr INTO dxstr.
ENDIF.
WHEN 2.
IF ss = '零'.
CONCATENATE ss dxstr INTO dxstr.
ELSE.
CONCATENATE ss '佰' dxstr INTO dxstr.
ENDIF.
WHEN 3.
IF ss = '零'.
CONCATENATE ss dxstr INTO dxstr.
ELSE.
CONCATENATE ss '仟' dxstr INTO dxstr.
ENDIF.
WHEN 4.
IF ss = '零'.
CONCATENATE '万' dxstr INTO dxstr.
ELSE.
CONCATENATE ss '万' dxstr INTO dxstr.
ENDIF.
WHEN 5.
IF ss = '零'.
CONCATENATE ss dxstr INTO dxstr.
ELSE.
CONCATENATE ss '拾' dxstr INTO dxstr.
ENDIF.
WHEN 6.
IF ss = '零'.
CONCATENATE ss dxstr INTO dxstr.
ELSE.
CONCATENATE ss '佰' dxstr INTO dxstr.
ENDIF.
WHEN 7.
IF ss = '零'.
CONCATENATE ss dxstr INTO dxstr.
ELSE.
CONCATENATE ss '仟' dxstr INTO dxstr.
ENDIF.
WHEN 8.
IF ss = '零'.
CONCATENATE '亿' dxstr INTO dxstr.
ELSE.
CONCATENATE ss '亿' dxstr INTO dxstr.
ENDIF.
WHEN 9.
IF ss = '零'.
CONCATENATE ss dxstr INTO dxstr.
ELSE.
CONCATENATE ss '拾' dxstr INTO dxstr.
ENDIF.
WHEN 10.
IF ss = '零'.
CONCATENATE ss dxstr INTO dxstr.
ELSE.
CONCATENATE ss '百' dxstr INTO dxstr.
ENDIF.
WHEN 11.
IF ss = '零'.
CONCATENATE ss dxstr INTO dxstr.
ELSE.
CONCATENATE ss '仟' dxstr INTO dxstr.
ENDIF.
ENDCASE.
cis = cis + 1.
ENDDO.
CLEAR ss.
IF xs <> '00'.
MOVE xs+0(1) TO ss.
TRANSLATE ss USING change.
IF ss <> '零'.
CONCATENATE dxstr ss '角' INTO dxstr.
ENDIF.
MOVE xs+1(1) TO ss.
TRANSLATE ss USING change.
IF ss <> '零'.
CONCATENATE dxstr ss '分' INTO dxstr.
ENDIF.
ELSE.
CONCATENATE dxstr '整' INTO dxstr.
ENDIF.
REPLACE '零零零' WITH '零' INTO dxstr.
REPLACE '零零零' WITH '零' INTO dxstr.
REPLACE '零零零' WITH '零' INTO dxstr.
REPLACE '零零' WITH '零' INTO dxstr.
REPLACE '零零' WITH '零' INTO dxstr.
REPLACE '零零' WITH '零' INTO dxstr.
REPLACE '零万' WITH '万' INTO dxstr.
REPLACE '零元' WITH '元' INTO dxstr.
REPLACE '零亿' WITH '亿' INTO dxstr.
REPLACE '亿万' WITH '亿' INTO dxstr.
REPLACE '元角分' WITH '元整' INTO dxstr.
CONDENSE dxstr NO-GAPS.
IF dxstr = '整'.
dxstr = ''.
ENDIF.
IF dxstr = '角分'.
dxstr = ''.
ENDIF.
FIND '角' IN dxstr.
IF sy-subrc = 0.
SPLIT dxstr AT '角' INTO ca cb.
CONDENSE ca NO-GAPS.
CONDENSE cb NO-GAPS.
IF cb = '' AND ca <> ''.
CONCATENATE ca '角整' INTO dxstr.
ENDIF.
ENDIF.
ENDFORM.