As instruções DO e WHILE podem ser testadas, bem como combinadas com outras formas de loop. Cada loop aninhado terá seu próprio SY-INDEX criado e monitorado pelo sistema.
Sintaxe
A sintaxe do loop DO aninhado é -
DO [n TIMES].
<statement block n>.
DO [m TIMES].
<statement block m>.
ENDDO.
ENDDO.
Exemplo
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
O código acima produz a seguinte saída -
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
Neste exemplo, o loop DO externo é processado duas vezes e o loop DO interno é processado 10 vezes, cada vez que o loop DO externo é processado. Portanto, neste caso, o loop interno é processado 20 vezes.