ALV Table: Dynamisches Kontext Mapping

In einem früheren Beitrag habe ich bereits erklärt, wie man einen Kontextknoten zur Laufzeit dynamisch erzeugen kann. In diesem kleinen Beispiel möchte ich nun zeigen, wie man einen Kontextknoten zur Laufzeit an eine ALV Tabelle binden kann. Mein Beispiel ist recht simpel aufgebaut. Zuerst wird das Tabellenobjekt erzeugt, falls dieses noch nicht initialisiert wurde. Danach wird die Referenz auf die Tabellen API geholt, sowie der zu bindende Kontextknoten ausgelesen.
Danach wird der Kontextknoten mittels der Methode SET_DATA an das ALV gebunden.

Genug erklärt, hier kommt der Beispielcode:

DATA: obj_node TYPE REF TO if_wd_context_node.
DATA: obj_table_api TYPE REF TO iwci_salv_wd_table,
     obj_cmp_usage TYPE REF TO if_wd_component_usage.

* Get reference to ALV component
obj_cmp_usage = wd_this->wd_cpuse_cmp_result_list( ).

* Create component if necessary
IF obj_cmp_usage->has_active_component( ) IS INITIAL.
 obj_cmp_usage->create_component( ).
ENDIF.

TRY.
* Get table api
 obj_table_api = wd_this->wd_cpifc_cmp_result_list( ).
CATCH cx_root.
ENDTRY.

* Get context node
obj_node = wd_context->path_get_node( 'DATA' ).

* Bind context node to ALV component
IF obj_table_api IS BOUND.
 obj_table_api->set_data( r_node_data = obj_node  ).
ENDIF.

* Init result ALV
wd_this->init_result_alv( ).

FREE: obj_node,  obj_table_api,  obj_cmp_usage, obj_structure.

In Kombination mit dynamisch erzeugten Kontextknoten kann man hier recht einfach sehr flexible Anwendungen erstellen.

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

Back to Top