过滤器(filter)

摘要:
本文介绍如何向SALV添加筛选器。具体方法如下:1.Get_Filters()获取过滤器类CL_SALV_对Filters的引用,2.调用方法ADD_Filters添加过滤条件。与范围和选择选项一样,过滤条件使用符号、选项、低和高。标志:I范围;E-超出范围选项:EQ-等于,NE-不等于,GT-大于,GE-大于,LE-小于,LT-小于,CP-包括模式,NP-排除模式,使用的通配符“*”,“+”低:下限值高:上限值此示例添加了日期字段ERDAT的筛选条件“20021009”。仅显示日期等于“20021009”的数据。该代码在SALV教程1-创建简单SALV_过滤器的基础上添加了一个方法集

本文介绍如何在SALV上添加过滤器(filter),具体方法如下:

1,通过方法get_filters()取得filter类CL_SALV_FILTERS的引用,

2,调用方法ADD_FILTERS添加过滤的条件,过滤条件和range和select-options一样,用到了sign,option,low&high。

sign:I-范围内;E-范围外

option: EQ-等于, NE-不等于, GT-大于, GE-大等于,LE-小等于, LT-小于,CP-包含pattern, NP-不包含pattern, 用到的通配符 '*'(多个字符),  '+'(单独字符)

low:下限值

high:上限值

本例子添加日期字段ERDAT的过滤条件'20021009' ,只有日期等于'20021009'的数据才显示。

代码在SALV教程1-创建简单SALV基础上添加了一个方法set_filters。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
*&---------------------------------------------------------------------*
*& 一个简单的通过类CL_SALV_TABLE生成SALV的例子
*&---------------------------------------------------------------------*
REPORT z_salv_13.
*
*----------------------------------------------------------------------*
*       CLASS lcl_report DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_reportDEFINITION.
*
  PUBLIC SECTION.
*
*   定义SALV输出内表
    TYPES:BEGIN OF ty_vbak,
             vbelnTYPE vbak-vbeln,
             erdatTYPE erdat,
             auartTYPE auart,
             kunnrTYPE kunnr,
           END OF ty_vbak.
*
    DATA: t_vbakTYPESTANDARD TABLE OF ty_vbak.
*
*   ALV reference
    DATA: o_alvTYPEREF TO cl_salv_table.
*
    METHODS:
*     抽取数据
      get_data,
*
*     生成输出内容
      generate_output.
*
*$*$*.....CODE_ADD_1 - Begin..................................1..*$*$*
*
* 定义private method来设定SALV不同特性
  PRIVATE SECTION.
    METHODS:
      set_pf_statusCHANGING co_alvTYPEREF TO cl_salv_table.
 
    METHODS:set_filtersCHANGING co_alvTYPEREF TO cl_salv_table.
*$*$*.....CODE_ADD_1 - End....................................1..*$*$*
 
ENDCLASS.                    "lcl_report DEFINITION
 
*----------------------------------------------------------------------*
*       CLASS lcl_report IMPLEMENTATION
*----------------------------------------------------------------------*
* 类实现
CLASS lcl_reportIMPLEMENTATION.
*
  METHOD get_data.
*   抽取数据
    SELECT vbeln
           erdat
           auart
           kunnr
      INTOTABLE t_vbak
      FROM vbak
           UP TO20ROWS.
*
  ENDMETHOD.                    "get_data
 
*.......................................................................
  METHOD generate_output.
*   New ALV instance
*   We are calling the static Factory method which will give back
*   the ALV object reference.
*
* exception class
    DATA: lx_msgTYPEREF TO cx_salv_msg.
    TRY.
        cl_salv_table=>factory(
          IMPORTING
            r_salv_table= o_alv
          CHANGING
            t_table      = t_vbak).
      CATCH cx_salv_msgINTO lx_msg.
    ENDTRY.
*
*$*$*.....CODE_ADD_2 - Begin..................................2..*$*$*
*
*    In this area we will call the methods which will set the
*      different properties to the ALV
*   调用status设置方法
    CALL METHOD set_pf_status
      CHANGING
        co_alv= o_alv.
 
*   调用filter设置方法
    CALL METHOD set_filters
      CHANGING
        co_alv= o_alv.
 
