Добрый вечер, господа.
Есть редактируемый ФМ REUSE_ALV_GRID_DISPLAY_LVC.
Задача - при нажатии кнопки выхода проверить были ли изменения в ячейках,
и, если были, окошко с вопросом 'Данные не сохранятся, сохранить?',
и, соответственно, сохранить изменения перед выходом.
Есть два обработчика вида:
Code:
lt_event-name = 'DATA_CHANGED'.
lt_event-form = 'DO_DATA_CHANGED'.
APPEND lt_event.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_user_command = 'ALV_USER_COMMAND'
it_events = lt_event[]
TABLES
t_outtab = gt_data.
Code:
FORM alv_user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA: ref_grid TYPE REF TO cl_gui_alv_grid,
CASE r_ucomm.
WHEN 'EXIT'.
IF ref_grid IS INITIAL.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref_grid.
ENDIF.
* IF NOT ref_grid IS INITIAL.
* CALL METHOD ref_grid->check_changed_data
* IMPORTING
* e_valid = flag_edit.
* ENDIF.
* rs_selfield-exit = 'X'.
ENDCASE.
ENDFORM.
Code:
FORM do_data_changed USING data_changed TYPE REF TO
cl_alv_changed_data_protocol.
break-point.
ENDFORM.
При нажатии кнопки выхода сначала срабатывает первый, потом второй.
Как решить задачу?