提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、ALV 行颜色控制
数据定义,定义行颜色字段,line_color
DATA: BEGIN OF gs_marc,
line_color(4) TYPE c. " 定义行颜色字段
INCLUDE STRUCTURE marc .
DATA: END OF gs_marc.
DATA: gt_marc LIKE TABLE OF gs_marc.
" 获取数据,颜色赋值,gs_marc-line_color = ‘C310’. 黄色。
FORM get_matnr_data .
SELECT matnr
werks
eisbe
UP TO 40 ROWS
FROM marc
INTO CORRESPONDING FIELDS OF TABLE gt_marc
WHERE matnr IN s_matnr
AND werks IN s_werks
AND eisbe NE space.
IF sy-subrc EQ 0.
LOOP AT gt_marc INTO gs_marc.
IF gs_marc-eisbe > 3.
gs_marc-line_color = 'C310'. ” 当安全库存大于3,该行显示黄色。
MODIFY gt_marc FROM gs_marc.
ENDIF.
MODIFY gt_marc FROM gs_marc.
ENDLOOP.
ENDIF.
ENDFORM.
格式中指定颜色字段,gs_layout-info_fname = ‘LINE_COLOR’.
FORM get_layout .
gs_layout-zebra = 'X' . " 使ALV界面呈现颜色交替
gs_layout-sel_mode = 'A' . " 选择模式,“A”在最左端有选择按钮
gs_layout-cwidth_opt = 'X' . " 自动优化列宽
gs_layout-detailinit = 'X' . " 是否出现细节屏幕
gs_layout-info_fname = 'LINE_COLOR'.
ENDFORM.
结果展示:安全库存大于3的行高亮(C310)。
二、ALV 列控制颜色
只需在fieldcat 中想添加颜色的列EISBE前加入: gs_fieldcat-emphasize = ‘C510’ .
FORM get_fielecat .
DEFINE add_fieldcat.
v_pos = v_pos + 1 .
gs_fieldcat-col_pos = v_pos .
gs_fieldcat-fieldname = &1 . " 需要输出的内表的字段名
gs_fieldcat-scrtext_l = &2. " 字段的描述-长字段标签 screen text long
gs_fieldcat-scrtext_m = &2. " 字段描述-中字段标签
gs_fieldcat-scrtext_s = &2. " 字段描述-短字段标签
gs_fieldcat-fix_column = 'X' . " 是否是固定列 column ['kɔləm]列
gs_fieldcat-tooltip = '小可爱'. "当用户将鼠标放到列名上时,可以显示“小可爱”
gs_fieldcat-no_zero = 'X'. " 0 不显示
gs_fieldcat-rollname = &3. " F1 指定数据元素,数据元素,不是字段名 比如工厂 如果写WERKS 是不会显示F1的
gs_fieldcat-ref_field = &1. " F4 指定参考字段
gs_fieldcat-ref_table = &4. " F4 指定参考表
append gs_fieldcat to gt_fieldcat.
clear gs_fieldcat.
END-OF-DEFINITION.
add_fieldcat: 'MATNR' '物料编码' 'MATNR' 'MARC'.
add_fieldcat: 'WERKS' '工厂' 'WERKS_D' 'MARC'.
gs_fieldcat-emphasize = 'C510' .
add_fieldcat: 'EISBE' '安全库存' 'EISBE' 'MARC'.
ENDFORM.
结果展示: 安全库存这一列绿色(C510)
三、 ALV 单元格列颜色控制
数据定义 cell_color 标记单元格颜色字段
DATA: BEGIN OF gs_marc,
CELL_COLOR TYPE **lvc_t_scol.** " cell_color 标记单元格颜色字段
INCLUDE STRUCTURE marc .
DATA: END OF gs_marc.
获取数据, 根据条件指定产生颜色的单元格 EISBE
FORM get_matnr_data .
DATA: gs_color type lvc_s_scol.
SELECT matnr
werks
eisbe
UP TO 40 ROWS
FROM marc
INTO CORRESPONDING FIELDS OF TABLE gt_marc
WHERE matnr IN s_matnr
AND werks IN s_werks
AND eisbe NE space.
IF sy-subrc EQ 0.
LOOP AT gt_marc INTO gs_marc.
IF gs_marc-eisbe > 10 and gs_marc-eisbe < 200.
gs_color-fname = 'EISBE'.
gs_color-color-col = '6'.
gs_color-color-int = '1'.
gs_color-color-inv = '0'.
append gs_color to gs_marc-CELL_COLOR.
endif.
MODIFY gt_marc FROM gs_marc.
ENDLOOP.
ENDIF.
ENDFORM.
格式定义 gs_layout-ctab_fname = ‘CELL_COLOR’.
FORM get_layout .
gs_layout-zebra = 'X' . " 使ALV界面呈现颜色交替
gs_layout-sel_mode = 'A' . " 选择模式,“A”在最左端有选择按钮
gs_layout-cwidth_opt = 'X' . " 自动优化列宽
gs_layout-detailinit = 'X' . " 是否出现细节屏幕
gs_layout-detailtitl = '详细内容小可爱' . " 细节屏幕标题
gs_layout-ctab_fname = 'CELL_COLOR'.
ENDFORM.
结果展示:安全库存大于10 小于 200 显示红色C610