首页 > 其他分享 >ABAP SALV-排序、过滤

ABAP SALV-排序、过滤

时间:2024-03-12 18:25:53浏览次数:15  
标签:SELECTION lo SCREEN ABAP SALV filters sorts 排序 salv

01 功能说明

上篇:ABAP SALV-按钮设置、布局设置

本系列将通过模拟用户与开发者之间的对话场景,来逐步演示SALV的使用。在本篇中,我们将继续上一篇内容,以解决用户提出的另外两个需求:排序、过滤。让我们来看看是如何实现的吧。

赶快动手试一试,掌握它的用法。

02 功能效果

第6天 用户说:排序

需要按照航线降序。

 IF p_day06 EQ 'X'.
   DATA lo_sorts TYPE REF TO cl_salv_sorts.

   lo_sorts = go_salv->get_sorts( ).
   lo_sorts->add_sort(
     EXPORTING
       columnname = 'CARRID'
       sequence   = if_salv_c_sort=>sort_down
    ).
   ...
 ENDIF.

在这里插入图片描述

第7天 用户说:过滤

不需要看到航线为JL的数据。

  IF p_day07 EQ 'X'.
    DATA lo_filters TYPE REF TO cl_salv_filters.

    lo_filters = go_salv->get_filters( ).
    lo_filters->add_filter(
      EXPORTING
        columnname = 'CARRID'
        sign       = 'I'
        option     = 'NE'
        low        = 'JL'
    ).
    ...
  ENDIF.

在这里插入图片描述

03 源码分享

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(79) day01 .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
...
SELECTION-SCREEN COMMENT 1(79) day06 .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(79) day07 .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE t2.
PARAMETERS p_day01 AS CHECKBOX DEFAULT 'X' .   "01、基本展示
...
PARAMETERS p_day06 AS CHECKBOX DEFAULT 'X' .   "06、添加排序
PARAMETERS p_day07 AS CHECKBOX DEFAULT 'X' .   "07、添加过滤
SELECTION-SCREEN END OF BLOCK b2.

INITIALIZATION.
  sy-title = 'ABAP SALV演示程序-公众号(ABAP猿)'.
  t1 = '用户说'.
  t2 = '你来做'.
  day01 = '01、从表SPFLI获取数据,并进行基本展示。'.
  ...
  day06 = '06、需要按照航线降序。'.
  day07 = '07、不需要看到航线为JL的数据。'.

  %_p_day01_%_app_%-text = '01、基本展示'.
  ...
  %_p_day06_%_app_%-text = '06、添加排序'.
  %_p_day07_%_app_%-text = '07、添加过滤'.

START-OF-SELECTION.
*------------------------------------*
  CHECK p_day01 EQ 'X'.
  DATA gt_spfli TYPE TABLE OF spfli.
  SELECT * FROM spfli INTO 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 ).
*------------------------------------*
...
*------------------------------------*
  IF p_day06 EQ 'X'.
    DATA lo_sorts TYPE REF TO cl_salv_sorts.

    lo_sorts = go_salv->get_sorts( ).
    lo_sorts->add_sort(
      EXPORTING
        columnname = 'CARRID'
        sequence   = if_salv_c_sort=>sort_down
     ).
    ...
  ENDIF.
*------------------------------------*
  IF p_day07 EQ 'X'.
    DATA lo_filters TYPE REF TO cl_salv_filters.

    lo_filters = go_salv->get_filters( ).
    lo_filters->add_filter(
      EXPORTING
        columnname = 'CARRID'
        sign       = 'I'
        option     = 'NE'
        low        = 'JL'
    ).
    ...
  ENDIF.
*------------------------------------*
  go_salv->display( ).

小贴士:

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

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

04 关注我

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

标签:SELECTION,lo,SCREEN,ABAP,SALV,filters,sorts,排序,salv
From: https://blog.csdn.net/qq_33518131/article/details/136604157

相关文章

  • 【算法】【线性表】【数组】在排序数组中查找元素的第一个和最后一个位置
    1 题目给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1,-1]。你必须设计并实现时间复杂度为 O(logn) 的算法解决此问题。示例1:输入:nums=[5,7,7,8,8,......
  • SQL 多关键字查询并根据匹配程度排序
    --创建测试表IFEXISTS(SELECT*FROMsys.objectsWHEREobject_id=OBJECT_ID(N'[dbo].[Score]')ANDtypein(N'U'))DROPTABLE[dbo].[Score]GOCREATETABLE[dbo].[Score]([Id][int]IDENTITY(1,1)NOTNULL,[UserName][nvarchar](50......
  • 关于拓扑排序
    定义拓扑排序在一个DAG(有向无环图)中,我们将图中的顶点以线性方式进行排序,使得对于任何的顶点\({u}\)到\({v}\)的有向边\({(u,v)}\),都可以有\({u}\)在\({v}\)的前面。还有给定一个DAG,如果从\({i}\)到\({j}\)有边,则认为\({j}\)依赖于\({i}\)。如果\({i}\)......
  • 快速排序
    快排属于分治算法;思想:快排的思想是分治我们有一个待排序的数组,长度为n。选定一个基准,将数组分成左右两部分,左边的数小于基准,右边的数大于基准。然后我们分别看分割后左右两部分数组,如果元素个数大于1,就再次分割。直到最后,我们得到了n个数组,每个数组含有1个元素。这n个数组......
  • 排序链表(自底向上归并排序)
    题目:时间复杂度:O(nlogn),空间复杂度:O(1)structListNode{intval;ListNode*next;ListNode():val(0),next(nullptr){}ListNode(int_val):val(_val),next(nullptr){}ListNode(int_val,ListNode*_next):val(_val),next(_next){}};class......
  • pandas - 数据排序
    sort_values()函数importpandasaspddata={'名称':['太阳能','床','风扇','沙发'],'单价':[2000,3500,500,3500],'数量':[58,23,69,60]}df=pd.DataFrame(data)#单条件排序,使......
  • MySQL分组之后按照固定顺序排序 FIELD
    以下回答来自通义千问:要按照特定顺序显示type字段的统计结果,MySQL并没有提供直接按指定顺序进行GROUPBY的方法。但是,你可以结合ORDERBY语句和FIELD()函数来实现这一需求。FIELD()函数可以将某个字段的值与一系列指定值进行比较,并按照指定值的顺序排序。假设你希望固定的type顺......
  • 153. 寻找旋转排序数组中的最小值(中)
    目录题目题解:二分题目已知一个长度为n的数组,预先按照升序排列,经由1到n次旋转后,得到输入数组。例如,原数组nums=[0,1,2,4,5,6,7]在变化后可能得到:若旋转4次,则可以得到[4,5,6,7,0,1,2]若旋转7次,则可以得到[0,1,2,4,5,6,7]注意,数组[a[0],a[1],a[2],...,a......
  • java中的排序函数
    1.Arrays.sort()函数使用Arrays.sort()对数组进行排序一维数组升序如果是基本数据类型和对应的包装类:使用java.util.Arrays包的Arrays.sort()函数即可。一维数组降序如果是基本数据类型,则要先转成对应的包装类:在Arrays.sort()的第二个参数添加即可Collections.reverseOrder()......
  • 7-10 英文单词排序(string类型的长度表示方法)
    7-10英文单词排序分数15作者张泳单位浙大城市学院本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。输入格式:输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的......