<html>
<head> <title>LOOP ENDLOOP</title> </head> <BODY BGCOLOR="#000000" TEXT="#FFFFFF" LINK="#0099FF" VLINK="#AA0000"> <p align="left">⚠ <b>
<span class="titulo">LOOP .. ENDLOOP</span>⚠ </b>
</p>
<p align="left">⚠ <b>
Definicin⚠ </b>
</p>
<p align="left">Esta sentencia
lee una tabla interna lnea a lnea a travs de un bucle de lectura. Permite realizar un bucle en una tabla de pantalla.</p>
<p align="left">⚠ <b>
Sintaxis:⚠ </b>
</p>
<li> <p align="left">Con la clusula INTO <rea-trabajo> especificamos un rea de trabajo, la cual se convierte en el rea de destino. En el caso de tablas con cabeceras de lnea, esta clusula es opcional. La tabla interna <tabla> se lee lnea a lnea sobre <rea-trabajo> (si se especifica) o sobre el rea de trabajo de la tabla <tabla>. Por cada lnea leda el sistema procesa el bloque de sentencias del bucle LOOP .. ENDLOOP. Con la sentencia AT se puede controlar el flujo de bloque de sentencias. Mientras se procesa el bloque de sentencias, la variable SY-TABIX contiene el ndice de la actual lnea tratada. El bucle termina en cuanto se han ledo todas las lneas de la tabla interna. Despus de salir del bucle, la variable SY-SUBRC ser 0 si al menos una lnea ha sido leda, si no, tendr el valor 4. </li> <li> <p align="left">Se puede restringir el nmero de lneas para leer, con las clusulas FROM, TO y WHERE. Con la clusula FROM, en <n1> especificamos el ndice desde donde comenzaremos la lectura. Con la clusula WHERE especificamos cualquier expresin lgica en <condicin>. El primer operando de la expresin lgica debe ser un componente de la estructura de la lnea. No se puede utilizar la clusula WHERE si en el bloque de proceso se utiliza la sentencia AT. Con las clusulas FROM y TO limitamos las lecturas de la tabla interna, mientras que con la clusula WHERE leemos todas las entradas para poder aplicar la expresin lgica. Por razones de optimizacin, y siempre que podamos, se debe utilizar las clusulas FROM y TO. </li>
</ul>
<pre>LOOP [ WITH CONTROL <tabla-control> ] ... ENDLOOP.</pre> <p>Esta variante permite realizar un bucle sobreuna tabla de pantalla. La tabla de pantalla puede ser una tabla de control, y si es as, se debe utilizar la clusula WITH CONTROL.</p>
<pre>LOOP AT <tabla> CURSOR <cursor> [ WITH CONTROL <tabla-control> ]
[ FROM <lnea1> ] [ TO <lnea2> ]. ... ENDLOOP.</pre> <p>Esta variante nos permite rellenar los camposde la tabla de pantalla a travs de campos de una tabla interna. El significado de las clusulas es el siguiente:</p>
<ul>
<li>CURSOR define el cursor de la tabla interna.</li> <li>WITH CONTROL define una tabla de control.</li> <li>FROM define la lnea desde donde realizamos el traspaso de datos.</li> <li>TO define la lnea lmite de asociacin con la tabla de la pantalla.</li>
</ul>
<p>⚠ <b>
Ejemplo 1:⚠ </b>
</p>
<pre>DATA: BEGIN OF T OCCURS 100,
BAREA(5), BLNCE(5), END OF T.</pre>
<pre>LOOP AT T FROM 7 TO 8.
WRITE: / T-BAREA, T-BLNCE.
ENDLOOP.</pre>
<p>⚠ <b>
Ejemplo 2:⚠ </b>
</p>
<pre>DATA: BEGIN OF T OCCURS 100,
BAREA(5), BLNCE(5), END OF T.
DATA CMP_BAREA LIKE T-BAREA.
CMP_BAREA = '01'. LOOP AT T WHERE BAREA = CMP_BAREA.WRITE: / T-BAREA, T-BLNCE.
ENDLOOP.</pre>
<p>⚠ <b>
Vase tambin: ⚠ </b>
⚠ <a href="append.htm" tppabs="append.htm">
APPEND⚠ </a>
,
⚠ <a href="insert.htm" tppabs="insert.htm">
INSERT⚠ </a>
,⚠ <a href="collect.htm" tppabs="collect.htm">
COLLECT⚠ </a>
,⚠ <a href="modify.htm" tppabs="modify.htm">
MODIFY⚠ </a>
,⚠ <a href="delete.htm" tppabs="delete.htm">
DELETE⚠ </a>
,⚠ <a href="sort.htm" tppabs="sort.htm">
SORT⚠ </a>
,⚠ <a href="read_table.htm" tppabs="read_table.htm">
READ TABLE⚠ </a>
.</p>
<p> </p>
</body>
</html>