En este artículo, vamos a entrar a hablar de la técnica para crear ALVs dinámicos mediante un ejemplo práctico.

Al realizar un programa Z, podemos mostrar el resultado a través de un ALV ajustado a las necesidades que se requieran. Usando dicha herramienta, existe la opción de crear un ALV dinámico.  Un ALV dinámico nos da la opción de ir generando tantas columnas como datos recupere durante la ejecución.

En este caso, se mostrarán un número máximo de columnas generadas dinámicamente en base por ejemplo a el documento que tenga más posiciones. Es decir, si encuentra 5 documentos y cada documento tiene varias posiciones, y uno de ellos tiene 4 posiciones y el resto menos, se mostrarán 4 columnas generadas dinámicamente.

Se puede aplicar a otras lógicas y no sólo a documentos y posiciones.

Para este ejemplo se han usado las tablas SCARR y SFLIGHT. Se mostrarán por compañía los números de vuelos totales por columna, siendo el número de vuelos totales que tenga una compañía el número máximo de las columnas que se generarán.

La clave a usar sería:

cl_alv_table_create

Las columnas a mostrar serán, id de la compañía, nombre de la compañía y la moneda de la tabla SCARR y los campos número de vuelo y fecha de vuelo serán los que se crearán dinámicamente.

En el programa que hemos creado para realizar el ejemplo, en la pantalla de selección insertamos el id de la compañía:

El resultado de la ejecución sería este:

De la compañía DL hay 3 vuelos y AA tiene 2, mostrando así el máximo número de vuelos.

De la compañía AA, hay varios vuelos en distintas fechas. Nos quedamos con el vuelo más reciente, teniendo así un único vuelo.

Para la compañía DL hacemos lo mismo.

Otro ejemplo más para ver que se está haciendo el ALV dinámico:

En esta ocasión se muestran los cinco vuelos que tiene la compañía LH.

Esperamos que estos ejemplos te hayan sido de utilidad para entender qué posibilidades nos da un ALV dinámico y en qué casos de uso tiene sentido utilizarlos. No dudes en exponer tus dudas en comentarios o contactar con nosotros.