ABAP之单位转换的详细用法
序
HELLO,这里百里,一个学习中的ABAPER,在工作中,我们在MM模块中,展示ALV界面中会经常使用单位字段.这个字段是分成明暗码的情况.就是说我们看到的字段和展示出的字段不一样的情况.会给用户带来非常不友好的体验.
为什么要单位转换
在SAP中会出现使用的单位和展示出来的单位不一致的情况.我们这举个例子, 比如 ‘HZS’ 对应的 单位就是 ‘张’ ,一张两张的张. 然而我们在ALV展示的界面时候,他显示的内容为汉字,这时我们通过DEBUG查询到的内表数据却是’HZS’ .假使我们要进一步对这个数据进行加工, 比如打印.OLE,SMARTFORM时.我们会发现 展示出来的内容为暗码即’HZS’ .百里就遇到过这种情况,ALV展示的界面好好的用户说,想增加一个打印数据内容.想也没想,因为ALV已经展示了中文字段.直接上操作指针,结果没测试传到正式环境了,用户打印出来都是暗码字段. 可是坑死我了…
如何进行单位转换
在SAP的单位转化其实很简单. 我们这里讲述两种单位转换的方式.
第一种,WRITE…TO …
这是百里无意中发现的,在测试DMEO时,DEBUG内容为暗码,但是按了F8打印出来就变成了明码,我一直以为是我错了哪一步 ,结果经过重重debug 发现.居然是WRITE 可以直接展示明码字段. 不过这个也有一个前提 .
就是展示出的内容是跟语言环境走的. 如果你语言环境选得是’ZH’展示出来就是中文. 如果你选的是’EN’ 则显示英文 …
WRITE 暗码单位 TO 工作区字段
第二种 调用函数替换
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
EXPORTING
INPUT = 出参
IMPORTING
OUTPUT = 入参 .
案例
数据准备
data : btgew TYPE MEINS .
data : btgew1 TYPE MEINS .
DATA:LV_DW TYPE CHAR10.
btgew = 'SZH' .
"btgew = 'STU' .
WRITE 案例
WRITE btgew TO LV_DW.
WRITE : btgew .
WRITE : LV_DW .
函数案例
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
EXPORTING
INPUT = btgew
IMPORTING
OUTPUT = btgew .
![wallhaven-9d611k.jpg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/22bf1a46de344defad45950397eba9ff~tplv-k3u1fbpfcp-watermark.image?)
WRITE : 'message' .
WRITE : btgew .
WRITE: sy-uline .
WRITE : '结果' .
WRITE : btgew1 .
结果
如图我们输入的’HZS’ ,经过两种方式的转换后,最终输出的结果为中文的’张’ .
还是要注意语言环境. 否则会失效 .
百里鸡汤
未觉池塘春草梦,
阶前梧叶已秋声。
这里是百里,一个努力的学习者. 努力学习好好记录,点滴进步,就是成功.
- 点赞
- 收藏
- 关注作者
评论(0)