SAP Dialog屏幕开发(七)

        1.1、控制ALV每行的显示颜色
       
很多人希望显示报表时能将一些特定条件的行数据以不同颜色来进行区分,使报表展示更加直观。
        STEP | 01 首先需要在报表显示的关联内表中新增一个字段,由于存放内表数据某行的颜色属性。
        STEP | 02 定义一个ALV报表输出关联的LAYOUT,并将新增的COLOR字段名称作为该LAYOUT的INFO_FNAME字段的赋值。
        STEP | 03 在内表中按条件对COLOR字段赋值,以字母C加上一个3位的数字作为ALV的颜色码,例如:C510表示绿色,C610表示红色,C310表示黄色;本例中设置当DISTANC字段为空时,将该行的颜色变为C610红色。代码如下:
 

*&---------------------------------------------------------------------*
*& Report ZSCREEN07
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zscreen07.

TABLES : spfli.

DATA : BEGIN OF lspfli OCCURS 0.  "在内表中新增COLOR作为颜色属性存放字段
    INCLUDE STRUCTURE spfli.
DATA : color TYPE char10,
       END OF lspfli.

DATA : fieldcat           TYPE lvc_t_fcat,  "定义Fieldcat对象
       grid               TYPE REF TO cl_gui_alv_grid,  "定义ALV控件名
       g_container        TYPE scrfname VALUE 'CONT1', "定义本地容器的对象名
       is_layout          type lvc_s_layo,
       g_custom_container TYPE REF TO cl_gui_custom_container.  "定义容器对象名

SELECTION-SCREEN BEGIN OF SCREEN 0101 AS SUBSCREEN.

SELECTION-SCREEN BEGIN OF BLOCK 10 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS : s_carrid FOR spfli-carrid,
                 s_connid FOR spfli-connid.

SELECTION-SCREEN END OF BLOCK 10.

SELECTION-SCREEN END OF SCREEN 0101.

START-OF-SELECTION.

  CALL SCREEN '1001'.

FORM alvshow.

  CREATE OBJECT g_custom_container   "创建容器对象
    EXPORTING
      container_name = g_container.
  CREATE OBJECT grid
    EXPORTING
      i_parent = g_custom_container. "创建控件对象
  is_layout-info_fname = 'COLOR'.    "定义颜色属性字段
  CALL METHOD grid->set_table_for_first_display
    EXPORTING
      i_structure_name = 'SPFLI'
      is_layout        = is_layout
      i_save           = 'X'
    CHANGING
      it_outtab        = lspfli[]
      it_fieldcatalog  = fieldcat.


ENDFORM.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_1001  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_1001 INPUT.

  CASE sy-ucomm.

    WHEN '&EXIT'.
      LEAVE TO SCREEN 0.
    WHEN 'EXEC'.
      SELECT * FROM spfli
        INTO CORRESPONDING FIELDS OF TABLE lspfli
        WHERE carrid IN s_carrid
        AND   connid IN s_connid.

        lspfli-color = 'C610'.
        modify lspfli transporting color where distance <= '3000'. "当distance为空时,显示更改属性

      IF g_custom_container IS INITIAL.   "检查是否创建容器对象

        PERFORM alvshow.

      ELSE.

        CALL METHOD grid->refresh_table_display.

      ENDIF.

  ENDCASE.

ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  STATUS_1001  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_1001 OUTPUT.
  SET PF-STATUS 'T001'.
*  SET TITLEBAR 'xxx'.
ENDMODULE.

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SAP扫地僧

你的鼓励将是我最大的动力!

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

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

打赏作者

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

抵扣说明:

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

余额充值