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

复制代码
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),
         INPUT2 TYPE STRING,
         ZTOTAL_H(30).
  INPUT2 = INPUT.
  CONDENSE: INPUT2.
  IF '-' CA INPUT2.
    ZFLAG2 = 'X'.
    INPUT2 = ABS( INPUT2 ).
  ENDIF.
*---------------------------------------------------------------------------------------------*1
  IF INPUT2 IS NOT INITIAL.
* 分离整数与小数,好单独处理整数。
* 压缩字符串,去除前面的空格。
    SPLIT INPUT2 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 = INPUT2.
  ENDIF.

ENDFUNCTION.
View Code
复制代码

如果要在ALV显示的时候,增加

  CASE LS_TABLE-DATATYPE.
      WHEN 'QUAN' OR 'CURR'.
        LS_ALV_CAT-EDIT_MASK = '==ZTHOU'.
      WHEN OTHERS.
    ENDCASE.

posted @   蛀牙首领  阅读(298)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示