martes, 14 de abril de 2015

Un ALV popup rápido y sencillo

Esta es una forma rápida y sencilla de  lanzar un ALV en un popup o ventana emergente utilizando la clase CL_SALV_TABLE.  Esta clase es muy útil pues permite generar listados ALV con solo llamar a dos métodos de al misma, pero lo mejor es que también tiene un método para poder lanzar el ALV como si fuese un popup o ventana emergente a través de un método llamado SET_SCREEN_POPUP.


Como hemos dicho, es muy sencillo manejar esta clase, solo necesitamos:
  • Una tabla interna con la información del listado
  • Una variable que instancie a la clase  cl_salv_table.

Lo mejor, es ver el código, ya veréis como con 3 métodos creamos todo :

REPORT zzprueba_alv_popup.

TYPES: BEGIN OF type_matnr,
         matnr TYPE mara-matnr,
         meins TYPE mara-meins,
         maktx TYPE makt-maktx,
       END OF type_matnr.

* Tabla interna con los datos del listado ALV
DATA tl_matnr TYPE STANDARD TABLE OF type_matnr.

* Objeto de la clase CL_SALV_TABLE
DATA obj_alv_table TYPE REF TO cl_salv_table.

SELECT m~matnr m~meins t~maktx
  INTO CORRESPONDING FIELDS OF TABLE tl_matnr
  FROM mara AS m
  INNER JOIN makt AS t
          ON m~matnr EQ t~matnr
  WHERE t~spras EQ sy-langu.

* Instanciamos la clase con la tabla que contiene los datos
cl_salv_table=>factory( IMPORTING r_salv_table = obj_alv_table
                        CHANGING t_table       = tl_matnr ).

* Caracteristicas del POPUP
obj_alv_table->set_screen_popup(
  start_column = 1
  end_column   = 160
  start_line   = 1
  end_line     = 20 ).

* Lanzamos el ALV
obj_alv_table->display( ).


Resultado,  un ALV en una ventana emergente o popup .

ALV dentro de un popup

Si comentáis el método SET_SCREEN_POPUP el ALV sera a pantalla completa.

El mismo ALV a pantalla compelta
Muy sencillo, ¿no?