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.


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow