Schlüsselbefehl Loop
Aus SAP-Wiki
Zur Navigation springenZur Suche springen
Der Loop-Befehl liest über eine interne Tabelle und ist sehr mächtig.
Nutzung Field-Symbol
Es ist häufig schneller ein Field-Symbol beim Loop über eine interne Tabelle zu nutzen. Es wird hier nur ein Zeiger auf die Tabelle gesetzt und nicht jeweils eine Zeile in die Workarea kopiert beim Loop. Man spart sich auch den Modify-Befehl, wenn eine Tabellenzeile geändert wird.
Data: lt_kna1 type STANDARD TABLE OF kna1. Field-Symbols: <fs_kna1> type kna1. Select * into table lt_kna1 from kna1. loop at lt_kna1 assigning <fs_kna1>. ... endloop.
Where-Bedingung
Bei einem Loop über eine interne Tabelle sollten nur die Datensätze durchlaufen werden, die auch benötigt werden.
loop at lt_kna1 assigning <fs_kna1> where land1 = 'DE'. ... endloop.
Exit und Continue
Wird innerhalb eines Loops der Exit-Befehl eingegeben, wird der Loop verlassen.
loop at lt_kna1 assigning <fs_kna1>. if ... exit. "Schleife wird verlassen endif. endloop.
Bei einem Continue-Befehl wird der nächsten Datensatz der Loop-Schleife durchlaufen.
loop at lt_kna1 assigning <fs_kna1>. if ... continue. "Schleife wird mit nächstem Datensatz fortgesetzt endif. endloop.
Gruppenstufenwechsel
Data: lt_kna1 type STANDARD TABLE OF kna1. Field-Symbols: <fs_kna1> type kna1. Select * into table lt_kna1 from kna1. sort lt_kna1 by land1. loop at lt_kna1 assigning <fs_kna1>. at first. BREAK-POINT. "stoppt beim ersten Datensatz itab ENDAT. at new land1. BREAK-POINT. "stoppt bei einem neuen Land (nur wenn alle Felder links von LAND1 gleich sind) endat. at end of land1. BREAK-POINT. "stoppt beim letzten Datensatz eines jeden Landes (nur wenn alle Felder links von LAND1 gleich sind) endat.
at last. break-point. "stoppt beim letzten Datensatz itab ENDAT. endloop.
Die Befehle "at new" und "at end" sind veraltet, bzw. obsolet.