ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 为ALV Grid设定行/列/单元格的颜色

为ALV Grid设定行/列/单元格的颜色

原创 Linux操作系统 作者:hawkx 时间:2008-01-18 10:25:42 0 删除 编辑
为了设定行的颜色,需要在传递给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.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/634491/viewspace-151157/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 幸福婚姻法则
请登录后发表评论 登录
全部评论

注册时间:2008-01-17

  • 博文量
    37
  • 访问量
    123229