Szukaj…
Uwagi
Podczas tworzenia pętli na wewnętrznych tablic, to zwykle korzystne jest ASSIGN do symbolu pola niż pętla INTO obszaru roboczego. Przypisanie symboli pól po prostu aktualizuje ich odniesienie, aby wskazywało następny wiersz tabeli wewnętrznej podczas każdej iteracji, podczas gdy użycie INTO powoduje kopiowanie wiersza tabeli do obszaru roboczego, co może być kosztowne w przypadku długich / szerokich tabel.
Wewnętrzna pętla stołu
LOOP AT itab INTO wa.
ENDLOOP.
FIELD-SYMBOLS <fs> LIKE LINE OF itab.
LOOP AT itab ASSIGNING <fs>.
ENDLOOP.
LOOP AT itab ASSIGNING FIELD-SYMBOL(<fs>).
ENDLOOP.
LOOP AT itab REFERENCE INTO dref.
ENDLOOP.
LOOP AT itab TRANSPORTING NO FIELDS.
ENDLOOP.
Pętla warunkowa
Jeśli w pętli powinny być brane tylko linie spełniające określony warunek, można dodać dodanie WHERE .
LOOP AT itab INTO wa WHERE f1 = 'Max'.
ENDLOOP.
Podczas gdy pętla
ABAP oferuje również konwencjonalny WHILE -Loop, który działa, dopóki dane wyrażenie nie zostanie ocenione na false. sy-index pola systemowego będzie zwiększany dla każdego kroku pętli.
WHILE condition.
* do something
ENDWHILE
Do Loop
Bez żadnych dodatków DO Loop działa bez końca lub przynajmniej dopóki nie zostanie jawnie zamknięty od wewnątrz. sy-index pola systemowego będzie zwiększany dla każdego kroku pętli.
DO.
* do something... get it?
* call EXIT somewhere
ENDDO.
Dodatek TIMES oferuje bardzo wygodny sposób powtarzania kodu ( amount reprezentuje wartość typu i ).
DO amount TIMES.
* do several times
ENDDO.
Polecenia ogólne
Aby przerwać pętle, można użyć polecenia EXIT .
DO.
READ TABLE itab INDEX sy-index INTO DATA(wa).
IF sy-subrc <> 0.
EXIT. "Stop this loop if no element was found
ENDIF.
" some code
ENDDO.
Aby przejść do następnego kroku pętli, można użyć polecenia CONTINUE .
DO.
IF sy-index MOD 1 = 0.
CONTINUE. " continue to next even index
ENDIF.
" some code
ENDDO.
Instrukcja CHECK jest CONTINUE z warunkiem. Jeśli warunek okaże się fałszywy , CONTINUE zostanie wykonana. Innymi słowy: Pętla będzie kontynuować krok, tylko jeśli warunek jest spełniony .
Ten przykład CHECK ...
DO.
" some code
CHECK sy-index < 10.
" some code
ENDDO.
... jest równa ...
DO.
" some code
IF sy-index >= 10.
CONTINUE.
ENDIF.
" some code
ENDDO.