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.

Web-Links