技术开发 频道

ABAP实例:将数字金额转换为人民币大写字符串

【IT168 技术文章】

  1、No Uncode Version

    function z_convert_numeric_to_chinese.
    
*"----------------------------------------------------------------------
    *"*"Local interface:
    
*"  IMPORTING
    *"     VALUE(PI_MONEY) LIKE  BSEG-DMBTR
    *"  EXPORTING
    *"     REFERENCE(PO_CHINESE)
    *"  EXCEPTIONS
    *"      WRONG_MONEY
    *"----------------------------------------------------------------------
      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).
        i
= curntd * 2.
        cword
= digts+i(2).

        weight
= units+units_off(2).


        i
= units_off / 2.
        
if curntd = 0.             "Current digit is 0
          if i = 2 or i = 6 or i = 10.
            clear:cword.
            
if curnt_off = 0.
              clear:weight.
            endif.
          elseif lastd
= 0.
            clear:cword,weight.
          
else.
            clear:weight.
          endif.
        endif.
        concatenate cword weight po_chinese into po_chinese.
        lastd
= curntd.
        subtract
1 from curnt_off.
        add
2 to units_off.
      endwhile.
      
if po_chinese ns ''.
        concatenate po_chinese
'' into po_chinese.
      
else.
        cword
= po_chinese.
        
if cword = ''.
          shift po_chinese by
2 places.
        endif.
      endif.
    endfunction.
0
相关文章