LOOP Table ABAP

LOOP Table ABAP

LOOP Table ABAP – Esta instrucción realiza una iteración sobre una tabla interna. Ciertamente, recorre cada uno de los registros, y para cada uno de ellos ejecuta un bloque de código. Adicional, podemos filtrar los registros con la adición abap loop where para recorrer las filas que cumplan con cierta condición ABAP.

Para cada iteración, el registro recuperado se almacenará en una estructura ABAP o en un ABAP Field Symbol, el cual contendrá toda la información de este mismo, y bastará con hacer referencia al campo dentro de la estructura que necesitemos. Adicional, en caso de que necesitemos abandonar el ABAP LOOP, contamos con la instrucción EXIT, la cual dará por terminada la iteración y continuará con la siguientes sentencias del programa.

LOOP AT <tab> INTO <wa> WHERE nombre EQ 'Luis'.

  /* Bloque de código

ENDLOOP.

Es importante mencionar que contamos con la variable de sistema sy-index, la cual lleva el indice o posición en la que nos encontramos iterando

ABAP LOOP MODIFY

Muchas veces necesitaremos aplicar un LOOP no solo para leer valores de una tabla interna, sino también para modificarlos, para llevar acabo esta tarea podemos realizarlo de dos maneras. La primera es iterar nuestra tabla interna con una estructura. Una vez que hayamos recuperado los valores de la fila, podremos realizar las modificaciones necesarias. Ej: Hacer un cálculo, alguna conversión o eliminar algún valor. Por último, deberemos utilizar la sentencia ABAP MODIFY, esta nos permitirá actualizar el registro de la tabla interna, asignando los nuevos valores dentro de la estructura.

LOOP AT tab INTO wa.

  /* Cambiar valor del registro

  wa-campo_uno = 'Nuevo Valor'.

  /* Modificamos la tabla interna 

  MODIFY tab FROM wa.

ENDLOOP.

La segunda opción es asignar un ABAP Field Symbol en nuestro loop, y ya que este contendrá una referencia en memoria de los valores de la tabla interna, solo bastará con asignar el nuevo valor a la columna del Field Symbol. Ciertamente, los cambios en la tabla interna se verán inmediatamente reflejados.

LOOP AT tab ASSIGNING FIELD-SYMBOL(<wa>) 

  /* Cambiar valor del registro

  <wa>-campo_uno = 'Nuevo Valor'.

ENDLOOP.

Estructura VS Field Symbol

Es mejor utilizar los Field Symbol cuando el rendimiento es crucial ya que copiar una estructura es mucho más costoso que pasar una referencia. Es decir, cuando los bucles o loops son sobre tablas grandes. Además, al volver a escribir en la tabla interna, el uso de un Field Symbol es más fácil que modificar para volver a copiar los valores en la tabla. Así que indiscutiblemente es preferible utilizarlos antes que una estructura.

Por último, es importante mencionar que actualmente hay nuevas alternativas al ABAP LOOP que pueden llegar a ser más prácticas, como el ABAP FOR. Sin embargo, es deber del desarrollador SAP analizar y determinar en que circunstancias utilizar una u otra.

Documentación SAP

Para más información de esta sentencia, puedes visitar el siguiente enlace.