使用BADI时的最佳性能调整方法

2020-08-16 10:31发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

有时可以为循环中的所有记录触发BADI方法内部编写的select语句,这可能会影响性能。 您能否分享在这种情况下避免相同选择的最佳方法?

例如-使用类的静态属性以及在哪里使用它?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

有时可以为循环中的所有记录触发BADI方法内部编写的select语句,这可能会影响性能。 您能否分享在这种情况下避免相同选择的最佳方法?

例如-使用类的静态属性以及在哪里使用它?

付费偷看设置
发送
7条回答
spaceman01
1楼 · 2020-08-16 11:05.采纳回答

您好 Meera K

首先检查表本身是否未缓冲。 如果是这样,那么在BADI中进行缓冲就没有多大意义。

稍后,如果表不是缓冲,那么使用静态内部表进行简单缓冲将是一种方法。 首先检查内部表,看看是否有给定条件的记录,仅在没有条件的情况下才读取DB,将读取的记录保存到内部表中以备后用。

对于更复杂的解决方案,可以使用 Singleton模式。 您可以创建一个缓冲对象的Singleton实现,该对象可以存储读取的记录并允许从逻辑中的不同位置访问它们(这部分与上一段相同)。

亲切的问候,
Mateusz
clasier
2楼-- · 2020-08-16 11:17

Meera K

您可以尝试限制代码,使其仅针对 您的必要条件。 但这又取决于您的业务场景。 根据您的意见,我们建议更好的解决方案。

CJones
3楼-- · 2020-08-16 10:58

感谢 Matthew Billingham ,< rel =" nofollow" hraf=" /img/users/233743/mateuszadamus.html"> Mateusz Adamus 和Sandra Rossi。 您的建议有所帮助。 关闭该线程

4楼-- · 2020-08-16 11:14

基于TVARVC的代码受到限制,TVARVC是一个缓冲表和另一个自定义表。 BADI会为循环中的每个记录调用,因此相同的选择%很大。 这是针对MD04中的填充列。

d56caomao
5楼-- · 2020-08-16 11:09

非常感谢Mathew。 是的,我想了解有关向BADI实现中添加私有方法的更多信息。请分享是否有任何参考文件。

奄奄一息的小鱼
6楼-- · 2020-08-16 11:04

您不能使用实例属性还是静态属性,并且 按照Matthew的建议,仅使用CONSTRUCTOR或CLASS_CONSTRUCTOR方法执行一次SELECT。

Baoming ROSE
7楼-- · 2020-08-16 11:17

在某些情况下,大量预填充静态缓冲区可以带来进一步的性能提升(如果仍然存在)
要实现批量预填充(我猜CLASS_CONSTRUCTOR方法大致相同),必须再次调用BAdI方法,或者至少有机会实现 隐式增强在正确的位置。
请不要害怕在事件中添加BAdI方法,如果它丢失并且在消除相同之处后仍然存在性能问题。

一周热门 更多>