转换
-
ABAP日期转大写星期
由于统计的需要,要使用ABAP将日期转换成大写星期,练习代码及效果如下。
-
ABAP实现人民币金额数字转大写汉字
需求:会计凭证打印以及对外的单据上,要求打印大写人民币金额。 样式参考:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071REPORT ZGDR0039.DATA: VA1 TYPE P, "价格 (条件金额或百分数 ) 无等级存在.STR TYPE C LENGTH 40. "汉字大写金额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 '分角元拾佰仟万拾佰仟亿拾佰仟万'.PARAMETERS: P_VAL1 TYPE WRBTR.VA1 = P_VAL1.SCR = VA1 * 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.ENDIF.DIGIT = RULE1+D3(1) .C3 = ( C1 - 1 ) .WEIGHT = RULE2+C3(1) .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 = ''.ENDIF.ENDIF.CONCATENATE DIGIT WEIGHT RES INTO RES .D1 = D2.ENDDO.ENDIF.LEN = STRLEN( RES ) - 1.FEN = RES+LEN(1).IF FEN <> '分' .CONCATENATE RES '整' INTO STR.ELSE.STR = RES.ENDIF.WRITE : / STR.