SAP 金额转换成大写
系统中自带的函数SPELL_AMOUNT适用于没有小数的情况,如果金额带小数,结果就会出现问题,结果如下
这里有一个优化过的自定义小写转大写函数,源代码如下:
FUNCTION zfun_convert_money.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(I_VAL) TYPE STRING OPTIONAL
*" EXPORTING
*" VALUE(E_DXSTR) TYPE STRING
*"----------------------------------------------------------------------
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.
运行结果如下:
经过理解发现这个函数有一个小小的BUG,如下:
稍作修改,加上上述代码中加粗标记的一段代码,结果如下:
SAP 金额转换成大写相关推荐
- 小写数字转大写_不得不说的Excel小技巧:设置单元格格式将小写金额转换成大写...
大家好,我是小秋,近期一段时间比较忙,没有在今日头条上更新原创文章了.希望朋友们多多见谅,下面与大家分享一个Excel实用小技巧:如何设置单元格格式将小写金额转换成大写? 1.应用场景 在报销单.收据 ...
- python数字大小写转换代码_用python实现把数字人民币金额转换成大写的脚本程序...
# -*- coding: utf-8 -*- def Num2MoneyFormat( change_number ): """ .转换数字为大写货币格式( forma ...
- 【简单易懂】Java字符串应用场景:数字金额转换成大写汉字金额【金额转换】
Java字符串应用场景:数字金额转换成汉字金额 文章目录 Java字符串应用场景:数字金额转换成汉字金额 前言 一.String简单介绍 二.字符串在开发中的应用场景 三.金额转换 3.1解题思路 3 ...
- 人民币金额转换成大写格式(java)
实现本实例关键在于以下几点: 将数字格式化,如果存在小数部分,将其转换为3位小数(DecimalFormat方法): 分别将整数部分与小数部分转换为大写方式,并插入金额单位: 组合转换后整数部分与小数 ...
- .NET把小写数字金额转换成大写人民币金额的两种算法
第一种方法: 用正则表达式,C#方法如下 usingSystem.Text.RegularExpressions;//首先引入命名空间 private string DaXie ( string m ...
- 金额转换成大写和简称的方法
/*** 获取金额的中文大写或简称的方法* @author xxx* @param money 传入的金额字符串* @param simple 为true代表金额简称,false为繁体字大写,默认为f ...
- js 将金额转换成大写汉字
function convertCurrency(money) { //汉字的数字 var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', ...
- (转)WORD中小写金额转换成大写
转自:http://www.officefans.net/cdb/viewthread.php?tid=52631 '* +++++++++++++++++++++++++++++ '* Create ...
- Word中数值小写转大写,金额小写批量转换成大写形式,也支持WPS
Word中的小写金额转换成大写形式,或者将大写形式转换成小写形式,使用<Word精灵4.4>都可以完成,一键实现需求. 插件下载地址 1.https://wws.lanzous.com/i ...
- 阿拉伯数字小写金额转换成中文大写金C额程序说明
阿拉伯数字小写金额转换成中文大写金额C程序说明 1.问题的提出 寒假帮同学交缴话费时,不经意间看到收据上同时有小写金额和大写金额,想想各种各样的票据诸如缴费收据.银行业务回单.商场销售凭证.专用发票等 ...
最新文章
- 使用隐式Intent打开系统浏览器的百度网页
- linux中tr命令的用法
- Tomcat源码解析六:Tomcat类加载器机制
- 【OJ】华东师范大学Python程序设计OJ题解
- linux下iconv编码转换的用法
- 部署FIM 2010 R2—1先决条件准备
- 细数嵌入式开发与通用系统开发的不同
- eZ Publish 的文章
- CSS3属性calc函数(CSS3)
- word怎么删除不要的页,即刻删除空白页
- 【异常】The field file exceeds its maximum permitted size of 1048576 bytes.
- java裁剪缩放图片代码下载
- 红蜘蛛5屏幕测试软件,红蜘蛛5校色仪怎么用?显示器校色及测试色域和色彩精准度详细教程(2)...
- idea的几个好用快捷键、常用配置(包括git)、jdk和javaSE和javaEE、创建一个SE工程、debug、创建一个Web工程、打war包
- 多目标优化系列(四)RM-MEDA
- 【英语学习】关于音标的汇总图分享
- html制作简单框架网页 实现自己的音乐驿站 操作步骤及源文件下载 (播放功能限mp3文件)
- 封建制度与奴隶制度的区别
- 拾忆Elasticsearch04:Elasticsearch实操
- php中使用soap的建立共享接口
热门文章
- Ubuntu修改DNS
- 移动设备管理的具体措施有哪些?(下)
- 彻底卸载vscode Linux,Ubuntu vscode 安装与卸载
- PHP将PPT文件转成图片
- IT给生活带来了什么?
- 计算机网卡的安装过程,千兆网卡怎么装_千兆网卡安装步骤
- 台达plc接线图实物_台达PLC dvp-14es 外部电路怎么接线
- 【Vegas原创】IPAD忘记密码重置恢复出厂设置
- PyTorch常用5个抽样函数
- 蓝墨云班课在计算机应用基础的教学,蓝墨云班课在“计算机应用基础”课程教学中的应用效果分析...