Práctico CL_GUI_ALV_GRID Wrapper. SAP ABAP ALV LISTADO.

CL_SALV_TABLE o CL_GUI_ALV_GRID ¿Qué clase es mejor utilizar en 2021?

Probablemente los viejos abapers recuerdan que hace más de décadas que hubo un cambio de la «anticuada» clase CL_GUI_ALV_GRID y los módulos de función ‘REUSE*’ hacia la nueva clase actualizada y de estilo OOP CL_SALV_TABLE. En 2020 decidí retroceder a CL_GUI_ALV_GRID. En el pequeño artículo de abajo intento explicar por qué tomé esa decisión. Y no está relacionado con la nostalgia.

Una de las razones para usar CL_SALV_TABLE fue la pequeña cantidad de código comparado con CL_GUI_ALV_GRID. Además, no había necesidad de crear nuevas pantallas y contenedores para mostrar una cuadrícula. Pero entonces se introdujo la nueva sintaxis 7.40 y el paso de parámetros a cualquier método a través de estructuras y tablas se simplificó drásticamente. Decidí llenar un vacío y sólo añadir la funcionalidad de pantallas anidadas para CL_GUI_ALV_GRID.

Pasemos a una nueva sintaxis y mostremos los datos de la tabla sin el molesto pintor de pantallas.

  " Sample data
  SELECT * INTO TABLE @DATA(lt_flight)
  FROM sflight.

  " Create ALV & pass table
  NEW zcl_eui_alv( REF #( lt_flight ) )->show( ).

Como he mencionado anteriormente, llamar a los métodos de la clase CL_SALV_TABLE no es la forma más corta y práctica de afinar una GRID ALV. Intentemos pasar parámetros a través de estructuras (lvc_s_layo) y tablas (lvc_t_fcat).

" Sample data
SELECT * INTO TABLE @DATA(lt_flight) FROM sflight.

" Create ALV & pass table
DATA(lo_alv) = NEW zcl_eui_alv(
  ir_table = REF #( lt_flight )
  " Set title
  is_layout = VALUE lvc_s_layo( grid_title = `Demo title`
                                smalltitle = 'X' )
  " Hot spot & totals by mask
  it_mod_catalog = VALUE lvc_t_fcat( ( fieldname = 'CONNID' hotspot = 'X' )
                                     ( fieldname = 'SEATS*' do_sum  = 'X' ) ) ).

" Show in full screen
lo_alv->show( ).

*No hay una nueva API de mi parte para afinar un catálogo y diseño de rejilla alv. Sólo pequeñas mejoras para cambiar el catálogo de campos por defecto (no crear uno desde cero).

¿Qué pasa con otros parámetros de CL_GUI_ALV_GRID? Están en los parámetros del constructor ZCL_EUI_ALV.

El parámetro IT_TOOLBAR se utiliza principalmente para evitar la creación de PF-STATUS. Crearlo por copia no era algo tan agradable y rápido de hacer.

Los otros parámetros del constructor más utilizados por mí son

  • IT_FILTER
  • IT_SORT

Se utilizan con el método popup( ), que puede crear pantallas anidadas para «profundizar» en una suma. Normalmente, para comprobar la suma calculada intento mostrar los elementos que se utilizaron durante el cálculo y mostrar una rejilla alv sobre otra.

En el código basta con añadir la llamada al método popup( ) antes de show( ).

El propio método show( ) acepta un objeto manejador, que debe contener manejadores de eventos de la clase CL_GUI_ALV_GRID.

En los manejadores se puede acceder a la instancia de CL_GUI_ALV_GRID a través de la referencia del emisor o llamando a get_grid( ) de la clase ZCL_EUI_ALV.

Además, podría cambiar el comportamiento por defecto en los eventos especiales PAI y PBO

En conclusión:

Incluso en 2021 muchos informes siguen mostrando mucha información con controles de rejilla en SAP gui. Y espero que el ZCL_EUI_ALV le ayude en este trabajo rutinario.

Más info en: https://setevalapinsap.com

Saludos.

Etiquetas:,