ABAP ALV中的颜色设置

行颜色及单元格颜色的设置需要在ALV的显示内表中设置两个字段:

DATA: BEGIN OF gt_out OCCURS 0.
        INCLUDE STRUCTURE sflight.
DATA:   rowcolor(4) TYPE c,"行颜色设置
        cellcolor TYPE lvc_t_scol."单元格颜色设置
DATA: END OF gt_out.

然后在布局中设置:

  DATA  gs_layout     TYPE lvc_s_layo.
  gs_layout-info_fname = 'ROWCOLOR'."行颜色字段
  gs_layout-ctab_fname = 'CELLCOLOR'."单元格颜色字段

最后在ALV显示之前根据需求进行颜色的设定:

      DATA gs_out_temp LIKE LINE OF gt_out.
      DATA ls_cellcolor TYPE lvc_s_scol.
      LOOP AT gt_out.
        gs_out_temp = gt_out.
        "行颜色设置
        AT FIRST.
          gs_out_temp-rowcolor = 'C310'.
        ENDAT.
        AT LAST.
          gs_out_temp-rowcolor = 'C710'.
        ENDAT.
        "单元格颜色设置
        IF gt_out-seatsocc_f < 20.
          ls_cellcolor-fname = 'SEATSOCC_F'.
          ls_cellcolor-color-col = '3'.
          ls_cellcolor-color-int = '1'.
          APPEND ls_cellcolor TO gs_out_temp-cellcolor.
        ENDIF.
        MODIFY gt_out FROM gs_out_temp.
      ENDLOOP.

对于列颜色的设置就比较简单了,直接在gt_fieldcat中做处理即可:

DATA: gt_fieldcat   TYPE lvc_t_fcat,
      ls_fieldcat   TYPE lvc_s_fcat.
  LOOP AT gt_fieldcat INTO ls_fieldcat.
    IF ls_fieldcat-fieldname = 'PAYMENTSUM'."为这个列设置颜色
      ls_fieldcat-emphasize = 'C510'.
      MODIFY gt_fieldcat FROM ls_fieldcat.
    ENDIF.
  ENDLOOP.

另外附上SAP的颜色编码:SAP中的颜色编码是由4位Cxyz组成的
C:color的简写,颜色编码均以C开头
x:标准色码,SAP中一共有7个标准色
y:反转颜色,启用/关闭 1/0
z:增强颜色,启用/关闭 1/0
标准色码一览表

X 颜色 主要用途
1 灰蓝色 抬头、标题栏
2 浅灰色 列表内容
3 黄色 汇总
4 蓝色 关键字
5 绿色 正确
6 红色 错误
7 橙色 控制

你可能感兴趣的:(ABAP ALV中的颜色设置)