簡體   English   中英

從 ALV 檢索過濾數據

[英]Retrieve filtered data from ALV

當該 ALV 上還使用了過濾器時,是否有一種簡單的方法可以檢索顯示的 ALV 數據?

使用的 ALV 是CL_GUI_ALV_GRID的對象。 向用戶展示時,默認情況下會在其上放置一個過濾器。 用戶還有一個按鈕來處理 ALV 中的數據。 即使用戶將自己的過濾器放在 ALV 上,我如何確保該過程僅適用於顯示的數據?

例如:一個 ALV 是從一個有 10 行的 itab 創建的,但是因為在 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.

編輯:我調試了cl_gui_alv_grid一點,似乎根本不存在原始表的過濾版本。 這些行被過濾、排序、分組並立即轉移到一個單元格表中。 看起來幾乎不可能在沒有性能缺陷的情況下獲得顯示的行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM