‎2007 Jul 26 5:45 AM
Hello,
I have a nested loop which loops through two itabs. Since there are too many records in both the itabs it is taking too much of time. Could anyone please suggest some ways to improve this code so that it takes less time.
Two itabs are itab1 and itab2.
LOOP AT itab1.
CLEAR L_TABIX.
APPEND itab1 TO vsel.
READ TABLE itab2 WITH KEY cuobj = itab1-cuobj binary search.
IF sy-subrc NE 0.
CONTINUE.
ELSE.
l_tabix = sy-tabix.
LOOP AT itab2 FROM l_tabix.
IF itab2-cuobj NE itab1-cuobj.
EXIT.
ENDIF.
READ TABLE ymodes WITH KEY mode = itab2-mode.
IF sy-subrc EQ 0.
IF itab2-wtsta NE ' ' AND
CLEAR itab2-wtsta.
ENDIF.
APPEND itab2 TO wsel.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
Thanks in advance
Sudha Naik
‎2007 Jul 26 5:59 AM
Hi,
sort itab2 by cuobj.
sort ymodes by mode.
LOOP AT itab1.
APPEND itab1 TO vsel.
READ TABLE itab2 WITH KEY cuobj = itab1-cuobj binary search.
if sy-subrc eq 0.
READ TABLE ymodes WITH KEY mode = itab2-mode
if sy-subrc eq 0.
LOOP AT itab2 itab2-cuobj eq itab1-cuobj.
if itab2-wtsta NE ' '.
cLEAR itab2-wtsta.
ENDIF.
APPEND itab2 TO wsel.
endif.
ENDLOOP.
ENDIF.
endif.
endloop.
aRs
‎2007 Jul 26 5:48 AM
hi Sudha,
1. Sort the internal tables with all the key fields
2. use Binary Search for your second read statement too.
3. Include all the key fields in the read statement.
Regards,
Santosh
‎2007 Jul 26 5:59 AM
Hi,
sort itab2 by cuobj.
sort ymodes by mode.
LOOP AT itab1.
APPEND itab1 TO vsel.
READ TABLE itab2 WITH KEY cuobj = itab1-cuobj binary search.
if sy-subrc eq 0.
READ TABLE ymodes WITH KEY mode = itab2-mode
if sy-subrc eq 0.
LOOP AT itab2 itab2-cuobj eq itab1-cuobj.
if itab2-wtsta NE ' '.
cLEAR itab2-wtsta.
ENDIF.
APPEND itab2 TO wsel.
endif.
ENDLOOP.
ENDIF.
endif.
endloop.
aRs