代码检查器:DELETE语句第2部分

2020-08-22 13:38发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我认为我需要创建一个新线程。 感...

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

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


我认为我需要创建一个新线程。 感谢您对上一个问题的帮助。

我在代码检查器中显示了两个DELETE语句。 为什么会出现性能问题?

有什么建议吗?

选择顺序
     从/bmw/ts_1143_log作为
    在@s_ordid中的位置
      AND order_comp_flag EQ @空格
      和
   存在(选择*
              来自zmrp
             在哪里cno_order EQ a〜ordid
               AND cid_status IN @s_status
               AND cno_assyl IN @s_assyl)
     进入表@gt_log。

   如果sy-subrc EQ 0。

     排序gt_log
       按ordid。

     从gt_log删除相邻的重复项
       正在比较## CI_SORTED。

   ENDIF。

在lt_plaf循环
     分配FIELD-SYMBOL()。

     读取表lt_zmrp
       导入数据(ls_zmrp)
       使用键cno_order =  -plnum + 3(7)。

     IF sy-subrc NE 0。
       将abap_true移动到 -xdel中。
     万一。

   结局。

   删除lt_plaf
     Xdel EQ在哪里abap_true。
1条回答
me_for_i
2020-08-22 14:06 .采纳回答

删除声明1:

您再次将数据从数据库传输到不需要的应用程序服务器。 您选择字段ORDID,然后立即消除重复的条目。 SELECT语句可以直接在数据库中执行以下操作:SELECT DISTINCT ordid ...

删除声明2:

如果您有NW 7.40或更高版本的系统,请不要再使用MOVE语句。 如果目标始终在左侧,而源始终在右侧,则代码更具可读性。
但问题是:实际上,您不需要附加标志。 设置标志后,由于无需使用进行任何操作,因此可以立即从内部表中删除该行:

在lt_plaf处循环播放
 分配FIELD-SYMBOL()。

   读取表lt_zmrp
   带键cno_order =  -plnum + 3(7)
   无领域运输。

   IF sy-subrc NE 0。
     删除lt_plaf。
   万一。

 ENDLOOP。

此外,我从READ语句中删除了数据复制。 您不需要结果,因此可以省略数据传输。

最好的方法是从不读取这些行,并与读取lt_zmrp的语句进行连接。

一周热门 更多>