W Pub: ABAP Cursosentencialoopendloop

<html>

<head>

<title>LOOP ENDLOOP</title>

</head>

<BODY BGCOLOR="#000000" TEXT="#FFFFFF" LINK="#0099FF" VLINK="#AA0000">

<p align="left">⚠ &lt;b&gt;<span class="titulo">LOOP .. ENDLOOP</span>⚠ &lt;/b&gt;</p>

<p align="left">⚠ &lt;b&gt;Definicin⚠ &lt;/b&gt;</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">⚠ &lt;b&gt;Sintaxis:⚠ &lt;/b&gt;</p>

<pre>LOOP AT <tabla> [ INTO <rea-trabajo> ] [ FROM <n1> ] [ TO <n2> ]

[ WHERE <condicin> ].

...

ENDLOOP.</pre>

<ul>

  <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 sobre

  una 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 campos

  de 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>⚠ &lt;b&gt;Ejemplo 1:⚠ &lt;/b&gt;</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>⚠ &lt;b&gt;Ejemplo 2:⚠ &lt;/b&gt;</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>⚠ &lt;b&gt;Vase tambin: ⚠ &lt;/b&gt;⚠ &lt;a href="append.htm" tppabs="append.htm"&gt;APPEND⚠ &lt;/a&gt;,

  ⚠ &lt;a href="insert.htm" tppabs="insert.htm"&gt;INSERT⚠ &lt;/a&gt;, ⚠ &lt;a href="collect.htm" tppabs="collect.htm"&gt;COLLECT⚠ &lt;/a&gt;, ⚠ &lt;a href="modify.htm" tppabs="modify.htm"&gt;MODIFY⚠ &lt;/a&gt;, 
  ⚠ &lt;a href="delete.htm" tppabs="delete.htm"&gt;DELETE⚠ &lt;/a&gt;, ⚠ &lt;a href="sort.htm" tppabs="sort.htm"&gt;SORT⚠ &lt;/a&gt;, ⚠ &lt;a href="read_table.htm" tppabs="read_table.htm"&gt;READ 
  TABLE⚠ &lt;/a&gt;.</p>

<p> </p>

</body>

</html>