Не то.
Вот небольшой пример программы
Code:
REPORT z_salv_example.
* Класс обработки событий
CLASS lcl_handle_events DEFINITION.
PUBLIC SECTION.
METHODS
: on_user_command
FOR EVENT added_function OF cl_salv_events
IMPORTING e_salv_function
.
ENDCLASS.
CLASS lcl_handle_events IMPLEMENTATION.
METHOD on_user_command.
CASE sy-ucomm.
WHEN 'MYFUNCTION'.
* Здесь должен быть код, скрывающий кнопку MYFUNCTION
SET PF-STATUS 'SALV_STANDARD' EXCLUDING 'MYFUNCTION'.
* К сожалению, PF-STATUS не работает
ENDCASE.
ENDMETHOD.
ENDCLASS.
DATA
: gt_spfli TYPE STANDARD TABLE OF spfli
, gr_table TYPE REF TO cl_salv_table
, gr_events TYPE REF TO cl_salv_events_table
, gr_handler TYPE REF TO lcl_handle_events
.
START-OF-SELECTION.
SELECT *
UP TO 100 ROWS
INTO TABLE gt_spfli
FROM spfli
.
* Создание ALV Grid
TRY.
cl_salv_table=>factory(
IMPORTING r_salv_table = gr_table
CHANGING t_table = gt_spfli
).
CATCH cx_salv_msg.
ENDTRY.
* Назначение GUI-статуса
gr_table->set_screen_status(
pfstatus = 'SALV_STANDARD'
report = sy-cprog
set_functions = gr_table->c_functions_all
).
* Назначение обработчика событий
gr_events = gr_table->get_event( ).
CREATE OBJECT gr_handler.
SET HANDLER gr_handler->on_user_command FOR gr_events.
* Вывод ALV Grid
gr_table->display( ).
В программу скопирован из пакета SALV_OBJECTS статус 'SALV_STANDARD', в котором определена пользовательская кнопка 'MYFUNCTION'. При нажатии на эту кнопку необходимо, чтобы она стала недоступной. Как этого добиться?