关于 英文的 金额转换
要求如下 :万元以上的 需要用缩写后尾* 如:
123765.39 -------1 hndrd 23 thsnd 7 hndrd 65 and 39/100**********************************************
万元以下 后尾*
136.38 ------One Hundred Thirty-Six and 39/100***************************************************
万元以上的 自己写算法解决;万元以下的 利用系统函数再加以转换
FUNCTION 'SPELL_AMOUNT'
这个函数 在有小数位情况下转换出来的不是预期的数 需要转换整数 转换后 再把大小写用算法搞定即可
需要注意的 地方 sring 的赋值时候 不支持 +() 这种方法
*&---------------------------------------------------------------------*
*& Report ZT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zt.
*DATA text TYPE string.
DATA outd(256).
DATA outc(256).
DATA outa(256).
DATA outb(256).
DATA out TYPE string.
DATA str TYPE TABLE OF string WITH HEADER LINE.
DATA strchar(20).
DATA outt(200) .
DATA fen(3).
DATA : BEGIN OF itab,
a(3),
b(3),
c(3),
d(3),
END OF itab..
DATA: long TYPE i,banlance TYPE i..
PARAMETERS: text(18).
*text = '123456789.99'.
SPLIT text AT '.' INTO text fen.
itab = text.
long = STRLEN( text ).
* banlance = 3 - long mod 3.
IF long > 5.
banlance = 12 - long.
WRITE / itab.
IF banlance <> 0.
SHIFT text BY banlance PLACES RIGHT.
ENDIF.
itab = text.
WRITE / itab.
*$123,456,789.56
*
*1hndrd 23 mil 4 hndrd 56 thsnd 7 hndrd 89 and 56/100
IF itab-a <> ' '.
PERFORM there USING itab-a outa.
CONCATENATE outa out INTO out SEPARATED BY ' '.
ENDIF.
IF itab-b <> ' '.
PERFORM there USING itab-b outb.
CONCATENATE out outb 'mil' INTO out SEPARATED BY ' '.
ENDIF.
IF itab-c <> ' '.
PERFORM there USING itab-c outc.
CONCATENATE out outc 'thsnd' INTO out SEPARATED BY ' '.
ENDIF.
IF itab-d <> ' '.
PERFORM there USING itab-d outd.
CONCATENATE out outd INTO out SEPARATED BY ' '.
ENDIF.
WRITE: / outa ,outb ,outc,outd.
WRITE: / out.
ELSE.
DATA outn TYPE spell.
CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
amount = text
currency = ' '
filler = ' '
language = sy-langu
IMPORTING
in_words = outn
EXCEPTIONS
not_found = 1
too_large = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
out = outn-word.
WRITE: / out.
SPLIT out AT space INTO TABLE str.
CLEAR out.
DATA pos TYPE i.
DATA char.
LOOP AT str.
strchar = str.
CALL FUNCTION 'STRING_UPPER_LOWER_CASE'
EXPORTING
delimiter = 'A'
string1 = strchar
IMPORTING
string = strchar
EXCEPTIONS
not_valid = 1
too_long = 2
too_small = 3
OTHERS = 4.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
SEARCH strchar FOR '-'.
IF sy-subrc = 0.
pos = sy-fdpos + 1.
char = strchar+pos(1).
TRANSLATE char TO UPPER CASE.
strchar+pos(1) = char.
ENDIF.
str = strchar.
CONCATENATE out str
INTO out SEPARATED BY space.
ENDLOOP.
ENDIF.
SHIFT fen BY 1 PLACES RIGHT.
CONCATENATE out ' and' fen '/100' INTO out .
outt = '*************************************************************************************'.
long = STRLEN( out ).
outt(long) = out.
WRITE: / outt.
*&---------------------------------------------------------------------*
*& Form there
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->IN text
* -->OUT text
*----------------------------------------------------------------------*
FORM there USING in out
.
DATA len TYPE i.
len = STRLEN( in ).
out = in(1).
IF out <> ' '.
out = ' '.
len = STRLEN( out ).
out+0(1) = in(1).
out+1(7) = ' hndrd '.
out+8(2) = in+1(2).
ELSE.
out = in.
ENDIF.
* if len <> 3.
* out = in .
* else .
* out = in(1).
* out+1(3) = ' bai '.
* out+4(2) = in+1(2).
*
*
* endif.
ENDFORM. "there
关于 英文的 金额转换相关推荐
- php 英文小写变大写,PHP_PHP英文字母大小写转换函数小结,每个单词的首字母转换为大写 - phpStudy...
PHP英文字母大小写转换函数小结 每个单词的首字母转换为大写:ucwords() $foo = 'hello world!'; $foo = ucwords($foo); // ...
- 数字小写到英文大写的转换
数字小写到英文大写的转换 日期:2004年8月13日 作者:gaojian 人气: <script src="../Hits.asp?ArticleID=2922" type ...
- php 英文小写变大写,PHP英文字母大小写转换函数
例1,每个单词的首字母转换为大写:ucwords() 复制代码 代码示例: $foo = 'hello world!'; $foo = ucwords($foo); // He ...
- c#金额转换成中文大写金额
c#金额转换成中文大写金额 原文:c#金额转换成中文大写金额 2018-08-24 转别人 c#金额转换成中文大写金额 /// <summary>/// 金额转换成中文大写金额/// &l ...
- 金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-(一千零一拾一元整)输出。...
程序代码如下: package cn.itcast.framework.interview;import java.text.NumberFormat; import java.util.HashMa ...
- 小写数字转大写_不得不说的Excel小技巧:设置单元格格式将小写金额转换成大写...
大家好,我是小秋,近期一段时间比较忙,没有在今日头条上更新原创文章了.希望朋友们多多见谅,下面与大家分享一个Excel实用小技巧:如何设置单元格格式将小写金额转换成大写? 1.应用场景 在报销单.收据 ...
- php 清除英文字母,PHP英文字母大小写转换函数小结
PHP英文字母大小写转换函数小结 发布于 2015-01-23 10:54:41 | 143 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Pr ...
- php数字转换百千万,PHP数字金额转换成中文大写显示
整个功能其实不难,只是还算挺实用,所以记一下哈,其他编程语言转换一下也是能可以的! 思路:把传过来的金额转换成整数和小数两部分,再对其分别进行转换处理 代码附上: function moneyToSt ...
- C语言-英文字母倒序转换
C语言-英文字母倒序转换 题目来源 代码 题目来源 厦门大学在线评测系统 2018级C语言程序设计实验课1368号试题 代码 //将字符串里的英文字母换成26个英文字母中序号相反的,第一个换成倒数第一 ...
最新文章
- 数学帅才克莱因及其启示
- C++ 的复制构造函数
- 自律到极致-人生才精致:第13期
- pip指定包的安装路径
- 开头th_是什么文件_Python文件读写最详细的讲解
- 使用Gradle构建Monorepo项目
- [转]关于HTTP服务器每个客户端2个连接的限制
- 第一个 Win32 窗口程序
- Vue 强制刷新组件
- Vegas的新功能——触摸编辑
- 实现微信小程序开发的基本步骤
- mmorpg游戏服务器技能系统设计,对MMORPG职业技能设计的一些思考和方法总结
- r5 5600g和5600x的区别 选哪个好
- BCD码和ASCII码的相互转换
- HTML系统学习(1)
- 女人要记住的亦舒75句话
- 还在为乱七八糟的桌面而忧桑吗
- 职业生涯自我规划五步
- python新闻聚合_基于Python的新闻聚合系统网络爬虫研究
- 使用Jquery、HTML、CSS、JS实现下拉菜单列表
热门文章
- 钢铁电商平台的Docker容器云平台建设实践
- Mac OS 如何让窗口显示在最前边,(用于录制屏幕提醒,以及屏幕分享,应用分享的UI窗口解决)
- 敬业签苹果ios手机便签APP里的录音怎么转文字?
- go build command-line-arguments: copying /tmp/go-build042781492/b001/exe/a.out: open main: text file
- React Native腾讯广告优量汇广点通广告SDK集成
- 11.2 NOIP模拟赛 (morning)
- vb语法-Clng()函数作用及用法
- 安全帽识别系统-智慧船舶的守夜人
- 怎样解决photoshop暂存盘已满的问题?
- 【转载】Python3.6安装报错 configure: error: no acceptable C compiler found in $PATH