*$*$*.....CODE_ADD_2 - End....................................2..*$*$*
*
*
*   调用Display方法将数据输出到屏幕上
    o_alv->display().
*
  ENDMETHOD.                    "generate_output
*
*$*$*.....CODE_ADD_3 - Begin..................................3..*$*$*
*
*    In this area we will implement the methods which are defined in
*      the class definition
* status设置方法实现
  METHOD set_pf_status.
 
    DATA: lo_functionsTYPEREF TO cl_salv_functions_list.
*   设置默认的标准状态栏
    lo_functions= co_alv->get_functions().
    lo_functions->set_default( abap_true).
 
  ENDMETHOD.
 
* filter设置方法的实现
  METHOD set_filters.
*
    DATA: lo_filtersTYPEREF TO cl_salv_filters.
*
    lo_filters= co_alv->get_filters().
*
*   Set the filter for the column ERDAT
*     the filter criteria works exactly same as any
*     RANGE or SELECT-OPTIONS works.
    TRY.
        CALL METHOD lo_filters->add_filter
          EXPORTING
            columnname='ERDAT'
            sign       ='I'
            option     ='EQ'
            low        ='20021009'  "2002.10.09
*           high       =
          .
      CATCH cx_salv_not_found.                         "#EC NO_HANDLER
      CATCH cx_salv_data_error.                        "#EC NO_HANDLER
      CATCH cx_salv_existing.                          "#EC NO_HANDLER
    ENDTRY.
*
  ENDMETHOD.                    "set_filters
*$*$*.....CODE_ADD_3 - End....................................3..*$*$*
*
ENDCLASS.                    "lcl_report IMPLEMENTATION
 
START-OF-SELECTION.
 
  DATA: lo_reportTYPEREF TO lcl_report.
 
  CREATE OBJECT lo_report.
* 抽取数据
  lo_report->get_data().
* 生成SALV
  lo_report->generate_output().

没有添加过滤之前的运行结果,

2016-09-24_17-06-24

添加过滤之后,只显示了2002.10.09的数据

2016-09-24_17-07-36

以上。

免责声明:文章转载自《过滤器(filter)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【Azure Redis 缓存】Azure Cache for Redis 中如何快速查看慢指令情况(Slowlogs)docker下载镜像太慢的解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

一键生成IOS App Icon工具

每次您想要查看AppStore时,art都会给出一个1024x1024图标,然后进入修改图像大小和plist文件图标配置的繁琐过程。苹果已经改变了背景,需要删除alpha频道。此工具不再满足要求。我做了一个新的Nodejs。使用nodejs比使用java要好得多。或者你可以上传到这里制作图标!生成的结果如图所示:首先尝试使用Graphics2D进行绘制,pu...

Jdk升级到11引起的问题:程序包javax.xml.bind.annotation不存在

您可以看到ELDict类中有一个引用:importjavax。xml。绑定注释XmlAttribute;虽然未使用,但它会导致mvn编译错误。在在线绑定中搜索“包javax.xml.bind.nannotation不存在”。结果是:包javax。xml。bind Annotation不存在-CSDN论坛2009年12月2日·无法编译使用jaxb的类,因为软件...

vant上传文件到后端

Html代码<Ts代码文件列表=[]/image/[a-zA-z]+/。test(file.file.type)){this.$toast(“请上传图片”);returnfalse;config).then(res=>})。捕获(()=>拒绝)=>ts=“+newDate().getTime()).然后...

H3C 12508 收集诊断信息

案例:H3C12508单板卡出现remove状态,需要配合研发收集诊断信息。)总体:12500交换机返回三种文件----故障时诊断信息,主备单板的日志文件,主备单板的诊断日志操作步骤:一、故障时诊断信息:disdiagnostic-informationdiag收集必须在问题出现的时候,单板重起之前执行。在save时请选择Y保存到CF卡方式。一般情况下,此命...

ClickHouse之访问权限控制

Ck当前只有select和insert。这是我刚才提到的:60cd41aedc4e47e8883682b416109e7b7e345e15ecc63c2c98ecdab5e8e053a只读defaultdefault此部分意味着添加具有只读权限的dba用户。允许访问的数据库是默认值。源IP不受限制::/0尝试以dba用户身份登录:clickhouse-cli...