从ALV检索过滤的数据



是否有一种简单的方法来检索该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,似乎根本不存在过滤版本的版本。线被过滤,分类,分组并立即转移到一个单元表中。看起来几乎不可能在没有性能弊端的情况下获得显示的行。

相关内容

  • 没有找到相关文章

最新更新