域名注册_手机网站建设价格_免费申请

2021-05-04 21:26

亲爱的社区,

在这个博客中,我想分享一种创新的方法来解决MIGO事务中在行项目检查上显示多条消息的常见问题。

探索的解决方案包括实现BADI–MB泳MIGO泳BADI和MB泳CHECK泳line泳BADI。详情如下

MB泷MIGO泷BADI–因为我们大多数人都知道,提供此BADI的唯一目的是为MIGO交易添加自定义子屏幕。尽管这个BADI有一个CHECK\u ITEM方法来返回多条消息(到ET\u BAPIRET2),但是它有一个限制,即在任何系统中只能有五个BADI的活动实现。所以,大数据需要学什么,这不是一个万无一失的解决方案。所以,我需要寻找其他方法。

MB\u CHECK\u LINE\u BADI–我探索了这个方法并实现了CHECK\u LINE方法。后来发现这个BADI一般只显示一条消息到应用日志,也是通过消息语句发布的。

但是要求是多条消息,所以有麻烦。

SAPLMIGO标准代码的进一步调试,我意识到应用程序日志处理程序位于本地类的私有变量P\u log\u HANDLE–LCL\u MIGO\u log中,bi大数据分析,但不幸的是,选购云服务器,大数据库,在MB\u CHECK\u LINE\u BADI的CHECK\u LINE方法中无法访问它。一种方法可能是使用ABAP内存并导出日志处理程序的值来检查\u LINE方法的实现,然后将消息添加到应用程序日志中。这需要内隐增强和ABAP记忆(这是过时的)。所以,这不是一个更好的解决方案。

现在,创新的解决方案来了。通过对标准代码的分析,我观察到我们在CHECK\ LINE方法中可以访问SAPLMBWL程序的内部表EMSEG。Standard使用相同的表来填充应用程序日志中的消息。所以,我用我们的验证消息填充了这个表,然后标准代码完成了将它们添加到应用程序日志的操作,它在MIGO屏幕上得到了适当的呈现。

我觉得这是一种黑客行为,但仍然是首选解决方案,因为它不保证任何类型的项目批准或使用过时的技术。

代码片段–

示例输出–

更新:2020年6月19日–我发现了另一个FM,联网,它提供了一种在内存中获取所有BAL日志处理程序的优雅方法。

FM is–BAL\U GLB\U SEARCH\U log

下面是一个示例代码片段,它将给出特定筛选器在内存中的所有日志处理程序的列表。

真诚地感谢所有反馈/评论/问题。

分享到:
收藏
相关阅读