SAP阿拉伯数字转中文大写函数

已经不知道是哪个高手写的函数了,名字忘了,只留下了函数。

此函数会经常用在FICO模块的会计凭证打印方面,所以说还是比较有用的。只需新建一个函数组,并创建一个函数,并将代码拷贝进程序当中即可。

 FUNCTION ZM_CHN_NUM.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     REFERENCE(IV_MONEY) TYPE  BSEG-DMBTR
*"  EXPORTING
*"     REFERENCE(EV_MONEY) TYPE  STRING
*"  EXCEPTIONS
*"      WRONG_MONEY
*"----------------------------------------------------------------------
 clear ev_money.
 IF iv_money 0.
    ev_money '零'.
    EXIT.
  ENDIF.
  DATA:money_str(33).
  money_str iv_money.
   CONDENSE money_str NO-GAPS.
  IF money_str CN '0123456789. '.
    RAISE wrong_money.
  ENDIF.
  DATA:TYPE i.
  IF money_str CS '.'.
    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(30VALUE '分角元拾佰仟万拾佰仟亿拾佰仟万',
       digts(20VALUE '零壹贰叁肆伍陆柒捌玖'.
* clear:ev_money,units_off.
  lastd 0.
  curnt_off STRLENmoney_str 1.
  WHILE curnt_off >= 0.
    curntd money_str+curnt_off(1).
    curntd.
    cword digts+i(1).
    weight units+units_off(1).
    units_off / 1.
    IF curntd 0.             "Current digit is 0
      IF OR OR 10.
        CLEAR:cword.
        IF curnt_off 0.
          CLEAR:weight.
        ENDIF.
      ELSEIF lastd 0.
        CLEAR:cword,weight.
      ELSE.
        CLEAR:weight.
      ENDIF.
    ENDIF.
    CONCATENATE cword weight ev_money INTO ev_money.
    lastd curntd.
    SUBTRACT FROM curnt_off.
    ADD TO units_off.
  ENDWHILE.
  IF ev_money NS '分'.
    CONCATENATE ev_money '整' INTO ev_money.
  ELSE.
    cword ev_money.
    IF cword '零'.
      SHIFT ev_money BY PLACES.
    ENDIF.
  ENDIF.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值