转载-ABAP金额转大写

原文地址已不知,如有侵权请联系qq 2212332116

FUNCTION ZFUN_CONVERT_MONEY.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_VAL) TYPE  STRING
*"  EXPORTING
*"     VALUE(E_DXSTR) TYPE  STRING
*"----------------------------------------------------------------------


  DATA: ZS(15).
  DATA: XS(15).
  DATA: STR(15).
  DATA: LEN TYPE I VALUE 0.
  DATA: CIS TYPE I VALUE 0.
  DATA: LIS 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零'.
*data DXSTR type STRING value ''.
  DATA VAL TYPE P DECIMALS 2 VALUE '907604001.00'.
  VAL = I_VAL.

  CLEAR E_DXSTR.
  MOVE VAL TO STR.
  SHIFT STR LEFT  DELETING LEADING SPACE.
  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.
    IF SS <> 0.
      TRANSLATE SS USING CHANGE.
      CASE CIS.
        WHEN 0.
          CONCATENATE SS '元'        INTO E_DXSTR.
        WHEN 1.
          CONCATENATE SS '拾'  E_DXSTR INTO E_DXSTR.
        WHEN 2.
          CONCATENATE SS '佰'  E_DXSTR INTO E_DXSTR.
        WHEN 3.
          CONCATENATE SS '仟'  E_DXSTR INTO E_DXSTR.
        WHEN 4.
          CONCATENATE SS '万'  E_DXSTR INTO E_DXSTR.
        WHEN 5.
          CONCATENATE SS '拾'  E_DXSTR INTO E_DXSTR.
        WHEN 6.
          CONCATENATE SS '佰'  E_DXSTR INTO E_DXSTR.
        WHEN 7.
          CONCATENATE SS '仟'  E_DXSTR INTO E_DXSTR.
        WHEN 8.
          CONCATENATE SS '亿'  E_DXSTR INTO E_DXSTR.
        WHEN 9.
          CONCATENATE SS '拾'  E_DXSTR INTO E_DXSTR.
        WHEN 10.
          CONCATENATE SS '百'  E_DXSTR INTO E_DXSTR.
        WHEN 11.
          CONCATENATE SS '仟'  E_DXSTR INTO E_DXSTR.
      ENDCASE.
    ELSEIF SS = 0 AND STRR+LIS(1) = 0.
      CASE CIS.
        WHEN 0.
          CONCATENATE '元'  E_DXSTR INTO E_DXSTR.
        WHEN 4.
          CONCATENATE '万'  E_DXSTR INTO E_DXSTR.
        WHEN 8.
          CONCATENATE '亿'  E_DXSTR INTO E_DXSTR.
      ENDCASE.
    ELSEIF SS = 0 AND STRR+LIS(1) <> 0.
      TRANSLATE SS USING CHANGE.
      CASE CIS.
        WHEN 0.
          CONCATENATE '元'  SS E_DXSTR INTO E_DXSTR.
        WHEN 4.
          CONCATENATE '万'  SS E_DXSTR INTO E_DXSTR.
        WHEN 8.
          CONCATENATE '亿'  SS E_DXSTR INTO E_DXSTR.
        WHEN OTHERS.
          CONCATENATE SS E_DXSTR INTO E_DXSTR.
      ENDCASE.
    ENDIF.
    LIS = CIS.
    CIS = CIS + 1.
  ENDDO.
  CLEAR SS.
  IF XS <> '00'.
    MOVE XS+0(1) TO SS. TRANSLATE SS USING CHANGE.
    CONCATENATE E_DXSTR SS '角'  INTO E_DXSTR.
    MOVE XS+1(1) TO SS. TRANSLATE SS USING CHANGE.
    CONCATENATE E_DXSTR SS '分'  INTO E_DXSTR.
  ELSE.
    CONCATENATE E_DXSTR '整' INTO E_DXSTR.
  ENDIF.

  IF E_DXSTR = '元整'.
    E_DXSTR = '零元整'.
  ENDIF.
endfunction.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值