转自:http://www.dasunny.com/wordpress/sapnotes/2015113091.html
SAP标准的数值转换函数 SPELL_AMOUNT,
仅对整数部分进行了处理,小数部分未处理。
FUNCTION Z_RMBDX.
DATA: BEGIN OF RMB,
BY TYPE C,
SY TYPE C,
Y TYPE C,
QW TYPE C,
BW TYPE C,
SW TYPE C,
W TYPE C,
Q TYPE C,
B TYPE C,
S TYPE C,
G TYPE C,
D TYPE C,
J TYPE C,
F TYPE C,
N TYPE C,
END OF RMB.
DATA: BEGIN OF RMBDX,
BY() TYPE C,
BY1() TYPE C,
SY() TYPE C,
SY1() TYPE C,
Y() TYPE C,
Y1() TYPE C,
QW() TYPE C,
QW1() TYPE C,
BW() TYPE C,
BW1() TYPE C,
SW() TYPE C,
SW1() TYPE C,
W() TYPE C,
W1() TYPE C,
Q() TYPE C,
Q1() TYPE C,
B() TYPE C,
B1() TYPE C,
S() TYPE C,
S1() TYPE C,
G() TYPE C,
D() TYPE C,
J() TYPE C,
J1() TYPE C,
F() TYPE C,
F1() TYPE C,
Z() TYPE C,
END OF RMBDX.
DATA: Y() TYPE C. RMB = RMBXX. IF NOT ( RMB-BY IS INITIAL ) AND RMB-BY NE ''.
PERFORM DX USING RMB-BY CHANGING RMBDX-BY. Y = 'X'. IF RMB-BY NE ''.
IF RMB-SY EQ '' AND RMB-Y EQ ''.
RMBDX-BY1 = '佰亿'.
ELSE.
RMBDX-BY1 = '佰'.
ENDIF.
ENDIF.
ENDIF. IF NOT ( RMB-SY IS INITIAL ).
IF RMB-SY NE '' OR RMB-Y NE ''.
PERFORM DX USING RMB-SY CHANGING RMBDX-SY.
Y = 'X'.
IF RMB-SY NE ''.
IF RMB-Y EQ ''.
RMBDX-SY1 = '拾亿'.
ELSE.
RMBDX-SY1 = '拾'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
IF NOT ( RMB-Y IS INITIAL ).
IF RMB-Y NE '' OR RMB-QW NE ''.
PERFORM DX USING RMB-Y CHANGING RMBDX-Y.
Y = 'X'.
IF RMB-Y NE ''.
RMBDX-Y1 = '亿'.
ENDIF.
ENDIF.
ENDIF.
IF NOT ( RMB-QW IS INITIAL ).
IF RMB-QW NE '' OR RMB-BW NE ''.
PERFORM DX USING RMB-QW CHANGING RMBDX-QW.
Y = 'X'.
IF RMB-QW NE ''.
IF RMB-BW EQ '' AND RMB-SW EQ '' AND RMB-W EQ ''.
RMBDX-QW1 = '仟万'.
ELSE.
RMBDX-QW1 = '仟'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
IF NOT ( RMB-BW IS INITIAL ).
IF RMB-BW NE '' OR RMB-SW NE ''.
PERFORM DX USING RMB-BW CHANGING RMBDX-BW.
Y = 'X'.
IF RMB-BW NE ''.
IF RMB-SW EQ '' AND RMB-W EQ ''.
RMBDX-BW1 = '佰万'.
ELSE.
RMBDX-BW1 = '佰'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
IF NOT ( RMB-SW IS INITIAL ).
IF RMB-SW NE'' OR RMB-W NE ''.
PERFORM DX USING RMB-SW CHANGING RMBDX-SW.
Y = 'X'.
IF RMB-SW NE ''.
IF RMB-W EQ ''.
RMBDX-SW1 = '拾万'.
ELSE.
RMBDX-SW1 = '拾'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
IF NOT ( RMB-W IS INITIAL ).
IF RMB-W NE '' OR RMB-Q NE ''.
PERFORM DX USING RMB-W CHANGING RMBDX-W.
Y = 'X'.
IF RMB-W NE ''.
RMBDX-W1 = '万'.
ENDIF.
ENDIF.
ENDIF.
IF NOT ( RMB-Q IS INITIAL ).
IF RMB-Q NE '' OR RMB-B NE ''.
PERFORM DX USING RMB-Q CHANGING RMBDX-Q.
Y = 'X'.
IF RMB-Q NE ''.
RMBDX-Q1 = '仟'.
ENDIF.
ENDIF.
ENDIF.
IF NOT ( RMB-B IS INITIAL ).
IF RMB-B NE '' OR RMB-S NE ''.
PERFORM DX USING RMB-B CHANGING RMBDX-B.
Y = 'X'.
IF RMB-B NE ''.
RMBDX-B1 = '佰'.
ENDIF.
ENDIF.
ENDIF.
IF NOT ( RMB-S IS INITIAL ).
IF RMB-S NE'' OR RMB-G NE ''.
PERFORM DX USING RMB-S CHANGING RMBDX-S.
Y = 'X'.
IF RMB-S NE ''.
RMBDX-S1 = '拾'.
ENDIF.
ENDIF.
ENDIF.
IF NOT ( RMB-G IS INITIAL ) AND RMB-G NE ''.
PERFORM DX USING RMB-G CHANGING RMBDX-G.
Y = 'X'.
ENDIF.
IF Y EQ 'X'.
RMBDX-D = '圆'.
ENDIF.
IF NOT ( RMB-J IS INITIAL ) AND RMB-J NE ''.
PERFORM DX USING RMB-J CHANGING RMBDX-J.
RMBDX-J1 = '角'.
ENDIF.
IF NOT ( RMB-F IS INITIAL ) AND RMB-F NE ''.
PERFORM DX USING RMB-F CHANGING RMBDX-F.
RMBDX-F1 = '分'.
ELSE.
RMBDX-Z = '整'.
ENDIF.
CONDENSE RMBDX NO-GAPS.
IF RMBXX = .
CLEAR RMBDX.
ENDIF.
RMBDX1 = RMBDX.
CLEAR Y. ENDFUNCTION. FORM DX USING VALUE(X) CHANGING DXX.
CASE X.
WHEN ''.
DXX = '零'.
WHEN ''.
DXX = '壹'.
WHEN ''.
DXX = '贰'.
WHEN ''.
DXX = '叁'.
WHEN ''.
DXX = '肆'.
WHEN ''.
DXX = '伍'.
WHEN ''.
DXX = '陆'.
WHEN ''.
DXX = '柒'.
WHEN ''.
DXX = '捌'.
WHEN ''.
DXX = '玖'.
ENDCASE.
ENDFORM.

