LOOP - Loops on an internal table
Basic form
LOOP AT itab.LOOP AT itab INTO wa.
Additions
1. ... FROM n1
2. ... TO n2
3. ... WHERE logexp
4. ... TRANSPORTING NO FIELDS
Effect
Processes an internal table (DATA ) in a loop which begins with LOOP and ends with ENDLOOP . Each of the internal table entries is sent to the output area in turn.When LOOP AT itab. is used, the header line of the internal table itab is used as output area. In the case of LOOP AT itab INTO wa , there is an explicitly specified work area wa .
If the internal table is empty, all the statements between LOOP and ENDLOOP are ignored.
In each loop pass, SY-TABIX contains the index of the current table entry. After leaving a LOOP , SY-TABIX has the same value as it had before.
Inserting and/or deleting lines in a LOOP affects subsequent loop passes.
For control break processing in a LOOP on internal tables, there are special control break control structures for internal tables you can use.
You can use the CONTINUE statement to leave the current loop pass prematurely and continue with the next loop pass. To leave loop processing altogether, you use EXIT .
At the end of loop processing (i.e. after ENDLOOP ), the return code value of SY-SUBRC specifies whether the loop was actually processed.
SY-SUBRC = 0 The loop was executed at least once.
SY_SUBRC = 4 The loop was not executed, either because there was no entry at all or because there was no entry which satisfied the conditions.
Example
The table T is defined as follows:- DATA: BEGIN OF T OCCURS 100, BAREA(2), BLNCE TYPE P, END OF T.
After the table has been filled with data (using APPEND ), it is then output:
- LOOP AT T. WRITE: / T-BAREA, T-BLNCE. ENDLOOP.
Notes
If an internal table is processed only on a restricted basis (with the additions FROM , TO and /or WHERE ), you should not use the control structures for control break processing because the interaction of a restricted LOOP and the AT statement is undefined at present.If SUM is used in a LOOP and an explicit output area wa has also been specified, this output area must be compatible with the line type of the internal table itab .
Addition 1
... FROM n1Addition 2
... TO n2Effect
Places all internal table entries from the entry with the index ( SY-TABIX ) = n1 to the entry with the index = n2 inclusive in the output area in turn.Note
If either one of the additions " FROM n1 " or " TO n2 " is missing, then the table is processed either from the first entry or up to the last entry (according to what is missing).Example
Output table entries 7 and 8:- DATA: BEGIN OF T OCCURS 100, BAREA(5), BLNCE(5), END OF T. LOOP AT T FROM 7 TO 8. WRITE: / T-BAREA, T-BLNCE. ENDLOOP.
Addition 3
... WHERE logexpEffect
Places all internal table entries which satisfy the condition logexp in turn in the output area. The condition logexp can be almost any logical expression . The only restriction is that the first field for each comparison must be a sub-field of the line structure of the internal table itab .Example
- DATA: BEGIN OF T OCCURS 100, BAREA(5), BLNCE(5), END OF T. LOOP AT T WHERE BAREA > 0. WRITE: / T-BAREA, T-BLNCE. ENDLOOP.
which has the same effect as:
- LOOP AT T. CHECK T-BAREA > 0. WRITE: / T-BAREA, T-BLNCE. ENDLOOP.
Notes
The interaction between the LOOP AT ... WHERE statement and the AT control break statements is currently undefined. It is therefore important to avoid using either the AT NEW/END OF or FIRST/LAST statements in a LOOP loop with a WHERE condition.The performance of a LOOP AT ... WHERE statement can be improved significantly if the fields to be compared always have the same data type. The comparison fields should be defined as follows:
DATA
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.