Стиль меняйте для конкретно этой строки.. Не надо менять значений, нужно просто наложить запред на редактирование конкретно этой ячейки:
В структуру таблицы с данными для алв добавляете колонку для стиля (в филдкаталог не нужно дублировать (в моем случае филдкаталог построен на структуре ZOPSR))
Code:
BEGIN OF t_zopsr. "тип строки данных
.INCLUDE STRUCTURE ZOPSR.
types: cell type lvc_t_styl,
END OF t_zopsr.
Таблица с данными о стиле (добавьте для каждой колонки, для которой хотите запретить редактирование строку с указанным стилем)
Code:
DATA:
gt_style_list TYPE lvc_t_styl,
ls_alv_cell_style LIKE LINE OF gt_style_list.
ls_alv_cell_style-fieldname = <fs_fcat>-fieldname. "имя поля
ls_alv_cell_style-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_alv_cell_style INTO TABLE gt_style_list.
Если хотите запретить редактирование конкретной строки - изменяете содержимое ячейки CELL для этой строчки...
Code:
APPEND LINES OF gt_style_list TO <fs_zopsr>-cell. "<fs_zosr> - обрабатываемая строка данных
Ну и плюс включить-отключить редактирование
Code:
CALL METHOD go_alv_det->set_ready_for_input
EXPORTING
i_ready_for_input = 0. "1-редактирование разрешено