ABAP LOOPING + LOOP CONTROL.
***********************
* SY-INDEX HOLDS THE NUMBER OF ITERATIONS
DATA: counter3 TYPE I,
multiple TYPE I VALUE 1.
DO 10 TIMES.
counter = SY-INDEX.
DO 10 TIMES.
multiple = counter * SY-INDEX.
WRITE: multiple.
ENDDO.
WRITE: /.
ENDDO.
ULINE.
***********************
* NESTED LOOPS
DATA: counter4 TYPE I,
multiple1 TYPE I VALUE 1.
DO 10 TIMES.
counter = SY-INDEX.
DO counter TIMES.
multiple1 = counter * SY-INDEX.
WRITE: multiple1.
ENDDO.
WRITE: /.
ENDDO.
****************************************************
* while loop
ULINE.
DATA: a TYPE I.
a = 0.
WHILE a <> 8.
Write: / 'This is the line:', a.
a = a + 1.
ENDWHILE.
* FOR KNOWN AMOUNT OF REPETITIONS
* IF WE INITIALIZE COUNTER BEFORE AND INCREMENT IT INSIDE IT IS A FOR.
*
* Structure:
* DO <var|number> TIMES.
* <commands>
* ENDDO.
DO 10 TIMES.
WRITE: / counter.
counter = counter + 1.
ENDDO.
********************************************
* DO LOOP WITH CONDITIONAL
counter = 0.
DO 10 TIMES.
WRITE: / counter.
IF counter >= 7.
charge = charge + ( counter * '9.56' ).
ELSEIF counter >= 5.
charge = charge + ( counter * '6.56' ).
ELSEIF counter >= 3.
charge = charge + ( counter * '3.56' ).
ENDIF.
counter = counter + 1.
ENDDO.
******************************************************
* nested while
ULINE.
DATA: b TYPE I,
c TYPE I.
b = 10.
c = 0.
WHILE b <= 20.
C = 0.
WRITE: b, 'smaller than 20', / .
WHILE c <> 8.
WRITE: / c, 'different than 8'.
c = c + 1.
ENDWHILE.
b = b + 1.
ENDWHILE.
***********************
* NESTED LOOPS
DATA: counter3 TYPE I,
multiple TYPE I VALUE 1.
DO 10 TIMES.
counter = SY-INDEX.
DO 10 TIMES.
multiple = counter * SY-INDEX.
WRITE: multiple.
ENDDO.
WRITE: /.
ENDDO.
ULINE.
***********************
* NESTED LOOPS
DATA: counter4 TYPE I,
multiple1 TYPE I VALUE 1.
DO 10 TIMES.
counter = SY-INDEX.
DO counter TIMES.
multiple1 = counter * SY-INDEX.
WRITE: multiple1.
ENDDO.
WRITE: /.
ENDDO.
***********************************************************
* EXIT STATEMENT
.
DO 5 TIMES.
IF SY-INDEX = 3.
EXIT.
ENDIF.
Write / SY-INDEX.
ENDDO.
********************
* USE OF CONTINUE
DO 15 TIMES.
" SY-INDEX keeps track of how many iterations we had.
WRITE: / 'INSIDE LOOP SY-INDEX', SY-INDEX.
counter = SY-INDEX MOD 3.
WRITE: / counter.
ENDDO.
WRITE: / SY-INDEX.
ULINE.
DO 5 TIMES.
IF SY-INDEX >= 3.
CONTINUE.
ENDIF.
counter = SY-INDEX MOD 3.
WRITE: / counter.
ENDDO.
ULINE.
DO 5 TIMES.
counter = SY-INDEX MOD 3.
WRITE: / counter.
if counter = 0.
CONTINUE.
ENDIF.
ENDDO.
ULINE.
DO 5 TIMES.
counter = SY-INDEX MOD 3.
"WRITE: / counter.
if counter = 0.
CONTINUE.
ENDIF.
WRITE: SY-INDEX.
ENDDO.
ULINE.
DATA remainder TYPE i.
DO 20 TIMES.
remainder = sy-index MOD 2.
IF remainder <> 0.
CONTINUE.
ENDIF.
WRITE / sy-index.
ENDDO.
ULINE.
1. simpledoloop.abap : Shows a simple do / enddo loop.
2. simplewhileloop.abap : Shows a simple while / endwhile loop.
3. syindex.abap : Shows the use of sy-index in loops.
4. loopcontinue.abap : Shows the use of the continue clause in loops.
5. loopcheck.abap : Shows the use of the check clause in loops.
6. loopexit.abap : Shows the use of the exit clause in loops.
7. nesteddo.abap : Shows nested do loops
8. nestedwhile.abap : Shows nested while loops
9. whiledo.abap : Shows nested examples of while / do loops.
*****************************************************
* CHECK CONTROL LOOP
* CHECK statement terminates a loop pass based on a
* condition. If the condition in the CHECK statement
* is evaluated to false then all the remaining statements
* in the statement block after the CHECK statement are
* ignored, and the next loop pass starts. The condition
* in the CHECK statement can be any logical expression.
*The syntax for check statement is −
*CHECK.
*Example
DO 5 TIMES.
CHECK SY-INDEX BETWEEN 3 AND 4.
Write / SY-INDEX.
ENDDO.
**********************************************************
* NESTED WHILE WITH DO
ULINE.
b = 0.
c = 0.
WHILE b < 10.
DO 5 TIMES.
WRITE: c.
c = c + 1.
ENDDO.
b = b + 1.
ENDWHILE.