zoukankan      html  css  js  c++  java
  • ABAP 数值转换大写

    转自:http://www.dasunny.com/wordpress/sapnotes/2015113091.html
    SAP标准的数值转换函数 SPELL_AMOUNT,
    仅对整数部分进行了处理,小数部分未处理。
    FUNCTION Z_RMBDX.
    DATA: BEGIN OF RMB,
    BY TYPE C,
    SY TYPE C,
    Y TYPE C,
    QW TYPE C,
    BW TYPE C,
    SW TYPE C,
    W TYPE C,
    Q TYPE C,
    B TYPE C,
    S TYPE C,
    G TYPE C,
    D TYPE C,
    J TYPE C,
    F TYPE C,
    N TYPE C,
    END OF RMB.
    DATA: BEGIN OF RMBDX,
    BY(2) TYPE C,
    BY1(4) TYPE C,
    SY(2) TYPE C,
    SY1(4) TYPE C,
    Y(2) TYPE C,
    Y1(2) TYPE C,
    QW(2) TYPE C,
    QW1(4) TYPE C,
    BW(2) TYPE C,
    BW1(4) TYPE C,
    SW(2) TYPE C,
    SW1(4) TYPE C,
    W(2) TYPE C,
    W1(4) TYPE C,
    Q(2) TYPE C,
    Q1(4) TYPE C,
    B(2) TYPE C,
    B1(4) TYPE C,
    S(2) TYPE C,
    S1(4) TYPE C,
    G(2) TYPE C,
    D(2) TYPE C,
    J(2) TYPE C,
    J1(2) TYPE C,
    F(2) TYPE C,
    F1(2) TYPE C,
    Z(2) TYPE C,
    END OF RMBDX.
    DATA: Y(1) TYPE C.
    
    RMB = RMBXX.
    
    IF NOT ( RMB-BY IS INITIAL ) AND RMB-BY NE '0'.
    PERFORM DX USING RMB-BY CHANGING RMBDX-BY.
    
    Y = 'X'.
    
    IF RMB-BY NE '0'.
    IF RMB-SY EQ '0' AND RMB-Y EQ '0'.
    RMBDX-BY1 = '佰亿'.
    ELSE.
    RMBDX-BY1 = ''.
    ENDIF.
    ENDIF.
    ENDIF.
    
    IF NOT ( RMB-SY IS INITIAL ).
    IF RMB-SY NE '0' OR RMB-Y NE '0'.
    PERFORM DX USING RMB-SY CHANGING RMBDX-SY.
    Y = 'X'.
    IF RMB-SY NE '0'.
    IF RMB-Y EQ '0'.
    RMBDX-SY1 = '拾亿'.
    ELSE.
    RMBDX-SY1 = ''.
    ENDIF.
    ENDIF.
    ENDIF.
    ENDIF.
    IF NOT ( RMB-Y IS INITIAL ).
    IF RMB-Y NE '0' OR RMB-QW NE '0'.
    PERFORM DX USING RMB-Y CHANGING RMBDX-Y.
    Y = 'X'.
    IF RMB-Y NE '0'.
    RMBDX-Y1 = '亿'.
    ENDIF.
    ENDIF.
    ENDIF.
    IF NOT ( RMB-QW IS INITIAL ).
    IF RMB-QW NE '0' OR RMB-BW NE '0'.
    PERFORM DX USING RMB-QW CHANGING RMBDX-QW.
    Y = 'X'.
    IF RMB-QW NE '0'.
    IF RMB-BW EQ '0' AND RMB-SW EQ '0' AND RMB-W EQ '0'.
    RMBDX-QW1 = '仟万'.
    ELSE.
    RMBDX-QW1 = ''.
    ENDIF.
    ENDIF.
    ENDIF.
    ENDIF.
    IF NOT ( RMB-BW IS INITIAL ).
    IF RMB-BW NE '0' OR RMB-SW NE '0'.
    PERFORM DX USING RMB-BW CHANGING RMBDX-BW.
    Y = 'X'.
    IF RMB-BW NE '0'.
    IF RMB-SW EQ '0' AND RMB-W EQ '0'.
    RMBDX-BW1 = '佰万'.
    ELSE.
    RMBDX-BW1 = ''.
    ENDIF.
    ENDIF.
    ENDIF.
    ENDIF.
    IF NOT ( RMB-SW IS INITIAL ).
    IF RMB-SW NE'0' OR RMB-W NE '0'.
    PERFORM DX USING RMB-SW CHANGING RMBDX-SW.
    Y = 'X'.
    IF RMB-SW NE '0'.
    IF RMB-W EQ '0'.
    RMBDX-SW1 = '拾万'.
    ELSE.
    RMBDX-SW1 = ''.
    ENDIF.
    ENDIF.
    ENDIF.
    ENDIF.
    IF NOT ( RMB-W IS INITIAL ).
    IF RMB-W NE '0' OR RMB-Q NE '0'.
    PERFORM DX USING RMB-W CHANGING RMBDX-W.
    Y = 'X'.
    IF RMB-W NE '0'.
    RMBDX-W1 = ''.
    ENDIF.
    ENDIF.
    ENDIF.
    IF NOT ( RMB-Q IS INITIAL ).
    IF RMB-Q NE '0' OR RMB-B NE '0'.
    PERFORM DX USING RMB-Q CHANGING RMBDX-Q.
    Y = 'X'.
    IF RMB-Q NE '0'.
    RMBDX-Q1 = ''.
    ENDIF.
    ENDIF.
    ENDIF.
    IF NOT ( RMB-B IS INITIAL ).
    IF RMB-B NE '0' OR RMB-S NE '0'.
    PERFORM DX USING RMB-B CHANGING RMBDX-B.
    Y = 'X'.
    IF RMB-B NE '0'.
    RMBDX-B1 = ''.
    ENDIF.
    ENDIF.
    ENDIF.
    IF NOT ( RMB-S IS INITIAL ).
    IF RMB-S NE'0' OR RMB-G NE '0'.
    PERFORM DX USING RMB-S CHANGING RMBDX-S.
    Y = 'X'.
    IF RMB-S NE '0'.
    RMBDX-S1 = ''.
    ENDIF.
    ENDIF.
    ENDIF.
    IF NOT ( RMB-G IS INITIAL ) AND RMB-G NE '0'.
    PERFORM DX USING RMB-G CHANGING RMBDX-G.
    Y = 'X'.
    ENDIF.
    IF Y EQ 'X'.
    RMBDX-D = ''.
    ENDIF.
    IF NOT ( RMB-J IS INITIAL ) AND RMB-J NE '0'.
    PERFORM DX USING RMB-J CHANGING RMBDX-J.
    RMBDX-J1 = ''.
    ENDIF.
    IF NOT ( RMB-F IS INITIAL ) AND RMB-F NE '0'.
    PERFORM DX USING RMB-F CHANGING RMBDX-F.
    RMBDX-F1 = ''.
    ELSE.
    RMBDX-Z = ''.
    ENDIF.
    CONDENSE RMBDX NO-GAPS.
    IF RMBXX = 0.
    CLEAR RMBDX.
    ENDIF.
    RMBDX1 = RMBDX.
    CLEAR Y.
    
    ENDFUNCTION.
    
    FORM DX USING VALUE(X) CHANGING DXX.
    CASE X.
    WHEN '0'.
    DXX = ''.
    WHEN '1'.
    DXX = ''.
    WHEN '2'.
    DXX = ''.
    WHEN '3'.
    DXX = ''.
    WHEN '4'.
    DXX = ''.
    WHEN '5'.
    DXX = ''.
    WHEN '6'.
    DXX = ''.
    WHEN '7'.
    DXX = ''.
    WHEN '8'.
    DXX = ''.
    WHEN '9'.
    DXX = ''.
    ENDCASE.
    ENDFORM.
  • 相关阅读:
    用实例来说明linux命令sort的用法
    shell 编程入门
    VMware sphere的使用
    linux进阶
    Windows系统下的TCP参数优化
    RFID Technology(上)——简介、市场应用与前景、工作原理
    RFID Technology(下)——面临的风险、安全与隐私策略
    TCP连接的状态与关闭方式,及其对Server与Client的影响
    Java Map遍历方式的选择
    博客处女贴
  • 原文地址:https://www.cnblogs.com/rainysblog/p/6632764.html
Copyright © 2011-2022 走看看