ALV 颜色控制

文章介绍了如何在SAPALV报告中进行行、列及单元格的颜色控制。通过设置数据字段line_color和cell_color,结合条件判断,实现不同颜色显示。例如,当安全库存大于3时,行显示黄色;安全库存列整体显示绿色;安全库存值在10到200之间的单元格显示红色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、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
在这里插入图片描述

注意:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值