Problem solve Get help with specific problems with your technologies, process and projects.

Loop and Select 4

Performance improvement of a loop inside a loop, linear vs. exponential.

Here's a methord for achieving performance improvement of a loop inside a loop, i.e. linear vs. exponential.

It may not make a big difference in case of MARA, but for some huge header/detail combos it makes a big difference. The logic in the example has been tried in versions 3.1G, 3.1I, 4.6C, and has worked great in all cases.


data: 
begin of ta1 occurs 0 with header line,
  key1    ....
  data1    ....
end of ta1,
begin of ta2 occurs 0 with header line,
  key1    ...
  key2    ...
  data2
end of ta2,
idx like sy-index.

sort ta1 by key1.
sort ta2 by key1.
idx = 1.
loop at ta1.
  loop at ta2 from idx.
    if ta2-key1 > ta1-key1.
      exit.
    elseif ta2-key1  < ta2-key1.
      continue.
    endif.
    idx = sy-tabix + 1.
  endloop.
endloop.

* you may do some further improvements
* by not transporting all columns 
* I think I got the syntax right !!!

* In a particular example, the 
* difference in run times was several
* hours vs. a few minutes

Dig Deeper on SAP ABAP

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.

-ADS BY GOOGLE

SearchERP

SearchOracle

SearchDataManagement

SearchAWS

SearchBusinessAnalytics

SearchContentManagement

SearchHRSoftware

Close