Привожу пример кода который позволят отрабатывать события , а так же выводить alv grid в модульном окне.
Для примера привожу код который выводит список дебиторов и по двойному клику выводит проводки по нему в модульном окне.
*&---------------------------------------------------------------------* *& Report Z_NCH_TEST *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT Z_NCH_TEST. TYPE-POOLS slis. KNA1,BSID. *Обьявляем переменные для alv grid DATA: gc_alv_table TYPE REF TO cl_salv_table, gc_functions TYPE REF TO cl_salv_functions, gr_events TYPE REF TO cl_salv_events_table, gc_display TYPE REF TO cl_salv_display_settings. DATA: t_kna1 LIKE kna1 OCCURS 0 WITH HEADER LINE, t_bsid like bsid OCCURS 0 WITH HEADER LINE. type_kna1 like t_kna1. DATA: line_kna1 TYPE type_kna1. *----------------------------------------------------------------------* * CLASS lcl_event_handler DEFINITION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* PUBLIC SECTION. OF cl_salv_events_table IMPORTING row column. *----------------------------------------------------------------------* * CLASS lcl_event_handler IMPLEMENTATION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* METHOD handle_doubleclick. DATA: gr_table TYPE REF TO cl_salv_table, lr_functions TYPE REF TO cl_salv_functions_list, lr_columns TYPE REF TO cl_salv_columns, gr_functions TYPE REF TO cl_salv_functions, gr_columns TYPE REF TO cl_salv_columns_table, gr_column TYPE REF TO cl_salv_column_table, gr_display TYPE REF TO cl_salv_display_settings. READ TABLE t_kna1 INTO line_kna1 INDEX row. TRY. cl_salv_table=>factory( IMPORTING r_salv_table = gr_table CHANGING t_table = t_bsid[] ). CATCH cx_salv_msg. lr_functions = gr_table->get_functions( ). lr_functions->set_all( 'X' ). lr_columns = gr_table->get_columns( ). lr_columns->set_optimize( 'X' ). gr_table->set_screen_popup( start_column = 1 end_column = 100 start_line = 1 end_line = 20 ). gr_display = gr_table->get_display_settings( ). gr_display->set_list_header( 'Список проводок'). gr_functions = gr_table->get_functions( ). gr_table->display( ). cl_salv_table=>factory( IMPORTING r_salv_table = gc_alv_table CHANGING t_table = t_kna1[] ). gc_display = gc_alv_table->get_display_settings( ). gc_display->set_list_header( 'Список дебиторов'). gc_functions = gc_alv_table->get_functions( ). gr_events = gc_alv_table->get_event( ). CREATE OBJECT o_event_handler. SET HANDLER o_event_handler->handle_doubleclick FOR gr_events. gc_functions->set_all( 'X' ). gc_alv_table->display( ).