首页 > 其他分享 >ABAP 金额和数量增加千分位分隔符

ABAP 金额和数量增加千分位分隔符

时间:2023-08-29 10:26:22浏览次数:49  
标签:ZCDEC ZCLEN ZCSTR2 千分 ZCSTR ABAP 分隔符 INPUT INTO

FUNCTION CONVERSION_EXIT_ZTHOU_OUTPUT.
*"----------------------------------------------------------------------
*"*"區域介面:
*"  IMPORTING
*"     VALUE(INPUT)
*"  EXPORTING
*"     VALUE(OUTPUT)
*"----------------------------------------------------------------------

  DATA : ZCLEN TYPE I,
         N TYPE I,
         ZCSTR TYPE STRING,
         ZCSTR2 TYPE STRING,
         ZCTEMP(3) TYPE C,
*         ZFLAG(1) TYPE C VALUE '.',
         ZFLAG2 TYPE C,
         ZCDEC TYPE STRING, "记录小数部分.
         ZNUM(30),
         ZNUM_H(30),
         ZTOTAL(30),
         ZTOTAL_H(30).

  CONDENSE: INPUT.
  IF '-' CA INPUT.
    ZFLAG2 = 'X'.
    INPUT = ABS( INPUT ).
  ENDIF.
*---------------------------------------------------------------------------------------------*1
  IF INPUT IS NOT INITIAL.
* 分离整数与小数,好单独处理整数。
* 压缩字符串,去除前面的空格。
    SPLIT INPUT AT '.' INTO ZCSTR ZCDEC.
    CONDENSE: ZCSTR,ZCDEC.
    ZCLEN = STRLEN( ZCSTR ).
* 在循环中从右面在每三位的前面加上一个逗号。
    WHILE ZCLEN > 3.
      N = ZCLEN - 3.
      ZCTEMP = ZCSTR+N(3).
      IF NOT ZCSTR2 IS INITIAL.
        CONCATENATE ZCTEMP ',' ZCSTR2 INTO ZCSTR2.
      ELSE.
        ZCSTR2 = ZCTEMP.
      ENDIF.
      ZCLEN = ZCLEN - 3.
    ENDWHILE.
* 将不剩下的不足三位数加到前面
    IF ZCLEN > 0.
      IF ZCSTR2 IS NOT INITIAL.
        CONCATENATE ZCSTR+0(ZCLEN) ',' ZCSTR2 INTO ZCSTR2.
      ELSE.
        CONCATENATE ZCSTR+0(ZCLEN) '' INTO ZCSTR2.
      ENDIF.

    ENDIF.

    IF ZFLAG2 = 'X'.
      CONCATENATE '-' ZCSTR2 INTO ZCSTR2.
    ENDIF.
    CLEAR ZCSTR.
* 将处理过的整数与小数连接起来。
    IF ZCDEC IS NOT INITIAL.
      CONCATENATE ZCSTR2 '.' ZCDEC INTO OUTPUT.
    ELSE.
      OUTPUT = ZCSTR2.
*      CONCATENATE ZCDEC '00' INTO ZCDEC.
*      CONCATENATE ZCSTR2 ZCDEC  INTO ZCSTR SEPARATED BY ZFLAG.
    ENDIF.
* 将值返回
*      IS_RESULT-AMOUNT = ZCSTR.
  ELSE.
*      IS_RESULT-AMOUNT = ZNUM.
    OUTPUT = INPUT.
  ENDIF.

ENDFUNCTION.
View Code

 

标签:ZCDEC,ZCLEN,ZCSTR2,千分,ZCSTR,ABAP,分隔符,INPUT,INTO
From: https://www.cnblogs.com/chaguoguo/p/17664055.html

相关文章

  • SAP ABAP 里 FILTER 关键字的用法举例
    FILTER是ABAP中的一个关键字,用于在内部表中进行数据筛选和过滤,以便于提取所需的数据集。FILTER关键字用于从内部表中筛选符合特定条件的数据行。它通过提供条件表达式,只返回满足条件的数据行,从而在不修改原始数据的情况下生成一个新的内部表。FILTER关键字在处理大量数据时非常有......
  • ABAP-负号前置
    1.创建一个CONVERSION_EXIT_ZXXX_OUTPUT的函数,ZXXX可自定义1FUNCTIONconversion_exit_z001_output.2*"----------------------------------------------------------------------3*"*"本地接口:4*"IMPORTING5*"REFERENCE(INPUT)6*"......
  • Leetcode2788——按分隔符拆分字符串
    给你一个字符串数组 words 和一个字符 separator ,请你按 separator 拆分 words 中的每个字符串。返回一个由拆分后的新字符串组成的字符串数组,不包括空字符串 。注意separator 用于决定拆分发生的位置,但它不包含在结果字符串中。拆分可能形成两个以上的字符串。结......
  • 提取最后一个分隔符前面的数据,这可难倒了大部分职场老人!
    1职场实例小伙伴们大家好,今天我们来解决一个公众号后台粉丝咨询的一个Excel问题:如何从一列数据中批量提取每个单元格中最后一个分隔符前面的数据(也可以理解为删除最后一个分隔符及后面的数据)。这个问题看似很难,其实也有简单的突破口。如下图所示:A列为一列数据,我们发现每个单元格中......
  • 什么是 SAP ABAP 的 HPGL
    ABAPHPGL:连接SAPABAP和图形打印语言HPGLABAP(AdvancedBusinessApplicationProgramming)是SAP系统中的编程语言,用于开发自定义的业务应用和功能。SAPS/4HANA是SAP的企业资源计划(ERP)套件。HPGL(Hewlett-PackardGraphicsLanguage)是一种矢量图形打印语言,最初由惠普开发,用于控......
  • 如何使用 ABAP Function Module SEO_CLASS_CREATE_COMPLETE 创建 ABAP class
    SEO_CLASS_CREATE_COMPLETE函数模块用于在SAP系统中创建一个完整的SAP类。在SAPABAP中,类是面向对象编程的基本构建块,它允许开发者将数据和行为组织到一个单一的实体中。SAP的类通常用于描述业务对象、数据结构和业务逻辑,以实现灵活性和可维护性。SEO_CLASS_CREATE_COMPLETE函数......
  • SAP ABAP 模式(Pattern)、模板的创建与调用
    1.代码模板2.模式(Pattern) 调用3.标准模式,一些内置固定格式代码的填充  ......
  • SAP ABAP SQL编辑器
    事务码:DB02/DBACOCKPIT 结果: ......
  • SAP ABAP 编辑器快捷键
    转成小写Ctrl+L转成大写Ctrl+U大小写互转Ctrl+K剪切一行Ctrl+Shift+X删除一行Ctrl+Shift+L复制一行Ctrl+Shift+T粘贴Ctrl+V查询Ctrl+F转到行Ctrl+O撤销Ctrl+Z重做......
  • 【LeetCode2118. 建立方程】 group_concat指定分隔符,指定排序顺序
    目录题目地址题目描述代码题目地址https://leetcode.cn/problems/build-the-equation/description/题目描述Example2:输入:Terms表:+-------+--------+|power|factor|+-------+--------+|4|-4||2|1||1|-1|+-------+---......