1、最终ALV展示依靠这个BAPI:REUSE_ALV_GRID_DISPLAY_LVC
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
I_CALLBACK_PROGRAM = W_REPID
IS_LAYOUT_LVC = W_LAYOUT
IT_FIELDCAT_LVC = T_FIELDCAT[]
I_DEFAULT = 'X'
I_SAVE = 'U'
TABLES
T_OUTTAB = T_MAIN.
2、颜色控制会在参数 IS_LAYOUT_LVC参数里面的字段CTAB_FNAME
3、因此W_LAYOUT-CTAB_FNAME = ‘CELLCOLOR’.
W_LAYOUT-ZEBRA = 'X'.
W_LAYOUT-CWIDTH_OPT = 'X'.
W_LAYOUT-SEL_MODE = 'A'.
W_LAYOUT-CTAB_FNAME = 'CELLCOLOR'. " 单元格颜色字段
4、这个CELLCOLOR 定义成一个纵深结构 放到T_MAIN里面,LVC_T_SCOL
DATA: BEGIN OF W_MAIN,
MATNR TYPE ZQMT008-MATNR, "物料
MAKTX TYPE MAKT-MAKTX, "物料描述
CELLCOLOR TYPE LVC_T_SCOL, " 单元格颜色
END OF W_MAIN.
DATA T_MAIN LIKE TABLE OF W_MAIN.
5、取数的时候根据字段条件设置颜色
DATA:GS_CELLCOLOR TYPE LVC_S_SCOL. "定义一个结构用于更新CELLCOLOR
LOOP AT T_MAIN ASSIGNING FIELD-SYMBOL (<FS_MAIN>)
IF <FS_MAIN>-MATNR = 'A00000001'. "物料编码
GS_CELLCOLOR-FNAME = 'MATNR' . "设置字段
GS_CELLCOLOR-COLOR-COL = '1'. "设置颜色
ENDIF.
APPEND GS_CELLCOLOR TO <FS_MAIN>-CELLCOLOR.
ENDIF.
ENDLOP.
以上只是个人分享理解,如果喜欢帮忙点个赞!感谢!