为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

大小写金额转换

2017-09-01 8页 doc 23KB 48阅读

用户头像

is_180829

暂无简介

举报
大小写金额转换大小写金额转换 先建一个小的函数。 DIGITALIN TYPE C DIGITALOUT TYPE C FUNCTION Z_DIGITAL_LOWER_TO_UPPER. *"---------------------------------------------------------------------- *"*"Local interface: *" IMPORTING *" VALUE(DIGITALIN) TYPE C *" EXPORTING *" VALUE(DIGITALOUT) T...
大小写金额转换
大小写金额转换 先建一个小的函数。 DIGITALIN TYPE C DIGITALOUT TYPE C FUNCTION Z_DIGITAL_LOWER_TO_UPPER. *"---------------------------------------------------------------------- *"*"Local interface: *" IMPORTING *" VALUE(DIGITALIN) TYPE C *" EXPORTING *" VALUE(DIGITALOUT) TYPE C *"---------------------------------------------------------------------- IF digitalin = '0'. digitalout = '零'. ELSEIF digitalin = '1'. digitalout = '壹'. ELSEIF digitalin = '2'. digitalout = '贰'. ELSEIF digitalin = '3'. digitalout = '叁'. ELSEIF digitalin = '4'. digitalout = '肆'. ELSEIF digitalin = '5'. digitalout = '伍'. ELSEIF digitalin = '6'. digitalout = '陆'. ELSEIF digitalin = '7'. digitalout = '柒'. ELSEIF digitalin = '8'. digitalout = '捌'. ELSEIF digitalin = '9'. digitalout = '玖'. ELSE. digitalout = '×'. ENDIF. ENDFUNCTION. FUNCTION Z_MONEY_LOWER_TO_UPPER. *"---------------------------------------------------------------------- *"*"Local interface: *" IMPORTING *" VALUE(MONEYIN) TYPE P *" EXPORTING *" VALUE(MONEYOUT) TYPE C *" VALUE(MONEYSPLIT) LIKE ZMONEYSPLIT STRUCTURE ZMONEYSPLIT *"---------------------------------------------------------------------- DATA: ipos TYPE I, iwan TYPE I, imod TYPE I, pin TYPE P DECIMALS 2, strint TYPE C LENGTH 10, strdec TYPE C LENGTH 3, strintt TYPE C, strintd TYPE C, strintu TYPE C LENGTH 40, strdect TYPE C, strdecd TYPE C, strdecu TYPE C LENGTH 4. pin = MONEYIN. IF pin eq 0. ipos = 0. ELSE. ipos = FLOOR( LOG10( pin ) ) + 1. "计算数值pin的整数位数。 ENDIF. *write / ipos. *计算小数部分 pin = pin * 100. "将数值的百分位变为个位,便于处理。 strdect = pin - pin DIV 10 * 10. "获取数值的百分位,也就是分。 IF strdect NE '0'. "如果值为0,则不显示该值,直接跳过。 CALL FUNCTION 'Z_DIGITAL_LOWER_TO_UPPER' "调用数值小写转大写的函数,获得大写的数字。 EXPORTING DIGITALIN = strdect IMPORTING DIGITALOUT = strdecd. CONCATENATE strdecd '分' INTO strdecu. "生成金额的“分”。 ENDIF. pin = pin DIV 10. "将十分位变为个位。 strdect = pin - pin DIV 10 * 10. "获取数值的十分位,也就是角。 IF strdect EQ '0' AND strdecu EQ ''. "如果角为0,分也为0,则金额的小数部分就没有。 strdecu = ''. ELSEIF strdect EQ '0' AND strdecu NE ''. "如果角为0,分不为0,则角位只写“零”不 写“角”。 CONCATENATE '零' strdecu INTO strdecu. ELSE. "如果角不为0,则直接与前面生成的分进行拼接。 CALL FUNCTION 'Z_DIGITAL_LOWER_TO_UPPER' "调用数值小写转大写的函数。 EXPORTING DIGITALIN = strdect IMPORTING DIGITALOUT = strdecd. CONCATENATE strdecd '角' strdecu INTO strdecu. "生成金额的“角”和“分” ENDIF. pin = pin DIV 10. "恢复原来的整数位。 iwan = 0. "万位标记,四个数值位为一“万”,从个位开始,所以iwan的初值为0。 *计算整数部分 DO ipos TIMES. strintt = pin - pin DIV 10 * 10. imod = iwan MOD 4. IF imod EQ 0. IF iwan = 0. IF strintt NE '0'. CALL FUNCTION 'Z_DIGITAL_LOWER_TO_UPPER' EXPORTING DIGITALIN = strintt IMPORTING DIGITALOUT = strintd. strintu = strintd. ENDIF. ELSEIF iwan = 4. IF strintt NE '0'. CALL FUNCTION 'Z_DIGITAL_LOWER_TO_UPPER' EXPORTING DIGITALIN = strintt IMPORTING DIGITALOUT = strintd. ELSE. strintd = ''. ENDIF. CONCATENATE strintd '万' strintu INTO strintu. ELSEIF iwan = 8. IF strintt NE '0'. CALL FUNCTION 'Z_DIGITAL_LOWER_TO_UPPER' EXPORTING DIGITALIN = strintt IMPORTING DIGITALOUT = strintd. ELSE. strintd = ''. ENDIF. CONCATENATE strintd '亿' strintu INTO strintu. ENDIF. ENDIF. IF imod EQ 1. IF strintt NE '0'. CALL FUNCTION 'Z_DIGITAL_LOWER_TO_UPPER' EXPORTING DIGITALIN = strintt IMPORTING DIGITALOUT = strintd. CONCATENATE strintd '拾' strintu INTO strintu. ELSEIF strintd NE '零'. CONCATENATE '零' strintu INTO strintu. ENDIF. ENDIF. IF imod EQ 2. IF strintt NE '0'. CALL FUNCTION 'Z_DIGITAL_LOWER_TO_UPPER' EXPORTING DIGITALIN = strintt IMPORTING DIGITALOUT = strintd. CONCATENATE strintd '佰' strintu INTO strintu. ELSEIF strintd NE '零'. CONCATENATE '零' strintu INTO strintu. ENDIF. ENDIF. IF imod EQ 3. IF strintt NE '0'. CALL FUNCTION 'Z_DIGITAL_LOWER_TO_UPPER' EXPORTING DIGITALIN = strintt IMPORTING DIGITALOUT = strintd. CONCATENATE strintd '仟' strintu INTO strintu. ELSEIF strintd NE '零'. CONCATENATE '零' strintu INTO strintu. ENDIF. ENDIF. pin = pin DIV 10. iwan = iwan + 1. * write: / iwan, strintt, strintu, imod. ENDDO. *连接整数位和小数位。 CONCATENATE strintu '元' strdecu INTO MONEYOUT. *把“零亿”、“零万”、“零元”都替换掉。 REPLACE '零零' WITH '零' INTO MONEYOUT. REPLACE '零零' WITH '零' INTO MONEYOUT. REPLACE '零亿' WITH '亿' INTO MONEYOUT. REPLACE '零万' WITH '万' INTO MONEYOUT. REPLACE '零元' WITH '元' INTO MONEYOUT. IF ipos eq 0. MONEYOUT = '零元'. ENDIF. ENDFUNCTION.
/
本文档为【大小写金额转换】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索