SAP中文小写金额转为大写金额

SAP中文小写金额转为大写金额

一、简介
  1. 在SAP中有很多时候需要将数字转换为大写来处理,但是在SAP中又没有标准的方法来实现,所以下面写了一个对应的方法来实现。
二、实现方法
  1. 首先创建一个写入参数和一个写出参数,如下:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eIUOVKwI-1678545265549)(D:\学习计划笔记\问题解决办法\IMAGE\image-20220507145831602.png)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8FlpDsB5-1678545265550)(D:\学习计划笔记\问题解决办法\IMAGE\image-20220507145934530.png)]

  2. 具体代码:

    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.
    
  3. 测试结果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1vorcgCy-1678545265550)(D:\学习计划笔记\问题解决办法\IMAGE\image-20220507150056431.png)]


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部