Если кому интересно - я решил эту проблему полным извратом, в связи с тем, что времени много нет...
После
Code:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
Потом получаю объект этого алв
Code:
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = L_GRID.
Code:
FORM data_changed USING
rr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
DATA: w_itab TYPE LINE OF lvc_t_modi,
itab TYPE lvc_t_modi,
ix LIKE sy-tabix,
lt_fcat TYPE LVC_T_FCAT,
event_receiver TYPE REF TO lcl_event_receiver.
itab[] = rr_data_changed->mt_mod_cells[].
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = L_GRID.
LOOP AT itab INTO w_itab.
ix = sy-tabix.
CASE w_itab-fieldname.
WHEN 'VIBOR'.
READ TABLE IT_ztdocinfo INDEX w_itab-row_id.
IF w_itab-value = 'X' AND
( ( IT_ztdocinfo-NALICHIE = icon_led_green AND p_create = 'X' ) OR
( IT_ztdocinfo-NALICHIE = icon_led_red AND p_change = 'X' ) ).
IT_ztdocinfo-temp = 'X'.
MODIFY IT_ztdocinfo INDEX w_itab-row_id.
ENDIF.
ENDCASE.
ENDLOOP.
IF event_receiver IS INITIAL. "Такой изврат нужен чтобы отловить изменения редактируемых полей
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_data_changed_finished FOR L_GRID.
ENDIF.
ENDFORM. "data_changed
Code:
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_DATA_CHANGED_FINISHED
FOR EVENT DATA_CHANGED_FINISHED OF cl_gui_alv_grid
IMPORTING E_MODIFIED ET_GOOD_CELLS.
PRIVATE SECTION.
DATA: ls_stable TYPE lvc_s_stbl.
*&
ENDCLASS. "lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.
method handle_DATA_CHANGED_FINISHED.
DATA:
IS_stable TYPE LVC_S_STBL.
LOOP AT IT_ztdocinfo INTO TEMP_ZT where temp = 'X'.
TEMP_ZT-vibor = ''.
MODIFY IT_ztdocinfo FROM TEMP_ZT.
ENDLOOP.
IS_stable-ROW = 'X'.
IS_stable-COL = 'X'.
CALL METHOD L_GRID->REFRESH_TABLE_DISPLAY( IS_STABLE = IS_stable ).
endmethod. "handle_DATA_CHANGED_FINISHED
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
Получился полный бред, зато работает... Все из-за того, что ALV лучше сразу лупить через классы, 'REUSE_ALV_GRID_DISPLAY' - прошлый век получается....