возник еще вопрос.
во первых спасибо __Gennady с перформой разобрались.
Теперь 1 маленький вопрос.
Вот кусок класса стандартный пример из доки по ALV
для создания собственного контекстного меню.
Code:
CLASS lcl_event_handler DEFINITION.
PUBLIC SECTION.
METHODS:
SET_context_menu
for EVENT context_menu_request OF cl_gui_alv_grid
IMPORTING e_object,
SET_User_Command
for EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
PRIVATE SECTION.
ENDCLASS.
CLASS lcl_event_handler IMPLEMENTATION.
METHOD SET_context_menu.
PERFORM handle_context_menu_request USING e_object.
ENDMETHOD.
METHOD SET_User_Command.
PERFORM handle_user_command USING e_ucomm.
ENDMETHOD.
ENDCLASS.
тут все работает. вопросов нет
но мне нужно в методах SET_context_menu и SET_User_Command
вызвать свой перформ. Передать классу строкой имена функций и выполнить.
класс примерно начинает выглядеть так:
Code:
CLASS lcl_event_handler_alv DEFINITION.
PUBLIC SECTION.
DATA programm_name TYPE STRING.
DATA FUNCTION_FOR_CONTEXT_MENU TYPE STRING.
DATA FUNCTION_FOR_USER_COMMAND TYPE STRING.
METHODS:
SET_context_menu
for EVENT context_menu_request OF cl_gui_alv_grid
IMPORTING e_object,
SET_User_Command
for EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
METHODS: MYEXEC.
PRIVATE SECTION.
ENDCLASS.
CLASS lcl_event_handler_alv IMPLEMENTATION.
METHOD SET_context_menu.
PERFORM (FUNCTION_FOR_CONTEXT_MENU) IN PROGRAM (programm_name) USING e_object.
ENDMETHOD.
METHOD SET_User_Command.
PERFORM (FUNCTION_FOR_USER_COMMAND) IN PROGRAM (programm_name) USING e_ucomm.
ENDMETHOD.
METHOD MYEXEC.
PERFORM (FUNCTION_FOR_CONTEXT_MENU) IN PROGRAM (programm_name) USING e_object.
ENDMETHOD.
так вот. динамический перформ неработает в событии.
Для теста я добавил свой метод MYEXEC который просто вызывается
ОН РАБОТАЕТ. тоесть все параметры переданы правильно.
Почему в событии неработает?
ошибка PERFORM_NOT_FOUND.
действительно если в строке PERFORM добавить IF FOUND
дампа нет но и функция не работает. Все верно.
Что ж не так в событии?