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.
如果要在ALV显示的时候,增加
CASE LS_TABLE-DATATYPE.
WHEN 'QUAN' OR 'CURR'.
LS_ALV_CAT-EDIT_MASK = '==ZTHOU'.
WHEN OTHERS.
ENDCASE.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」