Скорее всего, у вас есть исключение CX_SALV_NO_NEW_DATA_ALLOWED
, которое перехватывается предложением TRY
во время второго вызова вашего экземпляра. Вот почему метод display()
не выполняется.
В документации к методу SET_DATA есть примечание:
Вы не можете вызывать эти методы в обработчик события. Если вы
сделаете это, вы получите ошибку.
...
Исключения
CX_SALV_NO_NEW_DATA_ALLOWED
Вы вызвали SET_DATA в обработчике событий.
В вашем контекстном экране выход аналогичен обработчику событий, так как он вызывается каким-либо событием.
Решение подтверждается OP: "Это работает отлично"
Добавлено в объявления в верхней части списка.
DATA go_alv_table TYPE REF TO cl_salv_table.
Добавлено в коде
IF go_alv_table IS NOT BOUND.
cl_salv_table=>factory( )
...
ENDIF.
Добавлено после вызова метода set_data
go_alv_table->refresh( refresh_mode = if_salv_c_refresh=>soft ).