ABAP--将数字金额转换为人民币大写字符串
2007-12-14 11:13
302 查看
2006年09月05日 16:10:00
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.
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1180463
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.
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1180463
相关文章推荐
- ABAP--将数字金额转换为人民币大写字符串(增加UNICODE版本)
- ABAP--将数字金额转换为人民币大写字符串(增加UNICODE版本)
- ABAP--将数字金额转换为人民币大写字符串
- ABAP--将数字金额转换为人民币大写字符串
- ABAP--将数字金额转换为人民币大写字符串(增加UNICODE版本)
- ABAP--将数字金额转换为人民币大写字符串(增加UNICODE版本)
- ABAP--将数字金额转换为人民币大写字符串(增加UNICODE版本)
- 将数字金额转换成人民币大写字符串
- 将数字金额转换为人民币大写字符串
- 将数字金额转换为人民币大写字符串
- C#小写数字金额转换成大写人民币金额的算法
- 写一个程序,语言不限,能将人民币金额从阿拉伯数字转换为大写汉字表示。例如,把1234.56转换为壹仟贰佰叁拾肆圆零伍角陆分。
- 用python实现把数字人民币金额转换成大写的脚本程序
- 将阿拉伯数字表示的金额转换为大写金额字符串
- 利用创建型工厂方法模式编写小写数字金额转换为人民币大写C#代码。
- js将数字金额转换为大写人民币
- JS实现将数字金额转换为大写人民币汉字的方法
- .NET把小写数字金额转换成大写人民币金额的两种算法
- 将数字金额转换成大写人民币形式(网站收到的一个方法很不错)
- 将数字金额转换成大写人民币形式