1、需求说明
某功能需要在程序中执行标准的事务代码,如KSS2/CON2/KSII等,之后将标准功能运行结果的数据回传到功能中,如标准功能执行后的ALV和消息。
2、需求实现
2.1、ALV
除了KSII以外,KSS2和CON2的结果,都无法直接通过cl_salv_bs_runtime_info=>get_data_ref获取ALV的数据(详细做法可参考《获取标准报表CJI3的ALV数据》)
KSS2(程序为RKSS0_KSS2)运行效果
可通过ALV输出时,将ALV内表抛内存
为了限制抛内存的时机,可以在自开发程序中抛内存LV_ZKSS2作为标识,在增强中接到后,再抛内存给自开发程序。自开发程序执行完记得要清空该内存。
CON2(程序为RKAZCON2)运行效果
在程序中,四个内表分别对应上述四个区域
但ALV界面位于第二层界面,也无法获取
同理,也是找到ALV输出前做增强抛内存
2.2、MESSAGE
在执行上述标准事务代码之后,对于执行完的消息数据,可以在通用函数MESSAGES_COUNT中做增强进行抛内存输出
文章的重点在于介绍通用函数MESSAGES_COUNT,可以在多个标准事务代码中获取执行结果的消息。另还有MESSAGE_SHOW和MESSAGE_SAVE函数,可在需要时使用。
其中KSS2还找到另外一个通用函数,也有消息相关的内表
2.3、控制范围处理
在调用财务事务代码时,可能会存在控制范围更改后,弹出新的控制范围的输入框,而且弹框和选择屏幕的控制范围不是相同的屏幕字段
所以只在SUBMIT中输入WITH kokrs = p_kokrs是没办法把值传入弹出窗口的成本控制范围中的
因此需要在SUBMIT调用之前,先设置参数ID CAC的值,将控制范围传入弹框中,再用SUBMIT的WITH kokrs = p_kokrs中传入控制范围,就可以正常执行
再扩展到之前写过的内容,想想什么时候这个弹框里面传的控制范围参数会失效呢?可以参考以前发表的《聊聊SAP内存和ABAP内存》的内容。
以上就是获取标准事务代码ALV数据和MESSAGE的增强介绍
定期更文,欢迎关注