SAP中文小写金额转为大写金额
SAP中文小写金额转为大写金额
一、简介
- 在SAP中有很多时候需要将数字转换为大写来处理,但是在SAP中又没有标准的方法来实现,所以下面写了一个对应的方法来实现。
二、实现方法
-
首先创建一个写入参数和一个写出参数,如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eIUOVKwI-1678545265549)(D:\学习计划笔记\问题解决办法\IMAGE\image-20220507145831602.png)]](https://img-blog.csdnimg.cn/4c116dc58bf945808b15624efdb648ce.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8FlpDsB5-1678545265550)(D:\学习计划笔记\问题解决办法\IMAGE\image-20220507145934530.png)]](https://img-blog.csdnimg.cn/6cead7ed37ef4fe889110ef26acf5faf.png)
-
具体代码:
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变成321len = 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. -
测试结果
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1vorcgCy-1678545265550)(D:\学习计划笔记\问题解决办法\IMAGE\image-20220507150056431.png)]](https://img-blog.csdnimg.cn/bab3d2f8fbc84c3a981dcd64ce42c6d3.png)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
