是否有一种简单的方法来检索该ALV上还使用过滤器时显示的ALV数据?
使用的ALV是CL_GUI_ALV_GRID
的对象。向用户显示它时,默认情况下将其放置一个过滤器。用户还具有一个按钮,可以处理ALV中的数据。即使用户将自己的过滤器放在ALV上,我如何才能确保该过程仅适用于显示的数据?
例如:从具有10行的ITAB创建ALV,但由于ALV上也有一个过滤器,因此只显示了8行。按下按钮时,我只想使用当前显示给用户的8行。
我尝试为此目的找到一个函数模块,但我只能找到与Alv中所选行一起使用的FM。
编辑:此外,还有一种称为get_filtered_entries
的方法,但它仅检索那些未显示的条目。使用此功能将非常耗时,将翻译成显示为显示条目。get_filtered_entries
预先感谢。
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.
编辑: i有一点调试cl_gui_alv_grid
,似乎根本不存在过滤版本的版本。线被过滤,分类,分组并立即转移到一个单元表中。看起来几乎不可能在没有性能弊端的情况下获得显示的行。