"&----- 金额小转大,亿万元问题修复 ------------------
form frm_19_money_upper  using     fv_iv_money
                                   fv_ev_money.
  if fv_iv_money = 0.
    fv_ev_money = '零'.
    exit.
  endif.
  data:money_str(33).
  money_str = fv_iv_money.
  condense money_str no-gaps.
  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 '零壹贰叁肆伍陆柒捌玖'.
  data:lv_wan type i,
       lv_wst type string.
* clear:fv_ev_money,units_off.
  lastd = 0.
  curnt_off = strlen( money_str ) - 1.
  while curnt_off >= 0.
    curntd = money_str+curnt_off(1).
    i = curntd.
    cword = digts+i(1).
    weight = units+units_off(1).
    i = units_off / 1.
    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.
        if i = 6.
          clear:lv_wan.
          lv_wan = strlen( money_str ) - 10.
          if lv_wan > 0.
            lv_wan = money_str+lv_wan(3).
            if lv_wan = 0.
              clear:weight.
            endif.
          endif.
        endif.
      elseif lastd = 0.
        clear:cword,weight.
      else.
        clear:weight.
      endif.
    endif.
    concatenate cword weight fv_ev_money into fv_ev_money.
    lastd = curntd.
    subtract 1 from curnt_off.
    add 1 to units_off.
  endwhile.
  if fv_ev_money ns '分'.
    concatenate fv_ev_money '整' into fv_ev_money.
  else.
    cword = fv_ev_money.
    if cword = '零'.
      shift fv_ev_money by 1 places.
    endif.
  endif.
endform.