CL_GUI_ALV_GRID - Tiene todo!
amigo, si modificas una linea va a disparar el evento data changed, no hay nada que puedas hacer.. ahora puedes decidir en que momento se dispara este evento:
*-- Muestro el ALV
call method grid->set_table_for_first_display
exporting
i_save = 'A'
is_variant = gs_repid
is_layout = gs_layout
it_toolbar_excluding = lt_exclude
changing
it_fieldcatalog = gt_fieldcat
it_outtab = tb[].
*---Hay 2 opciones. CUANDO SE PRESIONA ENTER
*--- Registro el evento ENTER, para que verifique consistencia de datos
*-- cuando se presione enter
call method grid->register_edit_event
exporting
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
*-- O CUANDO SE MODIFICA UNA CELDA
*--- Registro el evento ENTER, para que verifique consistencia de datos
*-- cuando se modifique una celda
call method grid->register_edit_event
exporting
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
*---> Ahi podrias hacer llamado al metodo:
call method ir_data_changed->modify_cell
exporting i_row_id = ls_mod_cells-row_id
i_fieldname = 'CODACTVT'
i_value = l_codactvt.
Y se actualiza el ALV... ahora para modificar la tabla interna tienes que hacerlo manualmente y si quieres q el alv tome los cambios tendras que llamar al metodo REFRESH_TABLE_DISPLAY
__________________
Atte. Marcos Carrasco...
|