ABAP SALV-颜色(列、行、单元格)

01 功能说明

上篇:ABAP SALV-固定列、鼠标悬停文本

本系列将通过模拟用户与开发者之间的对话场景,来逐步演示SALV的使用。

在本篇中,我们将延续前文内容,解决用户最新提出的需求。今天我们将探讨SALV模型中如何添加列颜色、 行颜色以及单元格颜色。相信通过实际操作,你能迅速理解和掌握这些知识点。

让我们一起动手尝试一下,看看如何实现这些功能吧!

02 功能效果

第18天 用户说:列、行、单元格颜色

启程、到达时间整列设置颜色,图标行按需分别设置颜色。

      "列颜色
      DATA ls_color TYPE lvc_s_colo.
      ls_color-col = 5.
      ls_color-int = 1.
      ls_color-inv = 0.

      lo_column ?= lo_columns->get_column( columnname = 'DEPTIME' ).
      lo_column->set_color( ls_color ).
      lo_column ?= lo_columns->get_column( columnname = 'ARRTIME' ).
      lo_column->set_color( ls_color ).

在这里插入图片描述

      "行、单元格颜色
      lo_columns->set_color_column( 'SCOL' ).

      DATA ls_scol TYPE lvc_s_scol.
      DATA lt_scol TYPE lvc_t_scol.
      LOOP AT gt_spfli INTO gs_spfli.
        CASE sy-tabix.
          WHEN 1.
            "行颜色
            CLEAR ls_scol.
            ls_scol-color-col = 5.
            ls_scol-color-int = 1.
            ls_scol-color-inv = 0.

            ls_scol-fname = ''.
            ls_scol-nokeycol = ''.
            APPEND ls_scol TO gs_spfli-scol.
          WHEN 2.
*            "行颜色(覆盖Key颜色)
            CLEAR ls_scol.
            ls_scol-color-col = 6.
            ls_scol-color-int = 1.
            ls_scol-color-inv = 0.

            ls_scol-fname = ''.
            ls_scol-nokeycol = 'X'. "避免被Key颜色覆盖
            APPEND ls_scol TO gs_spfli-scol.
          WHEN 3.
            "单元格颜色
            CLEAR ls_scol.
            ls_scol-color-col = 3.
            ls_scol-color-int = 1.
            ls_scol-color-inv = 0.

            ls_scol-fname = 'COUNTRYFR'.
            ls_scol-nokeycol = 'X'.
            APPEND ls_scol TO gs_spfli-scol.

            ls_scol-fname = 'COUNTRYTO'.
            APPEND ls_scol TO gs_spfli-scol.

            ls_scol-fname = 'FLTIME'.
            APPEND ls_scol TO gs_spfli-scol.
          WHEN OTHERS.
        ENDCASE.
        MODIFY gt_spfli FROM gs_spfli.
      ENDLOOP.

在这里插入图片描述

03 源码分享

TYPES:
 BEGIN OF gty_spfli_incl,
  scol TYPE lvc_t_scol,
 END OF gty_spfli_incl.

DATA:
 BEGIN OF gs_spfli.
  INCLUDE TYPE spfli.
  INCLUDE TYPE gty_spfli_incl.
DATA:
 END OF gs_spfli,
  gt_spfli LIKE TABLE OF gs_spfli.

START-OF-SELECTION.
  SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli UP TO 30 ROWS.

  DATA go_salv TYPE REF TO cl_salv_table.
  cl_salv_table=>factory(
   IMPORTING
     r_salv_table = go_salv
   CHANGING
     t_table      = gt_spfli ).
*------------------------------------*
  DATA lo_display TYPE REF TO cl_salv_display_settings.

  lo_display = go_salv->get_display_settings( ).
  lo_display->set_list_header( 'ABAP SALV演示程序-公众号(ABAP猿)' ).
  lo_display->set_striped_pattern( 'X' ).
*------------------------------------*
  DATA lo_functions TYPE REF TO cl_salv_functions.

  lo_functions = go_salv->get_functions( ).
  lo_functions->set_all( 'X' ).
