FUNCTION zzfi_change_amount.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  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 金额转换成大写的更多相关文章

  1. C#小写数字金额转换成大写人民币金额的算法

    C#小写数字金额转换成大写人民币金额的算法 第一种方法: using System.Text.RegularExpressions;//首先引入命名空间 private string DaXie(st ...

  2. SQL函数:小写金额转换成大写

    /********************************************************作者:版本:1.0创建时间:20020227修改时间:功能:小写金额转换成大写参数:n ...

  3. 用python实现把数字人民币金额转换成大写的脚本程序

    # -*- coding: utf-8 -*- def Num2MoneyFormat( change_number ): """ .转换数字为大写货币格式( forma ...

  4. jquery 金额转换成大写

    <script language="javascript" type="text/javascript">         function Ara ...

  5. JavaScript将小写金额转换成大写

    //num为小写金额,单位元 changeMoney(num) { if(isNaN(num))return ""; var strPrefix=""; if( ...

  6. irport报表,把数字金额转换成大写人民币金额

    1.编写oracle函数 CREATE OR REPLACE Function MoneyToChinese(Money In Number) Return Varchar2 Is strYuan ) ...

  7. 【PHP】金额数字转换成大写形式

    <?php /*将数字金额转成大写*/ function num_to_upper($num) { $d = array('零','壹','贰','叁','肆','伍','陆','柒','捌', ...

  8. JS把数字金额转换成中文大写数字的函数

    //把数字金额转换成中文大写数字的函数 function num2rmb ($num){ $c1="零壹贰叁肆伍陆柒捌玖"; $c2="分角元拾佰仟万拾佰仟亿" ...

  9. PHP算法--将数字金额转换成大写金额

    最近在看一些PHP算法题,遇到一个将数字金额转换成大写金额的小算法题,这里贴出自己的一个例子. 注:这个小算法适用于10万以内的金额. <?php //$num = 12345.67; func ...

随机推荐

  1. 7.秋招复习简单整理之请你讲讲 Statement 和 PreparedStatement 的区别?哪个性能更好?

    Statement和PreparedStatement都是数据库用于执行SQL语句的句柄,但是PreparedStatement代表一个预编译的SQL. 以下是PreparedStatement和St ...

  2. Python C3 算法 手动计算顺序

    Python C3 算法 手动计算顺序   手动计算类继承C3算法原则: 以所求类的直接子类的数目分成相应部分 按照从左往右的顺序依次写出继承关系 继承关系第一个第一位,在所有后面关系都是第一个出现的 ...

  3. 你不得不知的几个互联网ID生成器方案

    服务化.分布式已成为当下系统开发的首选,高并发操作在数据存储时,需要一套id生成器服务,来保证分布式情况下全局唯一性,以确保系统的订单创建.交易支付等场景下数据的唯一性,否则将造成不可估量的损失. 基 ...

  4. 【小家Spring】老项目迁移问题:@ImportResource导入的xml配置里的Bean能够使用@PropertySource导入的属性值吗?

    #### 每篇一句 > 大师都是偏执的,偏执才能产生力量,妥协是没有力量的.你对全世界妥协了你就是空气.所以若没有偏见,哪来的大师呢 #### 相关阅读 [[小家Spring]详解Propert ...

  5. WMI_COM_API

    Win32_Processor // CPU 处理器 Win32_PhysicalMemory // 物理内存 Win32_Keyboard // 键盘 Win32_PointingDevice // ...

  6. 个人永久性免费-Excel催化剂功能第84波-批量提取OUTLOOK邮件附件

    批量操作的事情常常能让人感到十分畅快,区别于一次次的手工的操作,它真正实现了“人工智能”想要的效果,人指挥机器做事情,机器就可以按着人意去操作.此篇给大家再次送了批量操作一绝活,批量下载OUTLOOK ...

  7. SpringBoot学习笔记2

    九:创建父工程 注意:打包方式选择为pom 将创建SpringBoot常用的依赖和插件放在父工程的pom.xml,如下: <project xmlns="http://maven.ap ...

  8. select模块(I/O多路复用)

    0709自我总结 select模块 一.介绍 Python中的select模块专注于I/O多路复用,提供了select poll epoll三个方法(其中后两个在Linux中可用,windows仅支持 ...

  9. Simple TPU的设计和性能评估

    深度学习飞速发展过程中,人们发现原有的处理器无法满足神经网络这种特定的大量计算,大量的开始针对这一应用进行专用的硬件设计.谷歌的张量处理单元(Tensor Processing Unit,后文简称TP ...

  10. 头部姿态估计 - OpenCV/Dlib/Ceres

    基本思想 通过Dlib获得当前人脸的特征点,然后通过旋转平移标准模型的特征点进行拟合,计算标准模型求得的特征点与Dlib获得的特征点之间的差,使用Ceres不断迭代优化,最终得到最佳的旋转和平移参数. ...