数字千分位逗号隔开

FUNCTION Z02FI_NUMBER_SPLIT.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(I_NUM) TYPE  STRING
*"  EXPORTING
*"     REFERENCE(E_NUM) TYPE  STRING
*"----------------------------------------------------------------------

  DATA:L_STR1 TYPE STRING.
  DATA:L_STR2 TYPE STRING.


  DATAL_LEN TYPE I,
        L_COUNT TYPE I,
        L_CHAR TYPE STRING,
        L_POS TYPE I,
        L_REST TYPE I,
        L_TIME TYPE I,
        L_FLAG.
  CONSTANTSC_TAB VALUE ',',
             C_POT VALUE '.'.

  CLEAR:
        L_LEN,
        L_COUNT,
        L_CHAR,
        L_POS,
        L_REST,
        L_TIME,
        L_STR1,
        L_STR2,
        L_FLAG.

  CHECK I_NUM IS NOT INITIAL.
  IF I_NUM CS C_POT.
    SPLIT I_NUM AT C_POT INTO L_STR1 L_STR2.
    L_FLAG 'X'.
  ELSE.
    L_STR1 I_NUM.
  ENDIF.


  L_LEN STRLENL_STR1 ).
  L_COUNT L_LEN.
  L_REST L_LEN MOD 3.
  IF L_REST 0.
    L_TIME L_LEN DIV 3.
  ELSE.
    L_TIME L_LEN DIV 1.
  ENDIF.
  DO L_TIME TIMES.
    L_COUNT L_COUNT 3.
    IF L_COUNT > 0.
      CONCATENATE C_TAB L_STR1+L_COUNT(3L_CHAR INTO L_CHAR.
    ELSEIF L_COUNT <= 0.
      L_COUNT L_COUNT + 3.
      CONCATENATE L_STR1+0(L_COUNTL_CHAR INTO L_CHAR.
      EXIT.
    ENDIF.
  ENDDO.

  E_NUM L_CHAR.
  CONDENSE E_NUM NO-GAPS.
  IF L_FLAG IS NOT INITIAL.
    CONCATENATE E_NUM C_POT L_STR2 INTO E_NUM.
  ENDIF.



ENDFUNCTION.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值