Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Two event handler

Former Member
0 Kudos

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 ?

3 REPLIES 3

Former Member
0 Kudos

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

0 Kudos

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

0 Kudos

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