什么是平行游标

2020-08-26 10:38发布

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

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


并行光标是什么意思

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

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


并行光标是什么意思

付费偷看设置
发送
6条回答
SAP浪
1楼-- · 2020-08-26 11:12

并行游标是一种在存在嵌套循环时提高程序性能的技术。

例如:

如果代码包含这种类型的逻辑:

在itab上循环进入wa。

将itab1循环成wa1。

endloop。

endloop。

在上述逻辑中,对于itab的一条记录,表itab1再次循环了很多次。 如果itab包含许多记录,并且同时itab1包含双记​​录,那么这将导致性能问题。

您可以将其修改为

在itab上循环进入wa。

使用键field1 = wa-field1将表itab1读入wa1。

v_tabix = sy-tabix。

如果sy-subrc eq为0。

将itab1从v_tabix循环到wa1。 "它将从该索引开始循环

endloop。

endif。

endloop。

致谢

Kannaiah

我是小鹏鹏啊
2楼-- · 2020-08-26 11:10

嗨,Kannaiah

我看了并行光标技术,但有一个问题。

在您的示例中,您首先 从 itab_01 取一行 wa_01 ,然后调用 itab_02 表,根据< em> wa_01 。 而且只有找到了这样的行,您才会记住一个行索引,当您找到所需的行并在该表中从索引一直传递到结尾时,该索引在 itab_02 中停了下来。

能否请您澄清一下,为什么对表中的第一个匹配项调用 READ TABLE ,对表中的其余行调用 LOOP ,比传递整个函数更便宜 常规 LOOP 的桌子? 换句话说,为什么 READ TABLE 比 LOOP 更便宜?

谢谢。

Baoming ROSE
3楼-- · 2020-08-26 11:03

嗨 ,

并行光标是增加程序性能的技术。 例如,如果我们在程序中使用嵌套选择,而不是对于"添加所有条目",则性能肯定会下降。 同样,如果我们在程序中使用嵌套循环,也会降低性能。

我将举一个例子,例如在一个表中使用开票凭证标题详细信息,在另一个表中使用物料详细信息,假设标题表具有1000条记录,而项目表具有10万条记录。 如果要输出,则需要将嵌套循环放在标头表的第一个循环,然后在项目表的下一个循环。 对于标题记录的每个条目,项目表都会循环10万次。 计算总数。 因此,代替开发并行游标技术,请参阅belwo代码。

在标题上循环。

读取表项,其键号=标头号。

如果sy-subrc = 0。

循环访问sy-tabix中的项目。

如果项目号<>标头号。

退出。

否则。

在这里做一些处理。

endif。

endloop。

endif。

endloop。

首先,使用读取表语句读取项目表,以获取文档编号所在的确切索引号。 如果找到,则从该索引循环浏览项目表,直至项目编号<>标头编号。

Rgds

Bujji

编辑者:布吉(Bujji),2008年6月26日下午12:48

小c菟菟
4楼-- · 2020-08-26 10:58

嗨,

并行游标是一种在存在嵌套循环时提高程序性能的技术。

并行光标的代码:

排序:bkpf_tab BY bukrs belnr gjahr,

bseg_tab BY bukrs belnr gjahr。

bseg_index = 1。

将LOOP AT bkpf_tab插入bkpf_lin。

bkpf_reads = bkpf_reads +1。

在bseg_tab处循环播放,然后从bseg_index进入bseg_lin。

如果bseg_lin-bukrs是<> bkpf_lin-bukrs或

bseg_lin-belnr <> bkpf_lin-belnr或

bseg_lin-gjahr <> bkpf_lin-gjahr。

bseg_index = sy-tabix。

退出。

ELSE。

bseg_reads = bseg_reads +1。

ENDIF。

ENDLOOP。

ENDLOOP。

悠然的二货
5楼-- · 2020-08-26 11:07

并行游标是在嵌套循环时提高性能的技术。

在使用并行游标之前,两个表都应使用键字段进行排序。 在abap代码中使用并行游标时,排序非常重要。 如果不进行排序,您将无法获得并行游标的预期结果。

请检查此帖子,以最简单的方式说明平行光标。

https://www.learnsapabap .com/2018/05/parallel-cursor.html?m = 1

如果有帮助,请奖励。

谢谢。

土豆飞人
6楼-- · 2020-08-26 11:16

如果您使用嵌套循环,则会降低性能。 如果您想提高性能,那么并行游标是解决方案。

例如:

如果代码包含这种类型的逻辑:

在itab上循环进入wa。

将itab1循环成wa1。

endloop。

endloop。

在上述逻辑中,对于itab的一条记录,表itab1再次循环了很多次。 如果itab包含许多记录,并且同时itab1包含双记​​录,那么这将导致性能问题。

您可以使用并行光标查看以下代码。 在这里,我们正在使用二进制搜索读取内部itab1

在itab上循环进入wa。

使用键field1 = wa-field1二进制搜索将表itab1读入wa1。

v_tabix = sy-tabix。

如果sy-subrc eq为0。

将itab1从v_tabix循环到wa1。 "它将从该索引开始循环

endloop。

endif。

endloop。

一周热门 更多>