金额大写转换

原文地址:金额大写转换 作者:edwin
*&---------------------------------------------------------------------*
*& Report  Z_BARRY_CONV_AMOUNT                                         *
*&                                                                     *
*&---------------------------------------------------------------------*
*&  金额大写转换                                                        *
*&---------------------------------------------------------------------*
REPORT  Z_BARRY_CONV_AMOUNT                     .
TYPES: CUR6  TYPE P DECIMALS 6 ,
       CUR2  TYPE P DECIMALS 2 .
DATA VA1 TYPE CUR2.
DATA STR(40) TYPE C .
VA1 = '232.23'.
PERFORM CONV_AMOUNT USING VA1
                    CHANGING STR.
WRITE STR.
*&--------------------------------------------------------------------*
*&      Form  conv_amount
*&--------------------------------------------------------------------*
FORM CONV_AMOUNT USING VALUE(F_SOURCE)
                 CHANGING VALUE(F_RESULT).
  DATA: SCR(30) TYPE C, RES(60) TYPE C,FEN(2) TYPE C .
  DATA: LEN TYPE I, C1 TYPE I, C2 TYPE I, C3 TYPE I, C4 TYPE I.
  DATA: D1(1) TYPE C, D2(1) TYPE C, D3 TYPE I.
  DATA: DIGIT(2) TYPE C, WEIGHT(2) TYPE C.
  DATA: RULE1(20) TYPE C VALUE '零壹贰叁肆伍陆柒捌玖'.
  DATA: RULE2(30) TYPE C VALUE '分角元拾佰仟万拾佰仟亿拾佰仟万'.
  SCR = F_SOURCE * 100.
  CONDENSE SCR NO-GAPS.
  IF SCR = '0'.
    RES = '零元'.
  ELSE.
    LEN = STRLEN( SCR ).
    C1 = 0.
    D1 = '0'.
    CLEAR RES.
    DO LEN TIMES.
      C1 = C1 + 1.
      C2 = LEN - C1.
      D2 = SCR+C2(1) .
      IF D2 = '0'.
        D3 = 0.
      ELSE.
        D3 = D2 * 2.
      ENDIF.
      DIGIT = RULE1+D3(2) .
      C3 = ( C1 - 1 ) * 2.
      WEIGHT = RULE2+C3(2) .
      IF D2 = '0'.
        IF C1 = 3.
          DIGIT = ''.
        ELSEIF C1 = 7.
          DIGIT = ''.
          IF LEN > 10 .
            C4 = LEN - 10.
            IF SCR+C4(4) = '0000'.
              WEIGHT = ''.
            ENDIF.
          ENDIF.
        ELSEIF C1 = 11.
          DIGIT = ''.
        ELSEIF D1 = '0'.
          DIGIT = ''.
          WEIGHT = ''.
        ELSE.
          WEIGHT = ''.
    

转载于:https://www.cnblogs.com/senlinmu110/p/3802229.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值