当ALV上也使用过滤器时,是否有一种检索ALV数据的简单方法?
所使用的ALV是CL_GUI_ALV_GRID的一个对象。当显示给用户时,默认情况下会在上面放置一个筛选器。用户还有一个按钮来处理ALV中的数据。如何确保该过程仅适用于显示的数据,即使用户在ALV上放置了自己的过滤器?
例如: ALV是从有10行的itab创建的,但是由于ALV上也传递了一个过滤器,所以只显示了8行。当按下按钮时,我只想处理当前显示给用户的8行。
为此,我尝试找到一个函数模块,但我只能找到一个FM,它与ALV中选定的行一起工作。
编辑:还有一个叫做get_filtered_entries的方法,但是它只检索那些没有显示的条目。使用这将是相当费时的,使翻译到显示的条目。条目
提前谢谢。
发布于 2017-09-19 11:11:03
GET_FILTERED_ENTRIES返回一个排除的行索引表。你只需要在你的处理过程中跳过那些。
" 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,似乎根本不存在过滤过的原始表版本。这些行被过滤、排序、分组,并立即转移到一个单元格表中。看起来,在没有性能缺陷的情况下,几乎不可能获得显示的行。
https://stackoverflow.com/questions/46298421
复制相似问题