ABAP 金额转换成大写
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" REFERENCE(I_MONEY) TYPE BF_DMBTR
*" EXPORTING
*" REFERENCE(O_MONEY)
*" EXCEPTIONS
*" WRONG_MONEY
*"----------------------------------------------------------------------
DATA:
v_s00(2) VALUE '零',
v_s01(2) VALUE '壹',
v_s02(2) VALUE '贰',
v_s03(2) VALUE '叁',
v_s04(2) VALUE '肆',
v_s05(2) VALUE '伍',
v_s06(2) VALUE '陆',
v_s07(2) VALUE '柒',
v_s08(2) VALUE '捌',
v_s09(2) VALUE '玖',
v_w00(2) VALUE '',
v_w01(2) VALUE '拾',
v_w02(2) VALUE '佰',
v_w03(2) VALUE '仟',
v_w04(2) VALUE '万',
v_w05(4) VALUE '拾',
v_w06(4) VALUE '佰',
v_w07(4) VALUE '仟',
v_w08(2) VALUE '亿',
v_w09(4) VALUE '拾',
v_w10(4) VALUE '佰',
v_w11(4) VALUE '仟',
v_w12(4) VALUE '万',
v_sy(2) VALUE '元',
v_sj(2) VALUE '角',
v_sf(2) VALUE '分',
v_amount(16),"将金额转换成字符型
v_len TYPE i, "v_amount或out的长度
v_var(5),"v_s0,v_s1,...,v_w0,v_w1,...
v_num(2) TYPE n, "每一位的数值
v_s_num(2),"v_s0,v_s1,...中的值
v_weight(2) TYPE n, "权数
v_w_num(4),"v_w0,v_w1,...中的值
v_flag0 TYPE i VALUE 0, "是否输出'零',0不输出,1输出
v_n TYPE i VALUE 0,
v_index TYPE sy-index.
v_amount = i_money.
SHIFT v_amount LEFT DELETING LEADING space.
SHIFT v_amount LEFT DELETING LEADING '0'.
*-计算分-----------------------------------------
v_len = strlen( v_amount ).
v_len = v_len - 1.
v_num = v_amount+v_len(1).
IF v_num <> '0'.
CONCATENATE 'v_s' v_num INTO v_var.
WRITE (v_var) TO v_s_num.
CONCATENATE v_s_num v_sf o_money INTO o_money.
ENDIF.
*-计算角-----------------------------------------
v_len = strlen( v_amount ).
v_len = v_len - 2.
v_num = v_amount+v_len(1).
IF v_num <> '0'.
CONCATENATE 'v_s' v_num INTO v_var.
WRITE (v_var) TO v_s_num.
CONCATENATE v_s_num v_sj o_money INTO o_money.
ENDIF.
*-输出‘整’字-------------------------------------
IF o_money = ' '.
CONCATENATE '整' o_money INTO o_money.
ENDIF.
*-计算整数---------------------------------------
v_len = strlen( v_amount ).
v_len = v_len - 3.
IF v_len = 0.
EXIT.
ENDIF.
v_amount = v_amount(v_len)." 整数部分
*-输出‘元’字-------------------------------------
CONCATENATE v_sy o_money INTO o_money.
v_n = v_len - 1.
v_weight = 0.
DO v_len TIMES.
v_index = sy-index.
* 从个位开始
v_num = v_amount+v_n(1).
IF v_num <> '0'.
CONCATENATE 'v_s' v_num INTO v_var.
WRITE (v_var) TO v_s_num.
CONCATENATE 'v_w' v_weight INTO v_var.
WRITE (v_var) TO v_w_num.
CONCATENATE v_s_num v_w_num o_money INTO o_money.
v_flag0 = 1.
ELSE.
IF v_flag0 = 1.
CONCATENATE 'v_s' v_num INTO v_var.
WRITE (v_var) TO v_s_num.
CONCATENATE v_s_num o_money INTO o_money.
v_flag0 = 0.
ENDIF.
IF v_index = 5 AND v_len > 5 AND v_len < 9 .
CONCATENATE '万' o_money INTO o_money.
ELSEIF v_index = 9 AND v_len > 9.
CONCATENATE '亿' o_money INTO o_money.
ENDIF.
* CASE SY-INDEX.
* WHEN 5.CONCATENATE '万' OUT INTO OUT.
* WHEN 9.CONCATENATE '亿' OUT INTO OUT.
* ENDCASE.
ENDIF.
v_weight = v_weight + 1.
v_n = v_n - 1.
ENDDO.
*-删除个位可能出现'零'的情况-----------------
SEARCH o_money FOR '圆'.
IF sy-subrc = 0.
v_n = sy-fdpos - 2.
IF v_n >= 0.
IF o_money+v_n(2) = v_s00.
v_len = strlen( o_money ).
CONCATENATE o_money(v_n) o_money+sy-fdpos INTO o_money.
ENDIF.
ENDIF.
ENDIF.
ENDFUNCTION.
ABAP 金额转换成大写的更多相关文章
- C#小写数字金额转换成大写人民币金额的算法
C#小写数字金额转换成大写人民币金额的算法 第一种方法: using System.Text.RegularExpressions;//首先引入命名空间 private string DaXie(st ...
- SQL函数:小写金额转换成大写
/********************************************************作者:版本:1.0创建时间:20020227修改时间:功能:小写金额转换成大写参数:n ...
- 用python实现把数字人民币金额转换成大写的脚本程序
# -*- coding: utf-8 -*- def Num2MoneyFormat( change_number ): """ .转换数字为大写货币格式( forma ...
- jquery 金额转换成大写
<script language="javascript" type="text/javascript"> function Ara ...
- JavaScript将小写金额转换成大写
//num为小写金额,单位元 changeMoney(num) { if(isNaN(num))return ""; var strPrefix=""; if( ...
- irport报表,把数字金额转换成大写人民币金额
1.编写oracle函数 CREATE OR REPLACE Function MoneyToChinese(Money In Number) Return Varchar2 Is strYuan ) ...
- 【PHP】金额数字转换成大写形式
<?php /*将数字金额转成大写*/ function num_to_upper($num) { $d = array('零','壹','贰','叁','肆','伍','陆','柒','捌', ...
- JS把数字金额转换成中文大写数字的函数
//把数字金额转换成中文大写数字的函数 function num2rmb ($num){ $c1="零壹贰叁肆伍陆柒捌玖"; $c2="分角元拾佰仟万拾佰仟亿" ...
- PHP算法--将数字金额转换成大写金额
最近在看一些PHP算法题,遇到一个将数字金额转换成大写金额的小算法题,这里贴出自己的一个例子. 注:这个小算法适用于10万以内的金额. <?php //$num = 12345.67; func ...
随机推荐
- Ubuntu 18.04 root 使用ssh密钥远程登陆
前言: Ubuntu默认是禁止root用户远程登陆 本教程解决Ubuntu 18.04版本 root用户 使用ssh密钥无法远程登陆的问题 问题发生的环境: 腾讯云,重装Ubuntu服务器时选择使用s ...
- MFC在一个工程中启动其他工程的exe文件
说明:有的时候把两个工程合并,但是偷懒不想在工程中添加代码,所以想到了这个办法,仅限偷懒哈哈哈哈 方法:新建一个主程序,在主程序的界面中添加按钮,在按钮的程序代码中添加以下语句: void CMain ...
- Lucene01--倒排索引思想
Lucene01--倒排索引思想 1. 倒排索引的概念: 首先对数据按列拆分存储,然后对文档中的数据分词,对词条进行索引,并记录词条在文档中出现的位置.这样查找时只要找到了词条,就找到了对应的文档.概 ...
- exe崩溃用windbgattach后有宝贵现场,可看程序退出线程等,千万不要清屏
exe崩溃用windbgattach后有宝贵现场,可看程序退出线程等,千万不要清屏
- .netcore微服务-Mycat
1.前言 1.1 分布式数据库 随着IT行业的迅猛发展,行业应用系统的数据规模呈现爆炸式增长,对数据库的数据处理能力要求越来越高,分布式数据库正是因此应运而生. 分布式数据库特点包括: 透明性: ...
- NOIP2018&2013提高组T1暨洛谷P5019 铺设道路
题目链接:https://www.luogu.org/problemnew/show/P5019 花絮:普及蒟蒻终于A了一道提高的题目?emm,写一篇题解纪念一下吧.求过! 分析: 这道题我们可以采用 ...
- 个人永久性免费-Excel催化剂功能第43波-文本处理类函数增强
Excel的函数有400多个,真正常用的50多个,而常有的文本处理类函数也不多,不是因为文本类处理简单,而是Excel真的有点挤牙膏式的每个版本更新那么几个小函数,普通用户等得急切,但实际上这些小函数 ...
- Java用户程序
Java的用户程序分为两类:Java Application和Java Applet. 这两类程序在程序结构和执行机制上有一定的差异. Java Application是完整的程序,需要独立的Java ...
- 100天搞定机器学习|Day9-12 支持向量机
机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机器学习|D ...
- CSS3☞transform变换
transform CSStransform属性允许你旋转,缩放,倾斜或平移给定元素.这是通过修改CSS视觉格式化模型的坐标空间来实现的. DEMO /* Keyword values */ tran ...