ABAP金额转换大写

36 篇文章 2 订阅
26 篇文章 1 订阅

1.SE37 新增RFC 

Z_CONVERT_TO_CAPITALIZATION

FUNCTION Z_CONVERT_TO_CAPITALIZATION.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(PI_MONEY) TYPE  BBWERT
*"  EXPORTING
*"     VALUE(PO_CHINESE) TYPE  CHAR_50
*"----------------------------------------------------------------------


IF PI_MONEY = 0.
    PO_CHINESE = '零'.
    EXIT.
  ENDIF.
  DATA:MONEY_STR(13).
  MONEY_STR = PI_MONEY.

  IF MONEY_STR CN '0123456789. '.
    RAISE WRONG_MONEY.
  ENDIF.
  DATA:I TYPE I.
  IF MONEY_STR CS '.'.
    I = SY-FDPOS + 1.
    MONEY_STR+SY-FDPOS = MONEY_STR+I.
  ENDIF.
  CONDENSE MONEY_STR NO-GAPS.
  DATA:UNITS_OFF TYPE I,
       CURNT_OFF TYPE I.
  DATA:LASTD TYPE N,CURNTD TYPE N.
  DATA:CWORD(2),WEIGHT(2).
  DATA:UNITS(30) VALUE '分角元拾佰仟万拾佰仟亿拾佰仟万',
       DIGTS(20) VALUE '零壹贰叁肆伍陆柒捌玖'.
 clear:po_chinese.",units_off.
  LASTD = 0.
  CURNT_OFF = STRLEN( MONEY_STR ) - 1.
  WHILE CURNT_OFF >= 0.
    CURNTD = MONEY_STR+CURNT_OFF(1).
    CWORD = DIGTS+CURNTD(1).

    WEIGHT = UNITS+UNITS_OFF(1).

    IF CURNTD = 0.             "Current digit is 0
      IF UNITS_OFF = 2 OR UNITS_OFF = 6 OR UNITS_OFF = 10.
        CLEAR:CWORD.
        IF CURNT_OFF = 0.
          CLEAR:WEIGHT.
        ENDIF.
      ELSEIF LASTD = 0.
        CLEAR:CWORD,WEIGHT.
      ELSE.
        CLEAR:WEIGHT.
      ENDIF.
    ENDIF.
    "PO_CHINESE = CWORD + WEIGHT + PO_CHINESE.
    CONCATENATE CWORD WEIGHT PO_CHINESE INTO PO_CHINESE.
    LASTD = CURNTD.
    SUBTRACT 1 FROM CURNT_OFF.
    ADD 1 TO UNITS_OFF.
  ENDWHILE.
  IF PO_CHINESE NS '分'.
    CONCATENATE PO_CHINESE '整' INTO PO_CHINESE.
  ELSE.
    CWORD = PO_CHINESE.
    IF CWORD = '零'.
      SHIFT PO_CHINESE BY 1 PLACES.
    ENDIF.
  ENDIF.



ENDFUNCTION.

2.调用 FUNCTION 

CALL FUNCTION 'Z_CONVERT_TO_CAPITALIZATION'
  EXPORTING
   PI_MONEY = LV_MONEY
   IMPORTING
     PO_CHINESE = LV_CHAR50.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值