选择最多N行

2020-08-20 20:20发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家您好, 我需要使用 BA...

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

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


专家您好,

我需要使用" BAPI_PO_CHANGE"更新与某个特定类型" XYZ"相关的所有采购订单。

在生产环境中,我在EKPO表中有超过一百万条与此采购订单相关的生产线。 来自EKKO内部联接EKPO的简单选择语句将导致性能问题。

我想从EKKO/EKPO中选择一定数量的行,例如1000,使用" BAPI_PO_CHANGE"更新这1000行,然后从EKKO/EKPO中选择接下来的1000行。 处理应该像这样继续进行,直到所有行(百万行)都更新为止。

有什么建议吗? 或其他解决方案?

此致

盟友

5条回答
大简至美
2020-08-20 21:14 .采纳回答

嗨,盟友,

您可以尝试在SELECT ... ENDSELECT块中使用PACKAGE SIZE添加

选择...从表...位置到表... itab包大小1000 ...在哪里...调用函数'BAPI_PO_CHANGE'。ENDSELECT。

根据关键字文档:

如果指定PACKAGE SIZE加法,则SELECT的结果集的所有行都将循环处理,必须用ENDSELECT封闭。 这些行以n行的包的形式插入内部表itab中。 n必须是包含行数的类型i数据对象。 如果n的值小于0,则发生无法处理的异常。 如果n等于0,则将结果集的所有行插入内部表itab中。 如果在FETCH语句中使用,将从当前光标位置提取n行。

如果使用INTO,则在每次插入之前初始化内部表,并且在SELECT循环中,内部表仅包含当前包的行。 如果使用了APPENDING,则会为每个SELECT循环或使用FETCH的每个提取将另一个包添加到内部表的现有行中。

干杯

Amy

一周热门 更多>