SAP中文小写金额转为大写金额
一、简介
- 在SAP中有很多时候需要将数字转换为大写来处理,但是在SAP中又没有标准的方法来实现,所以下面写了一个对应的方法来实现。
二、实现方法
-
首先创建一个写入参数和一个写出参数,如下:
-
具体代码:
FUNCTION ZFUN_CONVERT_MONEY. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *" VALUE(I_VAL) TYPE CHAR20 OPTIONAL *" EXPORTING *" VALUE(E_DXSTR) TYPE CHAR30 *"---------------------------------------------------------------------- DATA: zs(20). DATA: xs(20). DATA: str(30). 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(30). 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 . val = i_val. CLEAR e_dxstr. MOVE val TO str. SHIFT str LEFT DELETING LEADING space. SPLIT str AT '.' INTO zs xs."把金额拆分成整数和小数 "把金额字段反过来比如123变成321 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. IF lis <> 0. CONCATENATE '元' e_dxstr INTO e_dxstr. ELSE. CONCATENATE '零元' e_dxstr INTO e_dxstr. ENDIF. 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.
-
测试结果