ALV 单元格控制案例
1.数据定义时需要定义cellstyles表结构
2.查询取数后,循环根据条件对对应行,字段,单元格按条件置灰
3.对对应的fieldcat行设置为可编辑edit=x
4.对layout-stylefname='CELLSTYLES'.
REPORT zdemo_0020.
*数据定义
DATA:
BEGIN OF gs_spfli .
INCLUDE TYPE spfli.
DATA cellstyles TYPE lvc_t_styl."样式的切换
DATA
END OF gs_spfli.
DATA: gt_fieldcat TYPE TABLE OF lvc_s_fcat WITH HEADER LINE,
gs_layout TYPE lvc_s_layo.
DATA: gt_data LIKE TABLE OF gs_spfli WITH HEADER LINE.
DATA: gs_style TYPE lvc_s_styl,
gt_style TYPE lvc_t_styl.
DATA: gt_events TYPE slis_t_event. "ALV 事件
START-OF-SELECTION.
PERFORM f_getdata.
PERFORM f_catalog.
PERFORM f_get_event.
PERFORM f_alvshow.
FORM f_getdata .
SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_data FROM spfli.
*设置条件置灰列 "样式的切换
LOOP AT gt_data.
IF gt_data-carrid NE 'AA' .
gs_style-fieldname = 'DISTANCE'.
gs_style-style = cl_gui_alv_grid=>mc_style_disabled. "置灰
APPEND gs_style TO gt_style.
gt_data-cellstyles = gt_style.
MODIFY gt_data.
CLEAR gt_style.
ENDIF.