Reporte ALV con CL_SALV_TABLE

gracias a la propuesta de @borja87 sobre utilizar la clase CL_SALV_TABLE para crear un Reporte ALV, les dejo este pequeño programa que servirá como guía, utilizando la tabla MARA.:


*&---------------------------------------------------------------------*
*& Report  ZAHM_ALV_TABLE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zahm_alv_table.

DATA:
      it_mara TYPE STANDARD TABLE OF mara.

START-OF-SELECTION.
  SELECT * FROM mara INTO TABLE it_mara UP TO 100 ROWS.
  PERFORM mostrar_alv USING it_mara 'Tabla MARA'.

*&---------------------------------------------------------------------*
*&      Form  MOSTRAR_ALV
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM mostrar_alv USING p_itab TYPE STANDARD TABLE p_titulo TYPE data.

  DATA: alv TYPE REF TO cl_salv_table,
        display_settings TYPE REF TO cl_salv_display_settings,
        message TYPE REF TO cx_salv_msg,
        functions TYPE REF TO cl_salv_functions_list.

  TRY.
      cl_salv_table=>factory(
      IMPORTING
        r_salv_table = alv
      CHANGING
        t_table      = p_itab ).
    CATCH cx_salv_msg INTO message.
      " error handling
  ENDTRY.

  "mostrar titulo al reporte
  display_settings = alv->get_display_settings( ).
  display_settings->set_striped_pattern( if_salv_c_bool_sap=>true ).
  display_settings->set_list_header( p_titulo ).

  "Agregar la barra de herramientas
  functions = alv->get_functions( ).
  functions->set_all( ).

  "desplegar el reporte
  alv->display( ).

ENDFORM.                    " MOSTRAR_ALV

Saludos!,
Armando Hernandez Mateu.

4 Me gusta

Buenos días Armando (al menos aquí en España),

Mi sugerencia es con esta clase (CL_SALV_TABLE) es que si lo encapsulas en un metodo o en una funcion con una tabla any ya lo tienes para reutilizar siempre como comentabas en el otro hilo. Y como genera el catálogo en base a las descripciones del elemento de datos es muy moldeable. =)

1 me gusta

@armandomateu, gracias por el aporte.
Muevo de tutoriales, hacia Educación, ya que diferenciamos aportes con “paso a paso” para la sección de #tutoriales, y los demás van en educación :slight_smile:

Saludos y sigue así :thumbsup:

PD: recuerden que si hay dudas sobre este tipo de aportes, deben crear nuevos temas enlazando al debate en sí.