Las sentencias DO y WHILE pueden probarse y combinarse con otras formas de bucle. Cada bucle anidado tendrá su propio SY-INDEX creado y supervisado por el sistema.
Sintaxis
La sintaxis para el bucle DO anidado es:
DO [n TIMES].
<statement block n>.
DO [m TIMES].
<statement block m>.
ENDDO.
ENDDO.
Ejemplo
REPORT YS_SEP_15.
Data: a1 type I, b1 type I.
a1 = 0.
b1 = 0.
Do 2 times.
a1 = a1 + 1.
Write: /'Outer', a1.
Do 10 times.
b1 = b1 + 1.
Write: /'Inner', b1.
ENDDo.
ENDDo
El código anterior produce la siguiente salida:
Outer 1
Inner 1
Inner 2
Inner 3
Inner 4
Inner 5
Inner 6
Inner 7
Inner 8
Inner 9
Inner 10
Outer 2
Inner 11
Inner 12
Inner 13
Inner 14
Inner 15
Inner 16
Inner 17
Inner 18
Inner 19
Inner 20
En este ejemplo, el ciclo OD externo se procesa dos veces y el ciclo DO interno se procesa 10 veces, cada vez que se procesa el ciclo DO externo. Entonces, en este caso, el bucle interno se procesa 20 veces.