最新文章

  1. HTML5自学笔记[ 8 ]历史管理
  2. 分布式 ES 操作流程解析
  3. Qt for Mac:发布程序(widgets和quick2)
  4. CoreText实现图文混排之点击事件
  5. 转:SVN 出现This client is too old to work with working copy...错误
  6. android网址
  7. 【Oracle】逻辑结构(TableSpace→Segment→Extent→Block)
  8. angularJS懒加载依赖模块
  9. Android7.0 PowerManagerService 之亮灭屏(一)
  10. Python实现爬取需要登录的网站完整示例
  11. [apache2.4]configure: error: APR not found. Please read the documentation.
  12. Openvswtich 学习笔记
  13. [小米 Online Judge]找出单独出现的数字
  14. 执行力:Just Do It
  15. manjaro设置国内源
  16. VirtualBox 文件共享及网络配置技巧
  17. 二,windows下安装memcached服务
  18. AND Graph CodeForces - 987F(思维二进制dfs)
  19. Neo4j使用简单例子(转)
  20. .net core系列之《在.net core中使用MemoryCache实现本地缓存》

热门文章

  1. Arc Object开发,概述2
  2. Linux ClientDataSet libmidas.so.2
  3. dedecms调用文章发布日期
  4. C#是唯一能挑战Java的编程语言?
  5. ylb:SQL 表的高级查询-多表连接和子查询
  6. Dicom Conformance
  7. JVM技术部分总结
  8. Redis 在 Java 中的使用
  9. memcpy( )的使用以及迭代器的使用
  10. mysql中UNIX_TIMESTAMP()函数和php中time()函数的区别