Informes ALV en SAP Tutorial – Visor de listas ABAP
⚡ Resumen inteligente
Informes ALV en SAPLas listas generadas por el Visor de listas ABAP ofrecen alineación de columnas, ordenación, filtrado, totales y subtotales sin necesidad de programación personalizada. Esta página explica los tipos de lista simples, de bloques y jerárquicas, sus módulos de función REUSE y sus variantes de visualización.

¿Qué es ALV en SAP ABAP?
Las características más comunes que se buscan en cualquier informe son la alineación de columnas, la ordenación, el filtrado, los subtotales, los totales, etc. Implementarlas desde cero requiere mucho trabajo de programación. Para evitarlo, podemos utilizar un concepto llamado ABAP List Viewer (ALV).
Cada uno de estos informes proporciona módulos de funciones que ayudan a producir el resultado deseado sin mucho esfuerzo. Veámoslos en detalle –
El ALV clásico ofrece tres tipos de listas, y cada una tiene su propio conjunto de módulos de función REUSE:
- Informe simple: una tabla interna que se muestra como una lista o una cuadrícula.
- Informe de bloqueo: Varias tablas internas se muestran una debajo de la otra como bloques separados.
- Informe jerárquico: una tabla de encabezados y una tabla de artículos vinculadas por una clave compartida.
Informe simple
Módulos de funciones importantes en estos (reporte) son -
- Reuse_alv_fieldcatalog_merge
- Reutilizar_alv_list_display
- Reutilizar_alv_events_get
- Reutilizar_alv_grid_display
- Reutilizar_alv_commentary_write
REUSE_ALV_FIELDCATALOG_MERGE
Este módulo de funciones se utiliza para completar un catálogo de campos que es esencial para mostrar los datos en ALV.
Si los datos de salida provienen de una única tabla de diccionario y todas las columnas están seleccionadas, entonces no necesitamos crear exclusivamente el catálogo de campos. Es suficiente mencionar el nombre de la tabla como parámetro (I_structure_name) en REUSE_ALV_LIST_DISPLAY. Pero en otros casos necesitamos crearlo.
Nota: El catálogo de campos también se puede completar manualmente completando todos los detalles requeridos en la tabla interna.
Los parámetros importantes son:
1. Exportación:
- I_program_name: identificación del informe
- I_internal_tabname: la tabla de salida interna
- I_inclname: incluye el nombre del informe donde se manejan todos los formularios dinámicos.
2. Cambio
- ct_fieldcat: un mesa interna con el tipo SLIS_T_FIELDCAT_ALV que se declara en el grupo de tipos SLIS.
REUSE_ALV_LIST_DISPLAY
Este es el módulo de función que imprime los datos.
Los parámetros importantes son:
1. Exportación:
- I_callback_program: identificación del informe
- I_bypassing_buffer : 'X'
- I_buffer_activo : ' '
- I_callback_pf_status_set: rutina donde un usuario puede establecer su propio estado de pf o cambiar la funcionalidad del estado de pf existente.
- I_callback_user_command: rutina donde se manejan los códigos de función.
- I_structure name: nombre de la tabla del diccionario
- Is_Layout: estructura para establecer el diseño del informe.
- It_fieldcat: tabla interna con la lista de todos los campos y sus atributos que se van a imprimir (esta tabla puede ser completada automáticamente por la función)
- It_events: tabla interna con una lista de todos los eventos posibles de ALV y sus correspondientes nombres de formulario.
2. Tablas:
- a. t_outtab: tabla interna con los datos a generar
REUTILIZAR_EVENTOS_ALV_OBTENER
Devuelve una tabla de posibles eventos para un tipo de lista
1. Importación:
Et_Eventos:La tabla de eventos se devuelve con todos los eventos CALLBACK posibles para el tipo de lista especificado (columna 'NOMBRE'). Para que la devolución de llamada procese los eventos, se debe completar su campo 'FORMULARIO'. Si el campo se inicializa, el evento se ignora. La entrada se puede leer en la tabla de eventos, llenar el campo 'FORMULARIO' y modificar la entrada utilizando constantes del grupo de tipos SLIS.
2. Exportación:
I_list_type: 0 = lista simple REUSE_ALV_LIST_DISPLAY
1 = lista jerárquica-secuencial REUSE_ALV_HIERSEQ_LIST_DISPLAY
2 = lista de bloqueo simple REUSE_ALV_BLOCK_LIST_APPEND
3 = lista de bloques jerárquica-secuencial REUSE_ALV_BLOCK_LIST_HS_APPEND
REUSE_ALV_GRID_DISPLAY
Una nueva función de la versión ABAP4.6, para mostrar los resultados en una cuadrícula en lugar de una vista previa.
Parámetros: igual que reuse_alv_list_display
Nota: La cuadrícula no puede manejar grandes volúmenes de datos. Funciones como ordenar y desplazarse hacia abajo consumen muchos recursos/tiempo si el volumen de datos a mostrar es elevado. No existe una definición clara que indique que, si la cantidad de datos es X, se deba usar una lista o una cuadrícula; el desarrollador debe tomar una decisión basándose en su experiencia. Si no está seguro, la lista es la mejor opción.
REUSE_ALV_COMMENTARY_WRITE
Esto se utiliza en el evento de inicio de página para imprimir los encabezados y otros comentarios de la lista.
Parámetros importantes
- It_list_commentary: Tabla interna con los encabezados del tipo slis_t_listheader.
Esta tabla interna tiene tres campos:
- Tipo: 'H' - encabezado, 'S' - selección, 'A' - acción
- Clave: solo cuando el tipo es 'S'.
- Información: el texto a imprimir
Ejemplo: Un informe de cuadrícula ALV simple
El programa que se muestra a continuación convierte los módulos de función anteriores en un informe funcional. Lee la tabla de horarios de vuelo SPFLI, crea automáticamente el catálogo de campos y muestra el resultado en una cuadrícula.
REPORT z_alv_demo. TYPE-POOLS: slis. DATA: lt_spfli TYPE STANDARD TABLE OF spfli, lt_fieldcat TYPE slis_t_fieldcat_alv, ls_layout TYPE slis_layout_alv. START-OF-SELECTION. * 1. Read the data into the output table SELECT * FROM spfli INTO TABLE lt_spfli. * 2. Build the field catalog from the dictionary structure CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = sy-repid i_internal_tabname = 'LT_SPFLI' i_structure_name = 'SPFLI' CHANGING ct_fieldcat = lt_fieldcat. * 3. Set the layout and display the grid ls_layout-zebra = 'X'. ls_layout-colwidth_optimize = 'X'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid is_layout = ls_layout it_fieldcat = lt_fieldcat i_save = 'A' TABLES t_outtab = lt_spfli.
Tres parámetros realizan la mayor parte del trabajo. I_STRUCTURE_NAME permite que el catálogo de campos se derive del diccionario, por lo que no es necesario describir manualmente ninguna columna. IS_LAYOUT activa las filas con franjas y optimiza el ancho de las columnas. I_SAVE = 'A' permite guardar variantes de visualización tanto personalizadas como estándar a partir de la lista final.
Informe de bloque
Parece un informe simple, pero tiene las funciones de ordenar y filtrar únicamente. Este informe se utiliza si tiene que mostrar más de un informe en la salida. Técnicamente hablando, si tiene varias tablas internas con datos que se mostrarán como bloques separados, entonces optamos por el informe de bloque de ALV.
Las funciones importantes utilizadas para crear este informe son:
- REUSE_ALV_BLOCK_LIST_INIT
- REUSE_ALV_BLOCK_LIST_APPEND
- REUSE_ALV_BLOCK_LIST_DISPLAY
REUSE_ALV_BLOCK_LIST_INIT
Este módulo de función se utiliza para establecer el estado de la interfaz gráfica de usuario predeterminado, etc. Los parámetros son similares al utilizado en reuse_alv_list_display o reuse_alv_grid_display.
REUSE_ALV_BLOCK_LIST_APPEND
Este módulo de función agrega los datos al bloque.
Parámetros importantes
1.Exportar:
- is_layout: configuración de diseño para el bloque
- it_fieldcat: catálogo de campos
- I_tabname: nombre de la tabla interna con todos los eventos posibles
2.Tablas:
- t_outtab: tabla interna con datos de salida.
REUSE_ALV_BLOCK_LIST_DISPLAY
Este módulo de función muestra la lista con los datos agregados por la función anterior.
Parámetros: Todos los parámetros son opcionales.
Informes jerárquicos
La visualización jerárquica se utiliza para mostrar datos relacionados, como los detalles de los pedidos de venta y los artículos. En este caso, los detalles de los pedidos de venta pueden ser los datos del encabezado, mientras que los artículos del pedido de venta pueden ser los datos del artículo.
El módulo de funciones utilizado para esto es
REUSE_ALV_HIERSEQ_LIST_DISPLAY
Exportar:
- I_CALLBACK_PROGRAM
- I_CALLBACK_PF_STATUS_SET
- I_CALLBACK_USER_COMMAND
- IS_LAYOUT
- it_fieldcat
- es_eventos
- I_tabname_header: Nombre de la tabla interna en el programa que contiene los datos de salida del nivel jerárquico más alto.
- I_tabname_item: Nombre de la tabla interna en el programa que contiene los datos de salida del nivel jerárquico más bajo.
- Is_keyinfo: esta estructura contiene los nombres de los campos de la tabla de elementos y encabezado que vinculan las dos tablas (clave compartida).
Mesas
- t_outtab_header: tabla de encabezado con los datos que se generarán
- t_outtab_item: Nombre de la tabla interna en el programa que contiene los datos de salida del nivel jerárquico más bajo.
Todas las definiciones de tablas internas, estructuras y constantes se declaran en un grupo de tipos llamado SLIS. Esta tabla interna se puede completar automáticamente usando REUSE_ALV_FIELDCATALOG_MERGE’.
Variantes de visualización
- Las variantes de visualización se utilizan para establecer las propiedades predeterminadas de una salida alv, como criterios de clasificación, criterios de filtrado, totalización y subtotalización, etc.
- Las variantes de visualización pueden ser específicas del usuario y estándar (cualquier usuario puede utilizar las variantes estándar)
- El tipo de variantes de visualización que se pueden guardar se controla mediante el parámetro i_save que se pasa a los módulos de función reuse_alv_list_display / reuse_alv_grid_display.
- Puede proporcionar una opción en la pantalla de selección para seleccionar qué variante de visualización se utilizará
Los módulos de funciones comunes relacionados con la selección/validación de variantes de visualización son
- Reuse_alv_variant_default_get
- Reutilizar_alv_variant_f4
- Reutilizar_alv_variant_existencia
💡 Consejo: Pase I_SAVE = 'U' para permitir solo variantes específicas del usuario, 'X' para variantes estándar y 'A' para ambas. Un valor vacío bloquea el guardado por completo.
Eso es todo para ABAP – ¡Programación ALV!
