Contenido
1. Iterador FOR para tablas internas
Contenido
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:
Realizamos la lectura en base de datos a dos tablas demo del estándar de SAP: “SFLIGHT” y “SCARR”.
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”.
Activamos y ejecutamos:
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”:
Obtendríamos los mismos resultados:
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:
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:
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:
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:
Hola Laura esta de lujo tu artículo, soy tu fan.
Saludos.
Hola Roberto,
Muchísimas gracias por tu valoración, me alegra mucho que te haya parecido interesante.
Un saludo y ¡éxitos en tu aprendizaje!.
Un artículo para la posteridad, realmente me salvaste la vida.
Laura tienes mas ejemplos como estos? en donde?
Hola Claudio,
Me alegra mucho que te haya ayudado :).
Claro que sí, puedes explorar nuestro blog https://logaligroup.com/blog/ allí encontrarás artículos de diversos temas. Si tienes algún tema del que quieres que hablemos en artículos, nos lo puedes comentar para tenerlo en cuenta.
Un saludo.