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
concatenate po_chinese '整' into po_chinese. else. cword = po_chinese. if cword = '零'. shift po_chinese by 2 places. endif. endif. endfunction. |
将数字金额转换成人民币大写字符串
精选 转载
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
将数字金额转换为人民币大写字符串
Import:IV_MONEY TYPE BF_DMBTR 按本位币计的金额Outport:EV_MON
职场 休闲 将数字金额转换为人民币大写字符串