ABAP FOR IN Expresión De Iteración

ABAP FOR

La sentencia ABAP FOR IN, facilita la iteración sobre conjuntos de datos y la creación de estructuras complejas de manera compacta. Ciertamente, SAP ha incluido la expresión ABAP FOR en su catálogo de instrucciones para las iteraciones. Es importante mencionar que esta expresión cuenta con 2 principales variantes de uso:

  • Iteraciones condicionales, las cuales son realizadas con las condicionales WHILE y UNTILE
  • Iteraciones a tablas, las cuales realizadas con la palabra reservada IN

La expresión ABAP FOR IN puede ser utilizada con los operadores de instancia NEW y VALUE, cuando lo estemos utilizando con tablas internas.

La forma más básica de utilizar esta instrucción ABAP cuando queramos procesar una tabla interna, es la siguiente:

    rt_last_names = value #( 
                       for ls_names in gt_names 
                           ( last_name = ls_names-last_name )
                    ).

ABAP FOR con WHERE

Ahora, supongamos que tenemos una tabla interna llamada t_employees que contiene datos de empleados y queremos crear una tabla interna llamada t_names que contenga solo los nombres de los empleados que tienen un salario mayor a 5000.

DATA(t_names) =                     
  VALUE tt_names(                   
    FOR ls_employee IN t_employees WHERE ( salary > 5000 )  " Itera t_employees y obtén las filas donde el salario es mayor a 5000
    ( ls_employee-name )            "Agrega el campo name a t_names
  ).
  • DATA(t_names): Declara una variable llamada t_names que contendrá datos de tipo tabla y asigna un valor a esta variable.
  • VALUE tt_names: Utiliza el operador VALUE para crear una tabla interna llamada tt_names con valores específicos. tt_names indica el tipo de tabla que se está creando.
  • FOR ls_employee IN t_employees WHERE ( salary > 5000 ): Itera sobre la tabla de empleados t_employees y selecciona solo las filas donde el campo salary es mayor a 5000 utilizando la cláusula WHERE.
  • ( ls_employee-name ): Para cada fila que cumpla con la condición, este código agrega el valor del campo name de esa fila a la tabla interna t_names que estamos construyendo.

Así, el resultado será una tabla interna t_names que contiene solo los nombres de los empleados cuyos salarios son mayores a 5000.

BONUS EXERCISE

Refuerza tus conocimientos en ABAP OO y aplica lo que has aprendido.

Hacemos la creación de un clase ABAP que se llame zcl_iterator_object.

ABAP FOR

Declaramos en la sección pública nuestra interface ABAP if_oo_adt_classrun, e implementamos el método main si estás utilizando un entorno On Cloud.

Creamos un ABAP Data Type en nuestra sección pública con dos campos, uno que corresponda al nombre y otro al apellido. Además, creamos un tipo de tabla que corresponda a esta estructura.

Creamos otro ABAP data type que solo cuente con un campo de tipo string con el nombre last_names. De igual forma, crearemos su respectivo tipo ABAP standard table type.

Ahora, vamos a declarar un atributo del tipo de dato tt_names, en la sección privada. Después, implementamos el método constructor ABAP y llenaremos nuestro atributo global con unos cuantos registros, utilizando el operador ABAP VALUE.

Este es el momento en el que vamos a utilizar la sentencia ABAP FOR. Creamos un método ABAP que retorne una tabla del tipo tt_last_name, el cual creamos en uno de los pasos anteriores. Seguidamente, aplicamos la sentencia con la expresión FOR.

ABAP FOR

Esta instrucción retornará únicamente los apellidos de la tabla interna gt_names.

Por último, hay que crear una instancia ABAP de nuestra clase en nuestro método principal, para poder llamar al método get_last_names, almacenando los valores de retorno en una variable global.

ABAP FOR

Código Ejemplo

Documentación Oficial SAP

Para más información sobre el uso de la expresión ABAP FOR, puedes visitar el siguiente enlace con la documentación oficial de SAP