DRABAP hat geschrieben:Der COLLECT ist eigentlich eher zum Verdichten von numerischen Felder des Zeilentyp gedacht (die nicht Teil des Schlüssels sind). Wenn ich das Problem richtig verstanden habe könnte auch ein Loop helfen. Beispiel
- Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
LOOP AT itab
WHERE condition. ...
- GeSHi ©
Meinst Du LOOP AT temp_itab WHERE ... innerhalb von LOOP AT itab ...?
Und die sy-tabix-Abfrage nach ENDLOOP habe ich auch nicht ganz verstanden.
(Wenn es auch Einträge in itab gibt ohne passende Einträge in temp_itab (also temp_itab ohne zur WHERE-Bedingung passende Einträge), wird SY-TABIX nicht verändert.
COLLECT in eine neue Tabelle ist je nach Anzahl Einträge in den beiden Tabellen (und Anzahl von Wiederholungen in temp_itab) effektiver als die von Dir vorgeschlagene Lösung (vorausgesetzt, ich habe sie halbwegs richtig interpretiert), da nur einmal über temp_itab geloopt werden muß. Die F1-Hilfe zu COLLECT sollte man dazu aber unbedingt mal gelesen haben.
Anders sieht es aus, wenn beide itabs sowieso schon entsprechend sortiert sind.
Da gibt es in der SE30 unter Tipps&Tricks entsprechende Hinweise, wie man die itabs noch effektiver prozessieren könnte. (Im Prinzip nur ein LOOP über itab und innerhalb der LOOP mit READ TABLE temp_itab INDEX ... ab zuletzt prozessiertem Index von temp_itab weitermachen.)
Frank