zl程序教程

您现在的位置是:首页 >  Java

当前栏目

ABAP之单位转换的详细用法

2023-02-18 16:31:26 时间

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第25天,点击查看活动详情

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' ,经过两种方式的转换后,最终输出的结果为中文的'张' . 还是要注意语言环境. 否则会失效 .

百里鸡汤

未觉池塘春草梦,

阶前梧叶已秋声。

这里是百里,一个努力的学习者. 努力学习好好记录,点滴进步,就是成功.