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.
Comments are closed.