点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我注意到,当我们使用FOR ALL ENTRIES在第一个表(例如ITAB1)的基础上从第二个表(例如ITAB2)中选择数据时,没有在第一个表上明确指定SORT语句(例如:通过键字段对SORT itab1进行指定) ,ATC检查会产生错误,即两个表可以联接,而不是单独选择。 如果我在ITAB1上写一个明确的SORT语句,该错误就会消失。
如果我们将ITAB1定义为SORTED TABLE OF或在获取数据时基于主键应用ORDER BY子句,则会发生这种情况。
这是否意味着ATC在寻找明确的SORT语句,并且不认为该表使用其他技术进行了排序?
此致
Manish
桑德拉,你好
以下是各种情况的代码:
1。 任何地方都没有SORT语句:
如果我在lt_A501上不使用SORT语句,则在ATC检查中说我应该将这两个表(A501和KONP)连接起来。 由于A501是缓冲表,因此即使我这样做,我也不会将其与KONP合并,但当前的ATC错误消失了,但是又出现了一个提示" JOIN中的缓冲表"。
SELECT matnr,knumh
2。 添加了显式SORT语句:
如果我在基于KNUMH的lt_A501上添加显式SORT语句,则ATC错误将消失。
3。 使用ORDER BY进行排序:
如果我在第一个查询本身中通过KNUMH指定ORDER,ATC错误就会再次出现
它是主键上的排序表吗? 您是否将FORDER BY与FOR ALL ENTRIES一起使用? (请参阅SAP注释,直到最近才有很多问题)
这可能与您所说的不完全相同,或者ATC在检查主索引之前优先考虑将两个数据库表连接在一起的建议,或者是
但是没有相关的确切代码,也没有确切的消息,这很难说。
Hello Manish,
ATC是静态代码分析工具。 它仅在源代码上起作用,而不在运行时上起作用,并且着重于代码中最常见的弱点。 因此,它扩展代码复杂性的能力有限。 也不会有大量错误的阳性结果。
我认为显式SORT对ATC意味着如下:太复杂的场景,不值得进一步研究,开发人员必须知道她或他在做什么...
(使用"答案"来提出解决方案,并使用注释来添加信息或对提案做出反应)
您是否尝试在"内部联接"中添加BYPASSING BUFFER选项?
一周热门 更多>