* Hi, hier ist eine andere alternative ALV popup OO kein fieldcatlog nee conteiner.
DATA: BEGIN OF wa_t001,
bukrs LIKE t001-bukrs,
butxt LIKE t001-butxt,
waers LIKE t001-waers,
ktopl LIKE t001-ktopl,
END OF wa_t001.
DATA: t_t001 LIKE STANDARD TABLE OF wa_t001.
*----------------------------------------------------------------------*
* CLASS CL_EVENT_HANDLER DEFINITION
*----------------------------------------------------------------------*
CLASS cl_event_handler DEFINITION.
PUBLIC SECTION.
CLASS-DATA:
lo_alv_object TYPE REF TO cl_salv_table.
CLASS-METHODS on_function_click
FOR EVENT if_salv_events_functions~added_function
OF cl_salv_events_table IMPORTING e_salv_function.
ENDCLASS. "cl_event_handler DEFINITION
*----------------------------------------------------------------------*
* CLASS CL_EVENT_HANDLER IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS cl_event_handler IMPLEMENTATION.
METHOD on_function_click.
CASE e_salv_function.
WHEN 'GOON'.
lo_alv_object->close_screen( ).
* do action
WHEN 'ABR'.
lo_alv_object->close_screen( ).
* cancel
ENDCASE.
ENDMETHOD. "on_function_click
ENDCLASS. "cl_event_handler IMPLEMENTATION
*--------------------------------------------------------------------*
* START-OF-SELECTION.
*--------------------------------------------------------------------*
START-OF-SELECTION.
DATA: lo_columns TYPE REF TO cl_salv_columns_table,
lo_column TYPE REF TO cl_salv_column,
lo_alv_object TYPE REF TO cl_salv_table,
lo_functions TYPE REF TO cl_salv_functions,
lo_events TYPE REF TO cl_salv_events_table.
* Llenar Tabla Interna de Ejemplo con Sociedades
SELECT bukrs butxt waers ktopl INTO TABLE t_t001
FROM t001
WHERE land1 = 'CL'
ORDER BY bukrs.
TRY.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = lo_alv_object
CHANGING
t_table = t_t001.
* Asignar Eventos
lo_events = lo_alv_object->get_event( ).
SET HANDLER cl_event_handler=>on_function_click FOR lo_events.
* Guardar Regerencia de acceso al objeto
cl_event_handler=>lo_alv_object = lo_alv_object.
* Usar status gui ST850 del programa SAPLKKB
lo_alv_object->set_screen_status( pfstatus = 'ST850'
report = 'SAPLKKBL' ).
* Dimenciones Popup
lo_alv_object->set_screen_popup( start_column = 25 " Columna de Inicio
end_column = 90 " Ancho Ventana
start_line = 5 " Fila de Inicio
end_line = 10 ). " Largo Ventana
lo_columns = lo_alv_object->get_columns( ).
lo_columns->set_optimize( 'X' ).
* Visualizar ALV
lo_alv_object->display( ).
CATCH cx_salv_msg.
MESSAGE 'Error: ALV exception CX_SALV_MSG' TYPE 'I'.
CATCH cx_root.
MESSAGE 'Error: ALV exception desconosida' TYPE 'I'.
ENDTRY.