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.

  • 📋 Propósito principal: El visor de listas ABAP proporciona las funciones de lista estándar a través de módulos de función predefinidos, por lo que nunca es necesario programarlos de nuevo.
  • 🗂️ Catálogo de campo: REUSE_ALV_FIELDCATALOG_MERGE crea el catálogo que describe cada columna de salida, y también se puede rellenar manualmente.
  • 🖥️ Lista y cuadrícula: REUSE_ALV_LIST_DISPLAY imprime una lista clásica, y REUSE_ALV_GRID_DISPLAY muestra los mismos datos en un control de cuadrícula.
  • 🧱 Informe de bloqueo: Las funciones INIT, APPEND y DISPLAY combinan varias tablas internas en una única salida compuesta por bloques separados.
  • ???? Informe jerárquico: REUSE_ALV_HIERSEQ_LIST_DISPLAY vincula una tabla de encabezado y una tabla de elementos a través de la clave compartida en IS_KEYINFO.
  • 🧰 Tipo de grupo SLIS: Cada estructura, tipo de tabla y constante utilizada por el ALV clásico se declara en el conjunto de tipos SLIS.
  • 💾 Variantes de visualización: Una variante almacena los valores predeterminados de ordenación, filtrado y totalización, y el parámetro I_SAVE decide si son específicos del usuario o estándar.

Informes ALV en SAP ABAP

¿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:

  1. Tipo: 'H' - encabezado, 'S' - selección, 'A' - acción
  2. Clave: solo cuando el tipo es 'S'.
  3. 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

  1. Reuse_alv_variant_default_get
  2. Reutilizar_alv_variant_f4
  3. 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!

Preguntas Frecuentes

Los módulos REUSE pertenecen al ALV clásico basado en funciones. CL_GUI_ALV_GRID es el control orientado a objetos que está integrado en un contenedor personalizado en una dynpro y ofrece celdas editables y manejo de eventos a través de métodos.

Configure DO_SUM en el catálogo de campos para la columna que se debe sumar y pase una tabla de ordenación con SUBTOT activado para la columna que agrupa las filas. No se necesita código de cálculo adicional.

Pase el nombre de un formulario a I_CALLBACK_USER_COMMAND. El formulario recibe el código de función y la fila seleccionada, de modo que el programa puede leer el registro y abrir una lista de detalles o una transacción.

Sí. Los asistentes de IA en las herramientas de desarrollo ABAP generan la sentencia SELECT, el catálogo de campos y la llamada a REUSE_ALV_GRID_DISPLAY a partir de una descripción de las columnas requeridas. La sentencia SELECT generada aún necesita una comprobación de rendimiento.

No. ALV sigue siendo la salida estándar de SAP Informes de interfaz gráfica de usuario (GUI). Los asistentes de IA añaden valor resumiendo listas extensas, detectando valores atípicos y respondiendo preguntas sobre los datos mostrados en lenguaje sencillo.

Resumir este post con: