ALV Color-颜色

目录

前言

实战

        列颜色

        行颜色

         单元格颜色

前言

        在ABAP ALV中,Color颜色设置是一种增强列表显示效果的重要手段,可以用来突出显示特定行、列或单元格,以吸引用户注意或传达数据的特定状态。

        颜色设置中有优先级顺序,他们是单元格->行->列,即若同时使用了上面的三种更改颜色的方法,则列的颜色会被行的颜色覆盖掉,而行的颜色又会被单元格的颜色覆盖掉,最终只会显示出单元格的颜色。
        如果这列被设置为关键列,就是gs_fieldcat-KEY = 'X' ,那么颜色设置就不会起作用。

实战

        列颜色

        直接设置字段列的fieldcat-emphasize属性;
                 gs_fieldcat-emphasize = 'C310'.

        行颜色

        ALV中的每行数据颜色是通过Layout来控制的。需要在显示输出内表结构中增加一列字段,用来存储数据行的颜色。
            gs_layout-info_fieldname = 'COLOR'.

        ALV中的颜色是由4位数组成:'C'+COL+INT+INV

        参数结构如下:

*** Structure for colors
types: begin of slis_color,
         col type i,
         int type i,
         inv type i,
       end of slis_color.

        详细解释:

                第1位:固定取值C;
                第2位-COL:颜色值,取值为0~7;

                第3位-INT:高亮,即颜色是否加深,取值为0、1;(1表示加深显示)
                第4位-INV:颜色是否反转,即颜色是作用在背景上,还是作用在输出字符上,取值上为0、1(为1时表示设置的是前景色,即输出字符本身的颜色,好像只有在第3位为0时才有效?) 

        颜色值测试表:

        完整代码:

TYPE-POOLS:slis.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA: gs_layout TYPE slis_layout_alv.

DATA:BEGIN OF gt_data OCCURS 0,
  val1(4),"颜色值
  val2(4),"颜色值
  color(4),"用来存储行颜色
  END OF gt_data.

START-OF-SELECTION.
  PERFORM f_inital.
  DEFINE f_fdcat.
    clear gt_fieldcat.
    gt_fieldcat-fieldname = &1.
    gt_fieldcat-seltext_l = &2.
    append gt_fieldcat.
  END-OF-DEFINITION.

  f_fdcat 'VAL1' '行颜色值'.
  f_fdcat 'VAL2' '行颜色值'.

  gs_layout-info_fieldname = 'COLOR'." 指定哪一列用来作为行颜色的列
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      it_fieldcat = gt_fieldcat[]
      is_layout   = gs_layout
    TABLES
      t_outtab    = gt_data.

FORM f_inital .
  DATA: c1,c2,c3.
  DO 8 TIMES.
    c1 = sy-index - 1.
    DO 2 TIMES.
      c2 = sy-index - 1.
      DO 2 TIMES.
        c3 = sy-index - 1.
        CONCATENATE 'C' c1 c2 c3 INTO gt_data-color.
        gt_data-val1 = gt_data-color.
        gt_data-val2 = gt_data-color.
        APPEND gt_data.
      ENDDO.
    ENDDO.
  ENDDO.
ENDFORM.

         单元格颜色

         每个单元格的颜色也是可以单独进行设置的,当然既然可以给单元格设置颜色,则整列相同颜色也是可以采用此方式来设置的。
        gs_layout-coltab_fieldname = 'COLORTABLE'

        展示效果:

        完整代码:

TYPE-POOLS:slis.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA: gs_layout TYPE slis_layout_alv.

DATA:BEGIN OF gt_data OCCURS 0,
  val1(40),"颜色值
  val2(40),"颜色值
  val3(40),
  colortable TYPE slis_t_specialcol_alv, "每行中的单元格颜色内表,可对多个单元格进行不同颜色设置
  END OF gt_data.
"每行中单元格颜色列表
DATA: gt_color TYPE slis_t_specialcol_alv WITH HEADER LINE.

