点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
您好,我们有一个启动例程,其中包含以下代码,并且正在妨碍性能,并希望用字段符号代替对工作区的使用。 有人可以帮助我修改代码,如果需要的话还可以帮助优化代码。 此例程位于自定义主数据对象和Open集线器之间。 下面是代码:
从/bic/azddbatch00
选择材料批次进入表it_mch1的对应字段
其中/bic/zdelflag ='X'。
如果sy-subrc =0。
按物料批次升序it_mch1排序。
Endif。
循环到it_mch1并进入wa_mch1。
在哪里删除源_包
物料= wa_mch1-物料AND批次= wa_mch1-批次。
ENDLOOP。
很难确定没有上下文的瓶颈所在,但据我所知并不是因为您使用工作区而不是字段符号。
根据您提供的源代码部分,我可以想到两件事:
1。/bic/azddbatch00未根据/bic/zdelflag
2编制索引。 SOURCE_PACKAGE是标准表。 这意味着您正在LOOP中执行线性搜索,这很不好。 事实上,在大量记录的情况下,确实很糟糕。
请确保您使用的表类型是根据where条件中使用的字段排序的。
此外,运行性能跟踪(如果您尚未这样做),以确保缓慢性来自何处。 此外,静态代码检查(代码检查器/ATC)为检测和修复可能的性能问题提供了很多帮助。
作为GáborMárián指出,我怀疑您的性能问题是由于从内部表到工作区的移动,因为循环中有一个DELETE source_package!
# p #se30.jpg
se30-2.jpg
我已经在se30中完成了运行时分析,这是相同图像的
它有多慢? 您的系统是BWoHANA还是更好的BW4HANA?
您还可以先使用信息集或复合提供程序将这些表联接起来,然后将其加载到目标dso(无需例程)。
或者如果您的批处理dso不太大,我认为最好创建一个过滤例程以缩小记录数。
Naveen Chand Yalamanchili 您甚至不确定真正的问题是什么(您没有测量/分析性能),并且希望我们猜测 真正的问题是什么?
一周热门 更多>