Recherche…
Remarques
Lorsque le bouclage sur les tables internes, il est généralement préférable de ASSIGN à un symbole de champ plutôt que la boucle INTO une zone de travail. L'affectation de symboles de champ met simplement à jour leur référence pour pointer vers la ligne suivante de la table interne pendant chaque itération, tandis que l'utilisation de INTO entraîne la copie de la ligne de la table dans la zone de travail, ce qui peut être coûteux pour les tables longues / larges.
Boucle de table interne
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.
Bouclage conditionnel
Si seules les lignes correspondant à une certaine condition doivent être insérées dans la boucle, vous pouvez ajouter WHERE .
LOOP AT itab INTO wa WHERE f1 = 'Max'.
ENDLOOP.
En boucle
ABAP propose également le traditionnel WHILE -Loop qui s'exécute jusqu'à ce que l'expression donnée soit évaluée à false. Le champ système sy-index sera augmenté pour chaque étape de la boucle.
WHILE condition.
* do something
ENDWHILE
Do Loop
Sans aucun ajout, DO -Loop s'exécute sans fin ou du moins jusqu'à ce qu'il soit explicitement sorti de l'intérieur. Le champ système sy-index sera augmenté pour chaque étape de la boucle.
DO.
* do something... get it?
* call EXIT somewhere
ENDDO.
L'ajout de TIMES offre un moyen très pratique de répéter le code (le amount représente une valeur de type i ).
DO amount TIMES.
* do several times
ENDDO.
Commandes Générales
Pour casser des boucles, la commande EXIT peut être utilisée.
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.
Pour passer à l'étape suivante, vous pouvez utiliser la commande CONTINUE .
DO.
IF sy-index MOD 1 = 0.
CONTINUE. " continue to next even index
ENDIF.
" some code
ENDDO.
L'instruction CHECK est un CONTINUE avec condition. Si la condition s'avère fausse , CONTINUE sera exécuté. En d'autres termes: la boucle ne poursuivra l'étape que si la condition est vraie .
Cet exemple de CHECK ...
DO.
" some code
CHECK sy-index < 10.
" some code
ENDDO.
... est équivalent à ...
DO.
" some code
IF sy-index >= 10.
CONTINUE.
ENDIF.
" some code
ENDDO.