Skip to Content
0
Former Member
Mar 03, 2009 at 03:33 PM

Capture the changed field in ALV grid using OOPs

370 Views

Hi Experts,

I have created an editable ALV grid using OOPS showing multiple rows & columns.

I need to input some fields (say Quant, Material desc, price..etc) & capture the values of the editable fields into my program for further use processing.

For eg: i need to use it in an itab to for calc, post a BAPI..etc

How can i do this?

My sample code for based on event is as below . Pls tell me if i am right or wrong.

CLASS LCL_EVENT_HANDLER DEFINITION.

PUBLIC SECTION .

METHODS:

refresh_changed_data for event data_changed of cl_gui_alv_grid importing

er_data_changed

e_ucomm.

ENDCLASS

CLASS LCL_EVENT_HANDLER IMPLEMENTATION.

METHOD refresh_changed_data.

types :BEGIN OF ty_line,

menge TYPE bstmng,

netpr TYPE iprei,

  • kbetr TYPE i,

END OF ty_line.

DATA : ls_modified TYPE lvc_s_modi,

ls_stable TYPE lvc_s_stbl,

ls_line TYPE ty_line,

lv_field(10) type c,

gt_outtab type standard table of ty_line.

  • READ TABLE er_data_changed->mt_mod_cells INTO ls_modified INDEX 1.

loop at er_data_changed->mt_mod_cells into ls_modified.

clear wa_outdisp.

READ TABLE gt_outdisp INTO wa_outdisp INDEX ls_modified-row_id.

CHECK sy-subrc EQ 0.

lv_field = ls_modified-fieldname.

if lv_field = 'MENGE'.

wa_outdisp-menge = ls_modified-value.

elseif lv_field = 'NETPR'.

wa_outdisp-netpr = ls_modified-value.

elseif lv_field = 'KBETR'.

wa_outdisp-kbetr = ls_modified-value.

elseif lv_field = 'KMEIN'.

wa_outdisp-kmein = ls_modified-value.

endif.

MODIFY gt_outdisp FROM wa_outdisp INDEX ls_modified-row_id.

ls_stable-row = 'X'.

ls_stable-col = 'X'.

grid->refresh_table_display( exporting is_stable = ls_stable ).

endloop.

ENDMETHOD. "refresh_changed_data

ENDCLASS.

ENDCLASS.

Thanks

Dany