Prueba...
Estimado, espero que este código te sirva.
Lo que hago es definir y luego implementar.
Despues recorro el catalogo, y cuando encuentro el valor del catalogo
modifico la tabla y despues hago un refresh.
Todo esto debe ir después de las declaraciones de las variables.
Saludos.
CLASS lcl_event_receiver DEFINITION DEFERRED.
DATA: g_event_receiver TYPE REF TO lcl_event_receiver.
**************************************************************
* LOCAL CLASS Definition
**************************************************************
*§4.Define and implement event handler to handle event DATA_CHANGED.
*
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed.
PRIVATE SECTION.
DATA: error_in_data TYPE c.
ENDCLASS. "lcl_event_receiver DEFINITION
*---------------------------------------------------------
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_data_changed.
DATA pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
DATA: ls_good TYPE lvc_s_modi.
DATA: valor TYPE s_seatsocc.
error_in_data = space.
LOOP AT er_data_changed->mt_good_cells INTO ls_good.
CASE ls_good-fieldname.
WHEN 'REEMPLAZO'.
READ TABLE er_data_changed->mt_good_cells INTO ls_good
WITH KEY row_id = ls_good-row_id
fieldname = ls_good-fieldname.
CALL METHOD er_data_changed->get_cell_value
EXPORTING
i_row_id = ls_good-row_id
i_fieldname = ls_good-fieldname
IMPORTING
e_value = valor.
* Leímos tabla interna
READ TABLE gt_outtab INTO wa_outtab INDEX ls_good-row_id.
wa_outtab-total = wa_outtab-cantidad + valor.
wa_outtab-difer = wa_outtab-venta - wa_outtab-total.
* Modificamos
MODIFY TABLE gt_outtab FROM wa_outtab .
CALL METHOD grid1->refresh_table_display.
ENDCASE.
ENDLOOP.
IF error_in_data EQ 'X'.
CALL METHOD er_data_changed->display_protocol.
ENDIF.
ENDMETHOD. "handle_data_changed
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
|