为了设定行的颜色,需要在传递给REUSE_ALV_GRID_DISPLAY的数据表中增加一个类型为CHAR 4的列,此列用于给每一行定义颜色。同时在传递给REUSE_ALV_GRID_DISPLAY的slis_layout_alv结构的 info_fieldname字段赋值为此列的字段名。
此列的取值可以为‘ ’或‘X’或者为‘Cxyz’,如果为X则使用预定义的高亮颜色,如果为Cxyz,则其各位字符意义如下:
* x: color number 颜色编码
* y: intensified display on/off 以较强的颜色显示,值为 0 / 1
* z: inverse display on/off 反转显示(颜色作用于文字而不是背景?) 值为 0 / 1
其中,第二位即颜色编码的取值可以为 0 - 7,代表颜色如下:
Syntax of color value in col color
{ COL_BACKGROUND } 0 GUI-specific
{ 1 | COL_HEADING } 1 Gray-blue
{ 2 | COL_NORMAL } 2 Light gray
{ 3 | COL_TOTAL } 3 Yellow
{ 4 | COL_KEY } 4 Blue-green
{ 5 | COL_POSITIVE } 5 Green
{ 6 | COL_NEGATIVE } 6 Red
{ 7 | COL_GROUP } 7 Violet
设定列的颜色则很简单,只要给slis_fieldcat_alv结构的emphasize字段赋予代表颜色的值即可,颜色值的定义与上述相同。
设定单元格的颜色最复杂,需要在数据表中定义一个类型为slis_t_specialcol_alv的子表,在这个子表中指定各单元格的颜色,同时,在slis_layout_alv结构的coltab_fieldname字段中赋值为此子表的名称。
注意:颜色的优先顺序是 单元格->行->列
示例:
TYPES: BEGIN OF zs_tab,
matnr LIKE mara-matnr,
mtart LIKE mara-mtart,
lvorm LIKE mara-lvorm,
meins LIKE mara-meins,
row_color(4) TYPE c,
col_color TYPE slis_t_specialcol_alv,
END OF zs_tab.
DATA: it_tab TYPE STANDARD TABLE OF zs_tab WITH HEADER LINE,
it_catlog TYPE slis_t_fieldcat_alv,
wa_catlog LIKE LINE OF slis_t_fieldcat_alv,
wa_layout TYPE slis_layout_alv,
wa_column LIKE LINE OF slis_t_specialcol_alv,
wa_tabix TYPE sy-tabix.
*&-----------
*& Fill data table it_tab
*&-----------
LOOP AT it_tab.
wa_tabix = sy-tabix.
IF it_tab-lvorm = 'X'.
**被删除的物料以红色显示
it_tab-row_color = 'C610'.
MODIFY it_tab INDEX sy-tabix.
ENDIF.
IF it_tab-meins = 'PC'.
**基本单位为PC的,基本单位这个单元格以绿色显示。
wa_column-fieldname = 'MEINS'.
wa_column-color-col = 5.
wa_column-color-int = 1.
APPEND wa_column TO it_tab-col_color.
ENDIF.
MODIFY TABLE it_tab INDEX sy-tabix.
ENDLOOP.
*&-----------------
*& Build field catlog
*&-----------------
*MTART列用黄色显示
wa_catlog-emphasize = 'C310'.
MODIFY it_catlog FROM wa_catlog TRANSPORTING emphasize
WHERE fieldname = 'MTART'.
wa_layout-info_fieldname = 'ROW_COLOR'.
wa_layout-coltab_fieldname = 'COL_COLOR'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
is_layout = wa_layout
it_fieldcat = it_catlog
TABLES
t_outtab = it_tab.
此列的取值可以为‘ ’或‘X’或者为‘Cxyz’,如果为X则使用预定义的高亮颜色,如果为Cxyz,则其各位字符意义如下:
* x: color number 颜色编码
* y: intensified display on/off 以较强的颜色显示,值为 0 / 1
* z: inverse display on/off 反转显示(颜色作用于文字而不是背景?) 值为 0 / 1
其中,第二位即颜色编码的取值可以为 0 - 7,代表颜色如下:
Syntax of color value in col color
{ COL_BACKGROUND } 0 GUI-specific
{ 1 | COL_HEADING } 1 Gray-blue
{ 2 | COL_NORMAL } 2 Light gray
{ 3 | COL_TOTAL } 3 Yellow
{ 4 | COL_KEY } 4 Blue-green
{ 5 | COL_POSITIVE } 5 Green
{ 6 | COL_NEGATIVE } 6 Red
{ 7 | COL_GROUP } 7 Violet
设定列的颜色则很简单,只要给slis_fieldcat_alv结构的emphasize字段赋予代表颜色的值即可,颜色值的定义与上述相同。
设定单元格的颜色最复杂,需要在数据表中定义一个类型为slis_t_specialcol_alv的子表,在这个子表中指定各单元格的颜色,同时,在slis_layout_alv结构的coltab_fieldname字段中赋值为此子表的名称。
注意:颜色的优先顺序是 单元格->行->列
示例:
TYPES: BEGIN OF zs_tab,
matnr LIKE mara-matnr,
mtart LIKE mara-mtart,
lvorm LIKE mara-lvorm,
meins LIKE mara-meins,
row_color(4) TYPE c,
col_color TYPE slis_t_specialcol_alv,
END OF zs_tab.
DATA: it_tab TYPE STANDARD TABLE OF zs_tab WITH HEADER LINE,
it_catlog TYPE slis_t_fieldcat_alv,
wa_catlog LIKE LINE OF slis_t_fieldcat_alv,
wa_layout TYPE slis_layout_alv,
wa_column LIKE LINE OF slis_t_specialcol_alv,
wa_tabix TYPE sy-tabix.
*&-----------
*& Fill data table it_tab
*&-----------
LOOP AT it_tab.
wa_tabix = sy-tabix.
IF it_tab-lvorm = 'X'.
**被删除的物料以红色显示
it_tab-row_color = 'C610'.
MODIFY it_tab INDEX sy-tabix.
ENDIF.
IF it_tab-meins = 'PC'.
**基本单位为PC的,基本单位这个单元格以绿色显示。
wa_column-fieldname = 'MEINS'.
wa_column-color-col = 5.
wa_column-color-int = 1.
APPEND wa_column TO it_tab-col_color.
ENDIF.
MODIFY TABLE it_tab INDEX sy-tabix.
ENDLOOP.
*&-----------------
*& Build field catlog
*&-----------------
*MTART列用黄色显示
wa_catlog-emphasize = 'C310'.
MODIFY it_catlog FROM wa_catlog TRANSPORTING emphasize
WHERE fieldname = 'MTART'.
wa_layout-info_fieldname = 'ROW_COLOR'.
wa_layout-coltab_fieldname = 'COL_COLOR'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
is_layout = wa_layout
it_fieldcat = it_catlog
TABLES
t_outtab = it_tab.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/634491/viewspace-151157/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/634491/viewspace-151157/