
Los bucles en ABAP se definen en un bloque de código que se ejecuta varias veces.
La forma más simple de bucles consiste en un bloque de códigos rodeado de sentencias DO – ENDDO. Sin más medidas, estas afirmaciones podrían establecer un bucle sin fin que debe evitarse con una de las siguientes posibilidades:
- Número especificado de bucles
- Al ampliar la sentencia DO con una expresión de número entero seguida de la palabra clave TIMES, puede especificar explícitamente la frecuencia con la que se debe procesar el bloque de código. La expresión de enteros puede ser tan simple como un literal numérico, pero también se pueden utilizar cálculos aritméticos. Si el valor de la expresión es igual a 0, el bloque de código entre DO y ENDDO no se ejecuta en absoluto, y el programa continúa inmediatamente con el código después del ENDDO.
- Cancelación basada en una condición lógica
- Puede cancelar un loop en cualquier momento utilizando la sentencia EXIT. A continuación, el programa continúa con el código después de ENDDO. Tenga en cuenta que fuera del loop EXIT tiene un efecto diferente. Allí se cancela el procesamiento del bloque de procesamiento actual, por ejemplo, el método actual.
Normalmente, EXIT está rodeado por IF y ENDIF para finalizar el loop en función de una condición de cancelación. Tenga en cuenta que estos bucles pueden convertirse en bucles sin fin si la condición de abortar nunca es verdadera.
Por supuesto, es posible combinar las dos técnicas, es decir, especificar explícitamente el número de bucles y luego dejar el bucle con EXIT. Por lo tanto, el número de loops se convierte en un número máximo que puede que no se alcance en el tiempo de ejecución.
En el bloque de código entre DO y ENDDO, puede implementar accesos de lectura al objeto de datos integrado ABAP SY-INDEX. Esta variable entera sirve como contador de loop, es decir, el tiempo de ejecución ABAP aumenta la variable en uno al principio de cada bucle nuevo.
La variable incorporada ABAP SY-TABIX puede cumplir un propósito similar para los bucles. Pero tenga en cuenta que SY-TABIX no es realmente un contador, pero identifica la posición de la fila de la tabla que se procesa en el bucle actual.