START-OF-SELECTION.
  PERFORM f_inital.
  DEFINE def_fdcat.
    clear gt_fieldcat.
    gt_fieldcat-fieldname = &1.
    gt_fieldcat-seltext_l = &2.
    append gt_fieldcat.
  END-OF-DEFINITION.

  def_fdcat 'VAL1' '颜色值'.
  def_fdcat 'VAL2' '颜色值'.
  def_fdcat 'VAL3' '无颜色'.

  gs_layout-colwidth_optimize = 'X'.
  gs_layout-coltab_fieldname = 'COLORTABLE'."设置输出内表中哪列为颜色列表

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      it_fieldcat = gt_fieldcat[]
      is_layout   = gs_layout
    TABLES
      t_outtab    = gt_data.

FORM f_inital .
  DATA: c1,c2.
  DO 7 TIMES.
    c1 = gt_color-color-col = sy-index - 1."颜色值
    DO 2 TIMES.
      c2 = gt_color-color-int =  sy-index - 1."颜色亮度
      gt_color-color-inv = '0'."颜色作用于背景
      CASE sy-index .
        WHEN 1.
          gt_color-fieldname = 'VAL1'."需进行颜色设置的列名(已具体到单元格)
          CONCATENATE 'col=' c1 ` ` 'int=' c2 ` `  'inv=0'  INTO gt_data-val1 .
        WHEN 2.
          gt_color-fieldname = 'VAL2'."需进行颜色设置的列名(已具体到单元格)
          CONCATENATE 'col=' c1 ` ` 'int=' c2 ` `  'inv=0'  INTO gt_data-val2 .
      ENDCASE.
      APPEND gt_color.
    ENDDO.
    "设置每行数据中单元格的颜色内表
    gt_data-colortable = gt_color[].
    gt_data-val3 = '无颜色'.
    APPEND gt_data.
    CLEAR:gt_color,gt_color[].
  ENDDO.
ENDFORM.

  • 19
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
ABAP中,可以通过使用ALV列表视图(ALV Grid)来为特定的单元格添加颜色提示。下面是一个简单的示例代码,演示如何在ALV Grid中添加颜色提示: 1. 首先,你需要在程序的顶部包含以下两个库: ```abap TYPE-POOLS: slis. INCLUDE: slis. ``` 2. 然后,在程序中定义一个内部表来存储显示的数据: ```abap DATA: lt_data TYPE TABLE OF spfli. ``` 3. 接下来,使用函数模块REUSE_ALV_GRID_DISPLAY来显示ALV Grid: ```abap CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid TABLES t_outtab = lt_data. ``` 4. 然后,使用函数模块REUSE_ALV_FIELDCATALOG_MERGE来定义字段目录: ```abap CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = sy-repid i_internal_tabname = 'SPFLI' CHANGING ct_fieldcat = gt_fieldcat[] EXCEPTIONS inconsistent_interface = 1 program_error = 2 OTHERS = 3. ``` 5. 接下来,在字段目录中定义一个颜色字段,并设置其属性: ```abap LOOP AT gt_fieldcat ASSIGNING FIELD-SYMBOL(<fs_fieldcat>). IF <fs_fieldcat>-fieldname = 'CARRID'. <fs_fieldcat>-color-col = 'C'. <fs_fieldcat>-emphasize = 'X'. ENDIF. ENDLOOP. ``` 在上述代码中,我们为字段'CARRID'定义了一个颜色字段,并设置其颜色属性为'C',以及强调属性为'X'。 6. 最后,通过调用函数模块REUSE_ALV_GRID_DISPLAY,显示带有颜色提示的ALV Grid: ```abap CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid TABLES t_outtab = lt_data fieldcat = gt_fieldcat. ``` 以上就是一个简单的示例,演示了如何在ABAP中使用ALV Grid来添加颜色提示。你可以根据自己的需求进行进一步的定制和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SAP_亮亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值