ABAP 金额大写使用SPELL_AMOUNT 无法转换小数位的解决方法

ABAP 金额大写使用SPELL_AMOUNT 无法转换小数位的解决方法

当使用SPELL_AMOUNT函数转换金额大写时会发现小数位会被忽略

 

这里我们需要参考SPELL_AMOUNT自行创建一个转换函数,其代码如下

 

FUNCTION YNF_SPELL_AMOUNT.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_AMOUNT) TYPE  NETWR
*"  EXPORTING
*"     VALUE(E_AMOUNT) TYPE  CHAR70
*"----------------------------------------------------------------------

  DATA:SPELL_01 TYPE SPELL,
       SPELL_02 TYPE SPELL,
       SPELL_03 TYPE SPELL,
       LV_ZH_01 TYPE CHAR30,
       LV_ZH_02 TYPE CHAR30,
       LV_ZH_03 TYPE CHAR30,
       FLTP01   TYPE CHAR30,
       FLTP02   TYPE CHAR30.

  LV_ZH_01 I_AMOUNT.

  SPLIT LV_ZH_01 AT '.' INTO LV_ZH_02 LV_ZH_03.
  FLTP01 LV_ZH_03(1).
  FLTP02 LV_ZH_03+1(1).

  IF LV_ZH_02 <> '0' .
    CALL FUNCTION 'SPELL_AMOUNT'
      EXPORTING
        LANGUAGE 'E'   "sy-langu
        CURRENCY SY-WAERS
        AMOUNT   
LV_ZH_02
        FILLER   
' '
      IMPORTING
        IN_WORDS SPELL_01.
  ENDIF.

  CALL FUNCTION 'SPELL_AMOUNT'
    EXPORTING
      LANGUAGE 'E'   "sy-langu
      CURRENCY SY-WAERS
      AMOUNT   
FLTP01
      FILLER   
' '
    IMPORTING
      IN_WORDS SPELL_02.

  IF FLTP02 <> '0' .
    CALL FUNCTION 'SPELL_AMOUNT'
      EXPORTING
        LANGUAGE 'E'   "sy-langu
        CURRENCY SY-WAERS
        AMOUNT   
FLTP02
        FILLER   
' '
      IMPORTING
        IN_WORDS SPELL_03.
  ENDIF.

  IF SPELL_02-WORD 'ZERO' AND SPELL_03 IS INITIAL .
    E_AMOUNT |{ SPELL_01-WORD } ONLY|.
  ELSE.
    E_AMOUNT |{ SPELL_01-WORD } AND|.
    IF SPELL_02-WORD <> 'ZERO' .
      E_AMOUNT |{ E_AMOUNT } POINT { SPELL_02-WORD }|.
    ENDIF.
    IF SPELL_03 IS NOT INITIAL AND SPELL_02-WORD <> 'ZERO' ..
      E_AMOUNT |{ E_AMOUNT }-{ SPELL_03-WORD }|.
    ELSEIF SPELL_03 IS NOT INITIAL AND SPELL_02-WORD 'ZERO' .
      E_AMOUNT |{ E_AMOUNT } { SPELL_03-WORD }|.
    ENDIF.
    E_AMOUNT |{ E_AMOUNT } ONLY|.
  ENDIF.

ENDFUNCTION.

 

其效果如下:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值