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

Другие вопросы по тегам