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
This was first published in October 2002