FOR y LOOP para tablas internas

FOR y LOOP para tablas internas

Contenido

1.     Iterador FOR para tablas internas

2.     FOR con expresión LET

3.     FOR de forma anidada

1. Iterador FOR para tablas internas

Desde la versión de ABAP 7.40 se introdujo al lenguaje de programación el uso del operador de iteración “FOR”.

Comencemos trabajando con el iterador FOR para transferir datos de una tabla interna a otra.

Creamos un programa ejecutable en SAP GUI mediante la transacción “SE38” o Eclipse.

Lo primero que realizamos es la declaración de un tipo local, que contenga 4 campos y declaramos una tabla interna de tipo estándar utilizando este tipo local:

01
FOR y LOOP para tablas internas 12

Realizamos la lectura en base de datos a dos tablas demo del estándar de SAP: “SFLIGHT” y “SCARR”.

02
FOR y LOOP para tablas internas 13

Ya con los datos en tiempo de ejecución dentro de las tablas internas, utilizamos el operador FOR para llenar de datos la tabla interna “LT_FLIGHT2”.

La utilización de la variable “LV_INDEX” es opcional, esta la usamos para almacenar el índice en donde se encuentran los registros que cumple con las condiciones establecidas.

En el iterador “FOR” asignamos el valor de cada campo de la tabla interna.

NUM = Corresponde a la variable que almacena el índice “LV_INDEX”

CARRNAME = Realizamos un “READ TABLE” sobre la tabla interna “LT_SCARR1”.

CONNID = Corresponde al campo “CONNID” de la estructura “LS_FLIGHT1”.

FLDATE = Corresponde al campo “FLDATE” de la estructura “LS_FLIGHT1”.

03
FOR y LOOP para tablas internas 14

Activamos y ejecutamos:

04
FOR y LOOP para tablas internas 15

De esta manera, llenamos de datos la tabla interna “LT_FLIGHTS2”, utilizando el iterador “FOR” y el contenido de otras dos tablas internas.

De forma comparativa, este FOR, es otra forma que ha implementado ABAP desde la versión 7.4, pero podríamos realizar la misma operación utilizando el iterador “LOOP”:

05
FOR y LOOP para tablas internas 16

Obtendríamos los mismos resultados:

06
FOR y LOOP para tablas internas 17

La ventaja de utilizar el iterador “FOR”, para esta clase de operaciones, es que podemos utilizar adicionalmente, diferentes operadores dentro de la misma instrucción, también, aplicamos un código más limpio y claro.

1. FOR con expresión LET

Como lo mencionamos anteriormente, con el iterador “FOR”, podemos utilizar múltiples expresiones u operadores, como por ejemplo “LET”, que la utilizamos para definir variables y asignarlas a los campos de la tabla que recibirá los datos en tiempo de ejecución. Lo aplicamos de la siguiente manera:

07
FOR y LOOP para tablas internas 18

En este ejercicio estamos filtrando los resultados por el campo “CARRID” y “CONNID”. Aplicamos también la sentencia “LET” para guardar en una variable el resultado del “READ TABLE” realizado sobre la tabla interna “LT_SCARR1”.

De esta manera, llenamos todos los campos de la tabla interna “LT_FLIGHTS2”.

En la ejecución obtendríamos los siguientes resultados:

08 1
FOR y LOOP para tablas internas 19

El resultado del campo “NUM” es según la posición de donde haya encontrado el registro.

1. FOR de forma anidada

Con el iterador “FOR” también podemos realizar varias anidaciones, como con “LOOP”, en otras palabras, una iteración dentro de otra iteración.

Esto lo realizaríamos de la siguiente manera:

09
FOR y LOOP para tablas internas 20

En esta última utilización del “FOR” de forma anidada, rellenamos la tabla interna iterando la tabla “LR_SCARR1” y luego basados en estos resultados, iteramos la segunda tabla “LT_FLIGHTS1”, filtrando por el campo “CARRID”.

Luego accedemos a cada uno de los campos y les asignamos cada valor.

Resultados:

10
FOR y LOOP para tablas internas 21

2 comentarios de “FOR y LOOP para tablas internas

  1. Laura dice:

    Hola Roberto,
    Muchísimas gracias por tu valoración, me alegra mucho que te haya parecido interesante.
    Un saludo y ¡éxitos en tu aprendizaje!.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Suscríbete al blog
Recibe las últimas actualizaciones y contenidos exclusivos directamente en tú correo electrónico.
Inscribime
close-link