带有ABAP 7.4的并行光标

2020-08-23 08:43发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)通常,我们使用以下逻辑来实现并行...

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

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


通常,我们使用以下逻辑来实现并行光标

在it_vbak分配上循环
从lv_tabix ASSIGNING在 vbap上循环。
*如果键不相同,则保存索引并退出循环。
如果 -vbeln,则
<> -vbeln。
lv_tabix = sy-tabix。
退出。
ENDIF。
*其余逻辑将从此处开始...
ENDLOOP。
ENDLOOP。

我发现可以使用如下ABAP 7.4语法实现相同的功能:

DATA(lt_final)=值ty_t_final(FOR ls_vbap IN it_vbap
FOR ls_vbak IN it_vbak FROM line_index(it_vbak [vbeln = ls_vbap-vbeln])
vbel(vbeln = ls_vbap-br> = VALUE ty_final(
vbeln = ls_vbak-vbeln)
IN(对应#(BASE(ls_final)ls_vbap)))。

但是,当我比较两者的性能时,前一个比用ABAP 7.4语法实现的要快得多。 有人可以让我知道我是否想念什么吗?

2条回答
大简至美
2020-08-23 09:02

我认为这两个代码不是等效的。

我的意思是,在光标1中,外部LOOP用于VBAK,然后对VBAP执行LOOP。
在7.4版本中,外部LOOP用于VBAP,内部LOOP用于VBAK,也许如果 您按此顺序执行,性能可能会更高一些?

我认为应该是7.4版本,不是吗?

 DATA(it_final)= VALUE ty_t_final(FOR ls_vbak IN it_vbak
           FOR ls_vbap IN it_vbak从line_index(it_vbak [vbeln = ls_vbap-vbeln])哪里(vbeln = ls_vbak-vbeln)LET ls_final = VALUE ty_final(vbeln = ls_vbak-val_s)ap)RES()  

一周热门 更多>