金额数值转中文大写

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.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值