ALV 筛选后数据获取

 背景:报表ALV显示数据后,需要将过滤后的数据推送到另一个系统。

实现:通过类CL_GUI_ALV_GRID的方法GET_FILTERED_ENTRIES获取被过滤掉的内表数据行号,筛选后的ALV内表数据=内表数据-被过滤掉的内表数据。

  DATA: lt_filter TYPE lvc_t_fidx,
        ls_filter TYPE int4.
  DATA: lo_grid      TYPE REF TO cl_gui_alv_grid,

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
       IMPORTING
          e_grid = lo_grid.

  CALL METHOD lo_grid->get_filtered_entries
       IMPORTING
          et_filtered_entries = lt_filter.
  
  CASE e_ucomm.
    WHEN 'SELALL'.
      CLEAR gs_item.
      LOOP AT gt_item INTO gs_item.
        CLEAR ls_filter.
        READ TABLE lt_filter INTO ls_filter WITH  KEY table_line = sy-tabix.
        IF sy-subrc EQ 0.
          gs_item-sel = 'X'.
          MODIFY gt_item FROM gs_item.
          CLEAR gs_item.
          CLEAR ls_filter.
        ENDIF.
      ENDLOOP.
    WHEN 'DELALL'.
      CLEAR gs_item.
      LOOP AT gt_item INTO gs_item.
        CLEAR ls_filter.
        READ TABLE lt_filter INTO ls_filter WITH  KEY table_line = sy-tabix.
        IF sy-subrc EQ 0.
          CLEAR gs_item-sel.
          MODIFY gt_item FROM gs_item.
          CLEAR gs_item.
          CLEAR ls_filter.
        ENDIF.
      ENDLOOP.
  ENDCASE.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值