Kontextknoten dynamisch Mappen

In der Regel ist es kein großes Problem, einen Kontextknoten zwischen Component Controller und View Controller zu mappen. Einfach per Drag’n Drop das Mapping durchführen und fertig. Erzeugt man aber erst zur Laufzeit einen Kontextknoten, dann ist es mit dem Mapping zur Design Time schon nicht mehr so einfach. Dieses Beispiel soll zeigen, wie man zur Laufzeit einen Kontextknoten vom Component Controller zum View Controller mappen kann. Am besten wird das Beispielcoding in der WDINIT Methode des jeweiligen Views eingebaut.

DATA: wa_mapping_info TYPE wdr_context_mapping_info.
DATA: lt_path TYPE wdr_ctx_element_path_segments,
      wa_path TYPE wdr_ctx_element_name.
DATA: obj_node_info TYPE REF TO cl_wdr_context_node_info.

* Bind dynamic created context node
APPEND 'COMPONENTCONTROLLER' TO lt_path.
APPEND 'RESULT_LIST' TO lt_path.

MOVE 'COMPONENTCONTROLLER' TO wa_mapping_info-controller.
MOVE lt_path TO wa_mapping_info-path.

* Get node info for view context
obj_node_info ?= wd_context->get_node_info( ).

* Bind dynamic node to context
CALL METHOD obj_node_info->if_wd_context_node_info~add_new_mapped_child_node
 EXPORTING
  child_name   = 'RESULT_LIST'
  mapping_info = wa_mapping_info
  is_static    = abap_false.

FREE: obj_node_info.
FREE: lt_path.
CLEAR: wa_mapping_info.

Wichtiger Hinweis: Möchte man den erzeugten Mappingknoten wieder per Coding zur Laufzeit löschen können, dann sollte der Parameter IS_STATIC mit ABAP_FALSE bedient werden. Ansonsten ist ein Löschen per Programm nicht mehr möglich.   SAP hat hierzu ein recht gutes Video Tutorial erstellt: SAP Video Tutorial

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

Back to Top