要实现ALV单元格控制需要用LVC_T_STYL(LVC_S_STYL)
首先在ALV输出的内表中加入LVC_T_STYL字段,然后LAYOUT设置stylefname = 该字段(代码中的CELLSTYLE)
CLEAR gs_layout.
gs_layout-sel_mode = 'D'."选择行模式
gs_layout-cwidth_opt = 'X'."自动优化列宽
gs_layout-zebra = 'X'. "颜色区别
gs_layout-stylefname = 'CELLSTYLE'.
更改内表某一行的CELLSTYLE字段,即可实现单个单元格的控制
"(LVC_T_STYL)
CLEAR:gs_styl,gt_styl[].
gs_styl-fieldname = 'FIELDA'.
gs_styl-style = cl_gui_alv_grid=>mc_style_enabled. "可编辑
INSERT gs_styl INTO TABLE gt_styl.
gs_styl-fieldname = 'FIELDB'.
gs_styl-style = cl_gui_alv_grid=>mc_style_disabled. "不可编辑
INSERT gs_styl INTO TABLE gt_styl.
"更改选中行
LOOP AT lt_row INTO ls_row.
READ TABLE gt_item INTO gs_item INDEX ls_row-row_id.
IF sy-subrc = 0
gs_item-cellstyle = gt_styl.
MODIFY gt_item FROM gs_item INDEX ls_row-row_id.
ENDIF.
ENDLOOP.