*------------------------------------*
  DATA lo_columns TYPE REF TO cl_salv_columns_table .
  DATA lo_column TYPE REF TO cl_salv_column_table .

  lo_columns = go_salv->get_columns( ).
  lo_columns->set_optimize( 'X' ).

  "列颜色
  DATA ls_color TYPE lvc_s_colo.
  ls_color-col = 5.
  ls_color-int = 1.
  ls_color-inv = 0.

  lo_column ?= lo_columns->get_column( columnname = 'DEPTIME' ).
  lo_column->set_color( ls_color ).
  lo_column ?= lo_columns->get_column( columnname = 'ARRTIME' ).
  lo_column->set_color( ls_color ).

  "行、单元格颜色
  lo_columns->set_color_column( 'SCOL' ).

  DATA ls_scol TYPE lvc_s_scol.
  DATA lt_scol TYPE lvc_t_scol.
  LOOP AT gt_spfli INTO gs_spfli.
    CASE sy-tabix.
      WHEN 1.
        "行颜色
        CLEAR ls_scol.
        ls_scol-color-col = 5.
        ls_scol-color-int = 1.
        ls_scol-color-inv = 0.

        ls_scol-fname = ''.
        ls_scol-nokeycol = ''.
        APPEND ls_scol TO gs_spfli-scol.
      WHEN 2.
        "行颜色(覆盖Key颜色)
        CLEAR ls_scol.
        ls_scol-color-col = 6.
        ls_scol-color-int = 1.
        ls_scol-color-inv = 0.

        ls_scol-fname = ''.
        ls_scol-nokeycol = 'X'. "避免被Key颜色覆盖
        APPEND ls_scol TO gs_spfli-scol.
      WHEN 3.
        "单元格颜色
        CLEAR ls_scol.
        ls_scol-color-col = 3.
        ls_scol-color-int = 1.
        ls_scol-color-inv = 0.

        ls_scol-fname = 'COUNTRYFR'.
        ls_scol-nokeycol = 'X'.
        APPEND ls_scol TO gs_spfli-scol.

        ls_scol-fname = 'COUNTRYTO'.
        APPEND ls_scol TO gs_spfli-scol.

        ls_scol-fname = 'FLTIME'.
        APPEND ls_scol TO gs_spfli-scol.
      WHEN OTHERS.
    ENDCASE.
    MODIFY gt_spfli FROM gs_spfli.
  ENDLOOP.
*------------------------------------*
  go_salv->display( ).

小贴士:

  • 可使用BC_DATA_GEN生成数据,以便查看演示效果;
  • 以上纯属个人总结,如有纰漏请联系我;

以上是今日分享,希望对你有所帮助~~

04 关注我

更多干货请扫码关注微信公众号:ABAP猿
在这里插入图片描述

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ABAP SALV(SAP List Viewer)是一个用于在SAP系统中创建和显示报表的工具。要在ABAP SALV报表中添加复选框(checkbox),你可以按照以下步骤进操作: 1. 定义内表(table):首先,你需要定义一个内表来存储数据和复选框的状态。可以使用`TYPES`关键字定义一个包含所需字段的结构。 2. 填充内表数据:将需要显示的数据填充到内表中。可以使用`APPEND`语句将数据添加到内表中。 3. 创建SALV对象:使用`CL_SALV_TABLE`类创建一个SALV对象,并将内表作为参数传递给构造方法。 4. 添加复选框:通过调用`ADD_CHECKBOX_COLUMN`方法,为SALV对象添加一个复选框。可以指定该的标题和字段名。 5. 显示报表:使用`DISPLAY`方法显示SALV报表。 下面是一个简单的示例代码: ```abap DATA: lt_data TYPE TABLE OF (your_structure), lo_salv TYPE REF TO cl_salv_table. * 定义内表类型 TYPES: BEGIN OF ty_data, field1 TYPE data_type, field2 TYPE data_type, checkbox TYPE abap_bool, END OF ty_data. * 填充内表数据 APPEND VALUE #( field1 = value1 field2 = value2 ) TO lt_data. * 创建SALV对象 lo_salv = cl_salv_table=>factory( ). * 添加复选框 lo_salv->add_checkbox_column( title = 'CheckBox' fieldname = 'CHECKBOX' ). * 设置内表数据 lo_salv->set_table_for_first_display( exporting i_structure_name = 'TY_DATA' changing it_outtab = lt_data ). * 显示报表 lo_salv->display( ). ``` 这段代码将在SALV报表中显示一个复选框,用户可以选择或取消选择复选框。请根据你的实际需求修改字段名称、数据类型和内表数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值