
Les boucles dans ABAP sont définies dans un bloc de code qui est exécuté plusieurs fois.
La forme la plus simple des boucles est constituée d'un bloc de code entouré d'instructions DO – ENDDO. Sans mesures supplémentaires, ces instructions pourraient établir une boucle sans fin qui doit être évitée par l'une des possibilités suivantes :
- Nombre indiqué de boucles
- En étendant l'instruction DO avec une expression entière suivie du mot-clé TIMES, vous pouvez indiquer explicitement la fréquence de traitement du bloc de code. L'expression entière peut être aussi simple qu'un littéral de nombre, mais aussi des calculs arithmétiques peuvent également être utilisés. Si la valeur de l'expression est égale à 0, le bloc de code entre DO et ENDDO n'est pas du tout exécuté et le programme continue immédiatement avec le code après l'ENDDO.
- Interruption basée sur une condition logique
- Vous pouvez interrompre une boucle à tout moment à l'aide de l'instruction EXIT. Le programme poursuit ensuite avec le code après ENDDO. Notez qu'en dehors de la boucle, EXIT a un effet différent. Il y interrompt le traitement du bloc de traitement actuel, par exemple la méthode actuelle.
En règle générale, EXIT est entouré de IF et ENDIF pour terminer la boucle en fonction d'une condition d'interruption. Sachez que de telles boucles peuvent se transformer en boucles infinies si la condition d'abandon n'est jamais vraie.
Bien entendu, il est possible de combiner les deux techniques, c'est-à-dire de spécifier explicitement le nombre de boucles puis de quitter la boucle avec EXIT. Par conséquent, le nombre de boucles devient un nombre maximal qui pourrait ne pas être atteint au moment de l'exécution.
Dans le bloc de code entre DO et ENDDO, vous pouvez implémenter des accès en lecture à l'objet de données intégré ABAP SY-INDEX. Cette variable entière sert de compteur de boucles, c'est-à-dire que la durée d'exécution ABAP augmente la variable de un au début de chaque nouvelle boucle.
La variable intégrée ABAP SY-TABIX peut remplir un objectif similaire pour les boucles. Notez cependant que SY-TABIX n'est pas vraiment un compteur, mais qu'il identifie la position de la ligne de table qui est traitée dans la boucle actuelle.