SAP-ABAP-ALV- 设置某一列排序/过滤

无论是fuction ALV 还是OOALV 其实在设置过滤时候 都是把gt_sort的内表传进去就好,目前我没见过OOALV设置过滤时候,需要声明类、实例化等操作。如果你写过,欢迎指导,我们一起交流啊~~~~、

首先定义过滤内表,它参照的参考结构是 lvc_t_sort.

DATA: gt_sort TYPE lvc_t_sort。

设置排序的子例程,up表示升序 down表示降序

*  字段排序
  PERFORM frm_sort_matnr .
  
  FORM frm_sort_matnr.
  DATA ls_sort TYPE lvc_s_sort .
  ls_sort-spos = '1' .
  ls_sort-fieldname = 'MATNR' .
  ls_sort-up = 'X' . "A to Z
  ls_sort-down = space .
  APPEND ls_sort TO gt_sort .

ENDFORM.

如果是OOALV可以传递给set_table_for_first_display///这个方法的‘IT_SORT’ 参数来初始化一个排序.
如果是FUNCTION ALV可以传递给REUSE_ALV_GRID_DISPLAY_LVC这个方法的 ‘IT_SORT_LVC’ 参数来初始化一个排序.

 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
         IT_SORT_LVC     = gt_sort
             TABLES
      t_outtab        = gt_mseg
    EXCEPTIONS
      program_error   = 1
      OTHERS          = 2.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

```bash
 CALL METHOD lcl_grid->set_table_for_first_display
    EXPORTING
      is_layout            = gs_layo         "显示格式
      is_variant           = lv_variant               "变式布局
      it_toolbar_excluding = gt_exclubar       "排除按钮
      i_save               = 'A'
    CHANGING
      it_sort              = gt_sort          "排序
      it_fieldcatalog      = gt_fcat         "显示列
      it_outtab            = gt_mseg.            "数据

在设置过滤时候 和排序是一个方法,这里直接展示代码

* 过滤
DATA: gt_filter TYPE lvc_t_filt.
**1过滤**
  PERFORM frm_filter_table .
**2**
FORM frm_filter_table .

  DATA: ls_filter TYPE lvc_s_filt.

  ls_filter-fieldname = 'BWART'.
  ls_filter-sign = 'E'.
  ls_filter-option = 'BT'.
*  ls_filter-valut = '101'.
  ls_filter-low = '501'.
  ls_filter-high = '502'.
  APPEND ls_filter TO gt_filter.

ENDFORM.

这里ls_filter-low = ‘501’. 是剔除低值501到高值502范围之间得数据。
ls_filter-high = ‘502’. ls_filter-option = ‘BT’.包含范围
如果要只选出某个值得那些数据应该这样写
ls_filter-option = ‘EQ’. ls_filter-low = ‘601’. ls_filter-sign = ‘I’.这样只会选出值为601得所有数据

FORM frm_filter_table .

  DATA: ls_filter TYPE lvc_s_filt.

  ls_filter-fieldname = 'BWART'.
  ls_filter-sign = 'I'.
  ls_filter-option = 'EQ'.
  ls_filter-low = '601'.
  APPEND ls_filter TO gt_filter.

ENDFORM.

最后将内表gt_filter传到ALV展示函数里即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值