03-01-2008 1:55 PM
I am using two event handler
CLASS-METHODS:
handle_data_changed_finished
FOR EVENT data_changed_finished OF cl_gui_alv_grid
IMPORTING e_modified
et_good_cells.
CLASS-METHODS: catch_doubleclick
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_column es_row_no sender.
And after I call them like that
SET HANDLER ci_events_grid->handle_data_changed_finished
FOR ci_grid .
CALL METHOD ci_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
SET HANDLER ci_events_grid->catch_doubleclick FOR ci_grid.
There is a problem that when the changes finish on grid , it can handels handle_data_changed_finished
truely but when the user double click it couldnt gets true row id .
But when I do not use handle_data_changed_finished method there wasnt problem occurs ,
How can I use two methods together ?
03-01-2008 2:08 PM
Hi,
If I am not wrong..u need to trigger the events using the OK-codes
i.e
Case Sy-UCOMM.
When 'ABC'.
Trigger your event.
EndCase.
santhosh
03-01-2008 2:13 PM
No I dont catch with user-command
Please below the code method implementations.
----
CLASS lcl_event_receiver IMPLEMENTATION
----
*
----
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_data_changed_finished.
PERFORM data_changed_finished TABLES et_good_cells.
ENDMETHOD. "HANDLE_DATA_CHANGED_FINISHED
METHOD catch_doubleclick .
IF e_column-fieldname NE 'REASON_ICON'.
EXIT.
ENDIF.
READ TABLE gt_itab INDEX es_row_no-row_id INTO gt_ch_itab.
CASE e_column.
WHEN 'REASON_ICON'.
IF gt_ch_itab-changed = 'X'.
CALL SCREEN 200 STARTING AT 40 8
ENDING AT 80 20.
ENDIF.
ENDCASE.
ENDMETHOD. "handle_double_click
ENDCLASS. "LCL_EVENT_RECEIVER IMPLEMENTATION
FORM data_changed_finished TABLES et_good_cells STRUCTURE lvc_s_modi.
DATA ls_good_cells TYPE lvc_s_modi.
LOOP AT et_good_cells INTO ls_good_cells.
AT NEW row_id.
READ TABLE gt_itab INDEX ls_good_cells-row_id.
IF sy-subrc = 0.
IF gt_itab-pwmt1 NE gt_itab-old_pwmt1 OR
gt_itab-pwtt1 NE gt_itab-old_pwtt1 OR
gt_itab-dlvcnt NE gt_itab-old_dlvcnt.
gt_itab-changed = 'X'.
gt_itab-status = icon_led_yellow.
gt_itab-reason_icon = icon_system_help.
ELSE.
CLEAR : gt_itab-changed,gt_itab-status.
ENDIF.
MODIFY gt_itab INDEX ls_good_cells-row_id.
ENDIF.
ENDAT.
ENDLOOP.
CALL METHOD ci_grid->refresh_table_display
EXPORTING
i_soft_refresh = 'X'.
ENDFORM. " data_changed_finished
03-01-2008 2:20 PM
OK..I get u..can you tell me what was the expected row number and what do you actually get in your variable
es_row_no-row_id
santhosh
Edited by: Kaluvala Santhosh on Mar 1, 2008 7:51 PM