get_selected_rows из alv после логики обработчика PAI
У меня есть ALV в контейнере на экране 0100. Он создан с помощью класса SALV. Проблема в том, что я не могу получить выбранную строку через go_alv_dms->get_selections( )->get_selected_rows( )
после нажатия кнопки на экране (2 на скриншоте). Я могу получить доступ к выбранным строкам без проблем, если кнопка находится в строке состояния ALV (1 на скриншоте). Кажется, что нажатие кнопки за пределами ALV очищает ее выбор. введите описание изображения здесь
Зарегистрировать выбор, когда показывают ALV:
...
lo_selections = go_alv_dms->get_selections( ).
lo_selections->set_selection_mode( if_salv_c_selection_mode=>row_column ).
lo_events = go_alv_dms->get_event( ).
CREATE OBJECT go_handler.
SET HANDLER go_handler->on_user_command2 FOR lo_events.
...
PAI экранной кнопки логики:
go_handler->on_user_command2( gv_ok_0100 ).
Метод on_user_command2:
case gv_ok_0100.
when 'OK'.
...
lt_rows = go_alv_dms->get_selections( )->get_selected_rows( ).
...
ENDCASE.
1 ответ
Выслушав мнения коллег и поиска ответа в интернете, я пришел к выводу, что это класс CL_SALV_TABLE
ограничение. Я переписал программу на уроке CL_ALV_GRID
и это заработало. мне нравится CL_SALV_TABLE
и буду рад, если кто-то опровергнет мое заявление.
DATA gr_alv TYPE REF TO cl_salv_table.
DATA it_rows TYPE salv_t_row.
...
gr_alv->get_metadata( ). " Call this method before getting selected rows
it_rows = gr_alv->get_selections( )->get_selected_rows( ).
Ссылка: https://answers.sap.com/questions/4693234/getselectedrows-returns-nothing.html