Gefilterte Einträge eines ALV ListViewers abfragen

Filtert man die Werte eines ALV ListViewers in einem Web Dynpro, dann hat dies keinerlei Auswirkungen auf den gebundenen Kontextknoten. Es werden durch das Filter keine Kontextelemente entfernt oder anderweitig markiert. Möchte man nun aber trotzdem wissen welche Werte der User aktuell in seinem ALV angezeigt bekommt, dann muss man sich die gerade angezeigten Element des ListViewers auslesen. Dieses kleine Beispiel zeigt, dass man recht einfach an die gewünschten Informationen kommt.

DATA: obj_node TYPE REF TO if_wd_context_node,
      obj_element TYPE REF TO if_wd_context_element.
DATA: obj_table_api TYPE REF TO iwci_salv_wd_table.
DATA: wa_ui_info TYPE if_salv_wd_table=>s_type_param_get_ui_info.

FIELD-SYMBOLS: <wa_displayed_elements> TYPE int4.

* Get Context node
obj_node = wd_context->path_get_node( 'SEARCH_RESULT' ).

* Get table api
obj_table_api = wd_this->wd_cpifc_cmp_srch_result_table( ).

* Get UI Info
wa_ui_info = obj_table_api->get_ui_info( ).

LOOP AT wa_ui_info-t_displayed_elements ASSIGNING <wa_displayed_elements>.
* Get element from context
    obj_node->get_element( <wa_displayed_elements> ).
ENDLOOP.

Zu Beginn wird der betreffende Kontextknoten gelesen. Danach wird die Referenz auf die ALV ListViewer Komponente geholt und die UI Info ausgelesen. In der Tabelle T_DISPLAYED_ELEMENTS stehen alle Indexe der im ALV angezeigten Kontext Element. Im Loop werden nun die einzelnen Element aus dem Kontextknoten gelesen.

Posted on 20. März 2015 in Blog, Web Dynpro/ABAP

Back to Top