嵌套loop性能优化
内表循环嵌套内表
LOOP AT itab1 INTO wa1.
LOOP AT itab2 INTO wa2 WHERE f1 = wa1-f1
AND f3 = wa1-f3.
“………..
ENDLOOP.
ENDLOOP.
以上的性能是很差的,会做很多无谓的循环。
SORT itab2 BY f1 f3.
LOOP AT itab1 INTO wa1.
READ TABLE itab2 WITH KEY f1 = wa1-f1
f3 = wa1-f3 BINARY SEARCH TRANSPORTING NO FIELDS.
IF sy-subrc EQ 0.
v_tabix = sy-tabix.
LOOP AT itab2 INTO wa2 FROM v_tabix.
IF wa2-f1 NE wa1-f1 or wa2-f3 NE wa1-f3. EXIT ENDIF.
*processing or records here
ENDLOOP.
ENDIF.
ENDLOOP.
上面的结构设计做了一些调整,虽然还是双循环,但是加了一些跳跃动作,体会之后会大呼奇妙。

本文探讨了ABAP中内表循环嵌套的性能问题,并提出了一种优化方案。通过对外层循环和内层循环进行调整,利用SORT、BINARY SEARCH及READ TABLE指令减少不必要的循环次数,有效提升了程序效率。
662

被折叠的 条评论
为什么被折叠?



