一、行颜色
1、在内表中定义字段line_color(4),用来存储四位颜色值;
2、在内表循环中给这个字段赋值;
3、在layout结构中设定颜色字段的名字,FM:wa_layout-info_fieldname = 'LINE_COLOR'.或者OO:wa_layout-info_fname = 'LINE_COLOR'.
二、列颜色
1、在ALV显示字段设置中,给gt_fieldcat-emphasize赋颜色值就可以。
三、单元格颜色
1、在内表中定义字段cellcolor TYPE lvc_t_scol,它是内表,用来存储单元格的颜色;
2、在内表循环中给这个内表赋值;
3、在layout结构中设定颜色字段的名字,FM:wa_layout-coltab_fieldname = 'CELLCOLR'.或者wa_layout-ctab_fname = 'CELLCOLR'.
附上:示例
1、行颜色
*&---------------------------------------------------------------------*
*& Report YTEST073
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ytest074.
*&---------------------------------------------------------------------*
*& Tables Declarition *
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Type-pools Declarition *
*&---------------------------------------------------------------------*
TYPE-POOLS: slis.
*&---------------------------------------------------------------------*
*& Type Definition *
*&---------------------------------------------------------------------*
TYPES: BEGIN OF typ_out,
carrid TYPE sflight-carrid,
connid TYPE sflight-connid,
fldate TYPE sflight-fldate,
price TYPE sflight-price,
line_color(4), "颜色
END OF typ_out.
*&---------------------------------------------------------------------*
*& Work Area Definition *
*&---------------------------------------------------------------------*
**--ALV用到的工作区定义
DATA: wa_fieldcat TYPE slis_fieldcat_alv,
wa_layout TYPE slis_layout_alv.
*&---------------------------------------------------------------------*
*& Inner Table Definition *
*&---------------------------------------------------------------------*
DATA: gt_out TYPE TABLE OF typ_out WITH HEADER LINE.
**--ALV用到的内表定义
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
*&---------------------------------------------------------------------*
*& Data Definition *
*&---------------------------------------------------------------------*
DATA: g_count TYPE i VALUE 1.
**--ALV变量声明
DATA: g_repid LIKE sy-repid VALUE sy-repid.
START-OF-SELECTION.
**--获取主数据
SELECT carrid
connid
fldate
price
INTO TABLE gt_out
FROM sflight.
LOOP AT gt_out WHERE carrid EQ 'AF'.
gt_out-line_color = 'C510'.
MODIFY gt_out TRANSPORTING color.
ENDLOOP.
END-OF-SELECTION.
**--ALV显示字段设置
PERFORM frm_set_all_fieldcat.
**--ALV显示样式设置
PERFORM frm_set_layout.
**--ALV显示
PERFORM frm_display_alv.
*&---------------------------------------------------------------------*
*& Form FRM_SET_ALL_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_set_all_fieldcat .
DATA: l_pos TYPE i VALUE 0.
CLEAR gt_fieldcat.
REFRESH gt_fieldcat.
DEFINE hout.
l_pos = l_pos + 1.
gt_fieldcat-tabname = 'GT_ALV'. "内表
gt_fieldcat-fieldname = &1.
gt_fieldcat-seltext_m = &2.
gt_fieldcat-col_pos = l_pos.
gt_fieldcat-outputlen = &3.
gt_fieldcat-edit = &4.
gt_fieldcat-key = &5. "是否在进行编辑
gt_fieldcat-checkbox = &6. "勾选框
gt_fieldcat-emphasize = &7. "勾选框
append gt_fieldcat.
clear gt_fieldcat.
END-OF-DEFINITION.
hout 'CARRID' 'CARRID' '' '' '' '' ''.
hout 'CONNID' 'CONNID' '' '' '' '' ''.
hout 'FLDATE' 'FLDATE' '' '' '' '' ''.
hout 'PRICE' 'PRICE' '' '' '' '' ''.
ENDFORM. " FRM_SET_ALL_FIELDCAT
*&---------------------------------------------------------------------*
*& Form FRM_SET_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_set_layout .
wa_layout-zebra = 'X'.
wa_layout-f2code = '&ETA'. "是否有事件
wa_layout-colwidth_optimize = 'X'.
wa_layout-info_fieldname = 'LINE_COLOR'. " 行颜色字段
ENDFORM. " FRM_SET_LAYOUT
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_display_alv .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
i_callback_program = g_repid
* i_callback_pf_status_set = 'FRM_SET_STATUS'
* i_callback_user_command = 'FRM_USER_COMMAND'
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
is_layout = wa_layout
it_fieldcat = gt_fieldcat[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* it_sort = it_sort[]
* IT_FILTER =
* IS_SEL_HIDE =
* i_default = 'X'
i_save = 'X'
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = gt_out
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " FRM_DISPLAY_ALV
二、列颜色
*&---------------------------------------------------------------------*
*& Report YTEST073
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ytest073.
*&---------------------------------------------------------------------*
*& Tables Declarition *
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Type-pools Declarition *
*&---------------------------------------------------------------------*
TYPE-POOLS: slis.
*&---------------------------------------------------------------------*
*& Type Definition *
*&---------------------------------------------------------------------*
TYPES: BEGIN OF typ_out,
carrid TYPE sflight-carrid,
connid TYPE sflight-connid,
fldate TYPE sflight-fldate,
price TYPE sflight-price,
END OF typ_out.
*&---------------------------------------------------------------------*
*& Work Area Definition *
*&---------------------------------------------------------------------*
**--ALV用到的工作区定义
DATA: wa_fieldcat TYPE slis_fieldcat_alv,
wa_layout TYPE slis_layout_alv.
*&---------------------------------------------------------------------*
*& Inner Table Definition *
*&---------------------------------------------------------------------*
DATA: gt_out TYPE TABLE OF typ_out WITH HEADER LINE.
**--ALV用到的内表定义
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
*&---------------------------------------------------------------------*
*& Data Definition *
*&---------------------------------------------------------------------*
DATA: g_count TYPE i VALUE 1.
**--ALV变量声明
DATA: g_repid LIKE sy-repid VALUE sy-repid.
START-OF-SELECTION.
**--获取主数据
SELECT carrid
connid
fldate
price
INTO TABLE gt_out
FROM sflight.
END-OF-SELECTION.
**--ALV显示字段设置
PERFORM frm_set_all_fieldcat.
**--ALV显示样式设置
PERFORM frm_set_layout.
**--ALV显示
PERFORM frm_display_alv.
*&---------------------------------------------------------------------*
*& Form FRM_SET_ALL_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_set_all_fieldcat .
DATA: l_pos TYPE i VALUE 0.
CLEAR gt_fieldcat.
REFRESH gt_fieldcat.
DEFINE hout.
l_pos = l_pos + 1.
gt_fieldcat-tabname = 'GT_ALV'. "内表
gt_fieldcat-fieldname = &1.
gt_fieldcat-seltext_m = &2.
gt_fieldcat-col_pos = l_pos.
gt_fieldcat-outputlen = &3.
gt_fieldcat-edit = &4.
gt_fieldcat-key = &5. "是否在进行编辑
gt_fieldcat-checkbox = &6. "勾选框
gt_fieldcat-emphasize = &7. "勾选框
append gt_fieldcat.
clear gt_fieldcat.
END-OF-DEFINITION.
hout 'CARRID' 'CARRID' '' '' '' '' ''.
hout 'CONNID' 'CONNID' '' '' '' '' ''.
hout 'FLDATE' 'FLDATE' '' '' '' '' ''.
hout 'PRICE' 'PRICE' '' '' '' '' 'C510'.
ENDFORM. " FRM_SET_ALL_FIELDCAT
*&---------------------------------------------------------------------*
*& Form FRM_SET_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_set_layout .
wa_layout-zebra = 'X'.
wa_layout-f2code = '&ETA'. "是否有事件
wa_layout-colwidth_optimize = 'X'.
ENDFORM. " FRM_SET_LAYOUT
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_display_alv .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
i_callback_program = g_repid
* i_callback_pf_status_set = 'FRM_SET_STATUS'
* i_callback_user_command = 'FRM_USER_COMMAND'
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
is_layout = wa_layout
it_fieldcat = gt_fieldcat[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* it_sort = it_sort[]
* IT_FILTER =
* IS_SEL_HIDE =
* i_default = 'X'
i_save = 'X'
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = gt_out
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " FRM_DISPLAY_ALV
三、单元格颜色
*&---------------------------------------------------------------------*
*& Report YTEST073
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ytest075.
*&---------------------------------------------------------------------*
*& Tables Declarition *
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Type-pools Declarition *
*&---------------------------------------------------------------------*
TYPE-POOLS: slis.
*&---------------------------------------------------------------------*
*& Type Definition *
*&---------------------------------------------------------------------*
TYPES: BEGIN OF typ_out,
carrid TYPE sflight-carrid,
connid TYPE sflight-connid,
fldate TYPE sflight-fldate,
price TYPE sflight-price,
cellcolor TYPE lvc_t_scol, "单元格颜色
END OF typ_out.
*&---------------------------------------------------------------------*
*& Work Area Definition *
*&---------------------------------------------------------------------*
**--ALV用到的工作区定义
DATA: wa_fieldcat TYPE slis_fieldcat_alv,
wa_layout TYPE slis_layout_alv,
wa_cellcolor TYPE lvc_s_scol. " 单元格颜色结构
*&---------------------------------------------------------------------*
*& Inner Table Definition *
*&---------------------------------------------------------------------*
DATA: gt_out TYPE TABLE OF typ_out WITH HEADER LINE.
**--ALV用到的内表定义
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
*&---------------------------------------------------------------------*
*& Data Definition *
*&---------------------------------------------------------------------*
DATA: g_count TYPE i VALUE 1.
**--ALV变量声明
DATA: g_repid LIKE sy-repid VALUE sy-repid.
START-OF-SELECTION.
**--获取主数据
SELECT carrid
connid
fldate
price
INTO CORRESPONDING FIELDS OF TABLE gt_out
FROM sflight.
"---单元格颜色控制
LOOP AT gt_out WHERE carrid EQ 'AF'.
wa_cellcolor-fname = 'CONNID'.
wa_cellcolor-color-col = '3'.
wa_cellcolor-color-int = '1'.
wa_cellcolor-color-inv = '0'.
APPEND wa_cellcolor TO gt_out-cellcolor.
MODIFY gt_out TRANSPORTING cellcolor.
ENDLOOP.
END-OF-SELECTION.
**--ALV显示字段设置
PERFORM frm_set_all_fieldcat.
**--ALV显示样式设置
PERFORM frm_set_layout.
**--ALV显示
PERFORM frm_display_alv.
*&---------------------------------------------------------------------*
*& Form FRM_SET_ALL_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_set_all_fieldcat .
DATA: l_pos TYPE i VALUE 0.
CLEAR gt_fieldcat.
REFRESH gt_fieldcat.
DEFINE hout.
l_pos = l_pos + 1.
gt_fieldcat-tabname = 'GT_ALV'. "内表
gt_fieldcat-fieldname = &1.
gt_fieldcat-seltext_m = &2.
gt_fieldcat-col_pos = l_pos.
gt_fieldcat-outputlen = &3.
gt_fieldcat-edit = &4.
gt_fieldcat-key = &5. "是否在进行编辑
gt_fieldcat-checkbox = &6. "勾选框
gt_fieldcat-emphasize = &7. "勾选框
append gt_fieldcat.
clear gt_fieldcat.
END-OF-DEFINITION.
hout 'CARRID' 'CARRID' '' '' '' '' ''.
hout 'CONNID' 'CONNID' '' '' '' '' ''.
hout 'FLDATE' 'FLDATE' '' '' '' '' ''.
hout 'PRICE' 'PRICE' '' '' '' '' ''.
ENDFORM. " FRM_SET_ALL_FIELDCAT
*&---------------------------------------------------------------------*
*& Form FRM_SET_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_set_layout .
wa_layout-zebra = 'X'.
wa_layout-f2code = '&ETA'. "是否有事件
wa_layout-colwidth_optimize = 'X'.
wa_layout-coltab_fieldname = 'CELLCOLOR'. " 单元格颜色字段
ENDFORM. " FRM_SET_LAYOUT
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_display_alv .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
i_callback_program = g_repid
* i_callback_pf_status_set = 'FRM_SET_STATUS'
* i_callback_user_command = 'FRM_USER_COMMAND'
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
is_layout = wa_layout
it_fieldcat = gt_fieldcat[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* it_sort = it_sort[]
* IT_FILTER =
* IS_SEL_HIDE =
* i_default = 'X'
i_save = 'X'
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = gt_out
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " FRM_DISPLAY_ALV
四、颜色编码
ABAP中的颜色代码是由4位字都组成的
Cxyz
C:color的简写,颜色代码均以C开头
x:标准色代码,SAP中一共有7个标准色
y:反转颜色启用/关闭 1/0
z:增强颜色启用/关闭 1/0
标准色代码一览表
X | 颜色 | 主要用处 |
1 | 灰蓝色 | 抬头、标题栏 |
2 | 浅灰色 | 列表内容 |
3 | 黄色 | 汇总 |
4 | 蓝色 | 关键字 |
5 | 绿色 | 正确 |
6 | 红色 | 错误 |
7 | 橙色 | 控制 |