首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ALV检索过滤后的数据

从ALV检索过滤后的数据
EN

Stack Overflow用户
提问于 2017-09-19 10:44:56
回答 1查看 7.9K关注 0票数 4

当ALV上也使用过滤器时,是否有一种检索ALV数据的简单方法?

所使用的ALV是CL_GUI_ALV_GRID的一个对象。当显示给用户时,默认情况下会在上面放置一个筛选器。用户还有一个按钮来处理ALV中的数据。如何确保该过程仅适用于显示的数据,即使用户在ALV上放置了自己的过滤器?

例如: ALV是从有10行的itab创建的,但是由于ALV上也传递了一个过滤器,所以只显示了8行。当按下按钮时,我只想处理当前显示给用户的8行。

为此,我尝试找到一个函数模块,但我只能找到一个FM,它与ALV中选定的行一起工作。

编辑:还有一个叫做get_filtered_entries的方法,但是它只检索那些没有显示的条目。使用这将是相当费时的,使翻译到显示的条目。条目

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-19 11:11:03

GET_FILTERED_ENTRIES返回一个排除的行索引表。你只需要在你的处理过程中跳过那些。

代码语言:javascript
复制
" Copy original table
DATA(lit_buffer) = it_out[]. 

" Get excluded rows
o_grid->get_filtered_entries(
  IMPORTING
    et_filtered_entries = DATA(lit_index)
).

" Reverse order to keep correct indizes; thnx futu
SORT lit_index DESCENDING.

" Remove excluded rows from buffer
LOOP AT lit_index ASSIGNING FIELD-SYMBOL(<index>).
  DELETE lit_buffer INDEX <index>.
ENDLOOP.

编辑:,我稍微调试了cl_gui_alv_grid,似乎根本不存在过滤过的原始表版本。这些行被过滤、排序、分组,并立即转移到一个单元格表中。看起来,在没有性能缺陷的情况下,几乎不可能获得显示的行。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46298421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档