用程序实现SAP中金额数字向中文大写转换 (入选推荐日志,加10币)
两个form,一个加单位,一个换数字。直接调用第一个即可。
FORM Z_RMBDX USING RMBXX RMBDX1.
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.
ENDFORM. "Z_RMBDX
*---------------------------------------------------------------------*
* FORM DX *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> VALUE(X) *
* --> DXX *
*---------------------------------------------------------------------*
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. "DX
推荐到鲜果: 查阅更多相关主题的帖子: SAP


评论