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 |

