首页 > 代码库 > 函数alv下的颜色设置
函数alv下的颜色设置
ABAP中的颜色代码是由4位字都组成的
cxyz
c:color的简写,颜色代码均以C开头
x:标准色代码,SAP中一共有7个标准色
y:反转颜色启用/关闭 1/0
z:增强颜色启用/关闭 1/0
标准色代码一览表
X | 颜色 | 主要用处 |
1 | 灰蓝色 | 抬头、标题栏 |
2 | 浅灰色 | 列表内容 |
3 | 黄色 | 汇总 |
4 | 蓝色 | 关键字 |
5 | 绿色 | 正确 |
6 | 红色 | 错误 |
7 | 橙色 | 控制 |
如:
单元格颜色控制:
定义最后显示内表的时候要在里面增加一个
<style></style>colour type lvc_T_scol,类型,这是个内表类型,
<style></style>
DATA yellow_color TYPE LVC_S_SCOL. 这是它的工作区,
如:
<style></style>
TYPES:BEGIN OF t_detail,
matnr TYPE eina-matnr, "物料
<style></style>
ratio type i ,
colour type lvc_T_scol, "控制单元格颜色
END OF t_detail.
<style></style>
DATA: gt_detail TYPE STANDARD TABLE OF t_detail, "明细內表
gs_detail LIKE LINE OF gt_detail, "明细內表工作区
IF l_ratio >= 50.
yellow_color-fname = ‘RATIO‘.
yellow_color-color-col = ‘6‘.
yellow_color-color-int = ‘1‘.
APPEND yellow_color TO gs_detail-colour.
endif.
append gs_detail to gt_detail.
除此之外还要设置布局格式
<style></style>i_layout-coltab_fieldname = ‘COLOUR‘. ”‘COLOUR‘是内表中控制单元格颜色的字段。
有关颜色的控制如下
一. 行颜色
1. 在结果内表中添加字段 color(4) TYPE c ,用来存储四位颜色值.
2. 在内表循环中给这个字段赋值,比如‘C310‘ 黄色.
3. 最关键的一点,在layout结构中设定颜色字段的名字,代码如下:
is_layout-info_fieldname = ‘COLOR‘. " 行颜色字段
is_layout 是我们声明的一个ALV的 type slis_layout_alv 的结构.
二. 列颜色
列颜色较为简单,我们在填充结构 it_fieldcat TYPE slis_t_fieldcat_alv 时,为每一列直接赋值就好了。
三。单元格颜色
1. 在结果内表中添加字段 cellcolor TYPE lvc_t_scol . 这是一个内表,用来存储单元格的颜色。
2. 在内表循环中给这个内表赋值,示例代码如下:
PERFORM fill_cellcolor CHANGING wa_result-cellcolor. " 单元格高亮(黄色)
*&---------------------------------------------------------------------*
*& Form fill_cellcolor
*&---------------------------------------------------------------------*
* 填充单元格颜色数据
*----------------------------------------------------------------------*
FORM fill_cellcolor CHANGING p_cellcolor type lvc_t_scol.
DATA wa_cellcolor TYPE lvc_s_scol . " 单元格颜色结构
DEFINE set_color.
wa_cellcolor-fname = &1.
wa_cellcolor-color-col = ‘3‘.
wa_cellcolor-color-int = ‘1‘.
wa_cellcolor-color-inv = ‘0‘.
append wa_cellcolor to p_cellcolor.
END-OF-DEFINITION.
set_color ‘MATNR‘.
set_color ‘MAKTX‘.
set_color ‘MEINS‘.
set_color ‘CNT_S‘.
set_color ‘QUOTE1‘.
set_color ‘QUOTE2‘.
ENDFORM. " fill_cellcolor
3. 最关键的一点,在layout结构中设定颜色字段的名字,代码如下:
is_layout-coltab_fieldname = ‘CELLCOLOR‘. " 单元格颜色字段
总结:
当同时设定了行颜色和列颜色后,行颜色会覆盖列颜色,有的时候用户不希望这种结果的出现,解决办法就是设定每行的单元格(当然不包括与设定列颜色的列相交叉的单元格)的颜色。