Dynamic context: recursion node

Hello,
I want to create the following in my context by code:
-ParentNode
|--ChildRecursionNode
|--nameAttr
|--valueAttr
this is what I tried:
IWDNodeInfo nodeInfo= wdContext.getNodeInfo().addChild
                   ( "ParentNode", null, true, true, false, false, false, true, null, null, null);
nodeInfo.addAttribute("nameAttr", "com.sap.dictionary.string");
nodeInfo.addAttribute("valueAttr", "com.sap.dictionary.string");
// this line throws an exception:          
root.getNodeInfo().addRecursiveChild("ChildRecursionNode", nodeInfo);
This code throws a ContextConfigurationException:
com.sap.tc.webdynpro.progmodel.context.ContextConfigurationException: RecursiveNodeInfo(testView.ChildRecursionNode): invalid recursive parent path ParentNode
I changed my code in:
IWDNodeInfo nodeInfo= wdContext.getNodeInfo().addChild
                   ( "ParentNode", null, true, true, false, false, false, true, null, null, null);
nodeInfo.addAttribute("nameAttr", "com.sap.dictionary.string");
nodeInfo.addAttribute("valueAttr", "com.sap.dictionary.string");
nodeInfo.addRecursiveChild("ChildNode", nodeInfo);
Running this code returns in an endless loop ...
Please help me...
Thanks,
Joachim

Solution found:
IWDNodeInfo nodeInfo= root.getNodeInfo().addChild( "ParentNode", null, true, false, true, false, false, true, null, null, null);
nodeInfo.addAttribute("nameAttr", "com.sap.dictionary.string");
nodeInfo.addAttribute("valueAttr", "com.sap.dictionary.string");
root.getNodeInfo().addRecursiveChild("ChildRecursionNode", nodeInfo);
the parentNode has to be singleton and cardinality 0...n.

Similar Messages

  • Dynamic context in web dynpro abap: recursion node is possible?

    Hi,
    i'm working with web dynpro ABAP and I need to create a dynamic recursion node. Is possible?
    thank you.
    Regards.
    Al

    Hello Saravanan,
    this is my code that creates a context node with recursion node, but supply_method i never called. why? could you help me?
          CALL METHOD lr_root_info->add_new_child_node
            EXPORTING
              name                         = y_name
              is_mandatory                 = abap_false
              is_multiple                  = abap_true
              is_mandatory_selection       = abap_false
              is_multiple_selection        = abap_true
              is_singleton                 = abap_true
              is_initialize_lead_selection = abap_true
              is_static                    = abap_true
              supply_method                = 'SUPPLY_NAV_LIST'
            RECEIVING
              child_node_info              = lr_node_info.
          ls_attribute-name = 'TEXT'.
          ls_attribute-type_name = 'STRING'.
          CALL METHOD lr_node_info->add_attribute
            EXPORTING
              attribute_info = ls_attribute.
          ls_attribute-name = 'ENABLED'.
          ls_attribute-type_name = 'WDY_BOOLEAN'.
          CALL METHOD lr_node_info->add_attribute
            EXPORTING
              attribute_info = ls_attribute.
          lr_node_info->add_recursive_child_node( child_name = y_name_nav child_info = lr_node_info is_static = abap_false ).
    Thank you.
    Al

  • Error creating dynamic context node in Webdynpro for ABAP. Plesae help!

    Hi
       I am getting the following error while creating a dynamic context node with 2 attributes. Please help me resolve this problem.
    Note
    The following error text was processed in the system PET : Line types of an internal table and a work area not compatible.
    The error occurred on the application server FMSAP995_PET_02 and in the work process 0 .
    The termination type was: RABAX_STATE
    The ABAP call stack was:
    Method: IF_WD_CONTEXT_NODE~GET_STATIC_ATTRIBUTES_TABLE of program CL_WDR_CONTEXT_NODE_VAL=======CP
    Method: GET_REF_TO_TABLE of program CL_SALV_WD_DATA_TABLE=========CP
    Method: EXECUTE of program CL_SALV_WD_SERVICE_MANAGER====CP
    Method: APPLY_SERVICES of program CL_SALV_BS_RESULT_DATA_TABLE==CP
    Method: REFRESH of program CL_SALV_BS_RESULT_DATA_TABLE==CP
    Method: IF_SALV_WD_COMP_TABLE_DATA~MAP_FROM_SOURCE_DATA of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_COMP_TABLE_DATA~MAP_FROM_SOURCE of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_COMP_TABLE_DATA~UPDATE of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_VIEW~MODIFY of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_COMPONENT~VIEW_MODIFY of program CL_SALV_WD_A_COMPONENT========CP
    My code is like the following:
    TYPES: BEGIN OF t_type,
                CARRID TYPE sflight-carrid,
                CONNID TYPE sflight-connid,
             END OF t_type.
      Data:  i_struc type table of t_type,
      dyn_node   type ref to if_wd_context_node,
      rootnode_info   type ref to if_wd_context_node_info,
      i_node_att type wdr_context_attr_info_map,
      wa_node_att type line of wdr_context_attr_info_map.
          wa_node_att-name = 'CARRID'.
          wa_node_att-TYPE_NAME = 'SFLIGHT-CARRID'.
          insert wa_node_att into table i_node_att.
          wa_node_att-name = 'CONNID'.
          wa_node_att-TYPE_NAME = 'SFLIGHT-CONNID'.
          insert wa_node_att into table i_node_att.
    clear i_struc. refresh i_struc.
      select carrid connid into corresponding fields of table i_struc from sflight where carrid = 'AA'.
    rootnode_info = wd_context->get_node_info( ).
    rootnode_info->add_new_child_node( name = 'DYNFLIGHT'
                                       attributes = i_node_att
                                       is_multiple = abap_true ).
    dyn_node = wd_context->get_child_node( 'DYNFLIGHT' ).
    dyn_node->bind_table( i_struc ).
    l_ref_interfacecontroller->set_data( dyn_node ).
    I am trying to create a new node. That is
    CONTEXT
    - DYNFLIGHT
    CARRID
    CONNID
    As you see above I am trying to create 'DYNFLIGHT' along with the 2 attributes which are inside this node. The structure of the node that is, no.of attributes may vary based on some condition. Thats why I am trying to create a node dynamically.
    Also I cannot define the structure in the ABAP dictionary because it changes based on condition

    Ok, I think I found a bug... It seems for adobe forms in WD4A, the root context node must be 1-1 and you must nest the 1-n node within that... Not sure why, but it worked. So in my case my context would look like this:
    FOO_NODE (1-1)
         Widget (1-N)
              -Widget_info (1-1)
                   *Name
                   *Sku
                   *Description
              -Widget_plant (1-M)
                   *Plant_Code
                   *Plant_State
                   *Plant_City
              -Widget_pic (1-1)
                   *Picture

  • ABAP: dynamic context node + attribute for DROP_DOWN_BY_KEY

    Hello,
    I need to create a Node with attributes dynamically and than assign it to a DROP_DOW_BY_KEY element in ABAP.
    I create drop down this way:
    drop_down_figure = cl_wd_dropdown_by_key=>new_dropdown_by_key( bind_selected_key = 'REPOSITORY.FIGURES' on_select = 'GET_OPERATOR' ).
      cl_wd_grid_data=>new_grid_data( element = drop_down_figure ).
      ui_container->add_child( drop_down_figure ).
    However, here I bind to REPOSITORY.FIGURES. Instead of doing this I need to bind it to an attribute that I create.
    I can access wd_context but I am not sure how to create a node in wd_context, then attribute for that node that will contain items for drop down.
    bind_selected_key is type of String. If I create a node with attribute how do I cast it to a String so I can pass it to a constructor of a drop down?
    Thank you.

    Hi Georgy,
    There is a 3 - series weblog for this.
    The first one is:
    /people/thomas.szcs/blog/2005/12/28/dynamic-programming-in-web-dynpro-abap--introduction-and-part-i-understanding-ui-elements
    The following are the the general steps for creating a node and table where table name is input by the user:
    DATA:
      UI Elements
        group_1       TYPE REF TO cl_wd_uielement_container,
        new_tab       TYPE REF TO cl_wd_table,
      Context Nodes
        dyn_node      TYPE REF TO if_wd_context_node,
        tabname_node  TYPE REF TO if_wd_context_node,
      Node Info
        rootnode_info TYPE REF TO if_wd_context_node_info,
      Data Reference (for internal table)
        stru_tab      TYPE REF TO data,
      String (for table name)
        tablename     TYPE string.
      FIELD-SYMBOLS:
        <tab> TYPE table.
    1) * get node info of context root node
      rootnode_info = wd_context->get_node_info( ).
    2) * create sub node named TEST1 of structure (tablename)
      cl_wd_dynamic_tool=>create_nodeinfo_from_struct(
        parent_info = rootnode_info
        node_name = tablename
        structure_name = tablename
        is_multiple = abap_true ).
    3) * get instance of new node
      dyn_node = wd_context->get_child_node( name = tablename ).
    4) ***** create new UI element table *******************************************************
      new_tab = cl_wd_dynamic_tool=>create_table_from_node(
    ui_parent = group_1
    table_id  = 'TESTTAB'
    node      = dyn_node ).
    5) ***** fill context node with data *******************************************************
    create internal table of (tabletype)
      CREATE DATA stru_tab TYPE TABLE OF (tablename).
      ASSIGN stru_tab->* TO <tab>.
    Get table content
      SELECT * FROM (tablename) INTO CORRESPONDING FIELDS OF TABLE <tab>.
    Bind internal table to context node.
      dyn_node->bind_table( <tab> ).
    Regards,
    Srini.

  • How to manipulate recursive node with context api?

    Hi, all.
      I made a recursive node in my context.  So it is like a tree.
    When I choosed one child node in my tree, how can I get it`s current element?
    Thanks a lot.

    Hi Louis
    Check this PDF link
    http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/user-interface-technology/wd%20java/wdjava%20archive/constructing%20a%20recursive%20and%20loadable%20web%20dynpro%20tree.pdf
    Also check this elearning link.It gives info of supply function
    https://www.sdn.sap.com/irj/scn/elearn?rid=/library/uuid/60086bd5-9301-2b10-6f97-a14366a5602b&overridelayout=true
    Regards
    Ruturaj

  • To access a dynamic context node defined in a Used Component

    Hi Gurus,
    I need your help with something.
    I have a dynamic context node in ComponentA. I want it in Component B too.
    Component B uses Component A, but I am not able to get access to the context node.
    Is it possible to do this? Any suggestions how to proceed.
    PS: I am trying to do a dynamic mapping. The initial scenario was here, Set data into Model Node on Navigating from a View
    Thanks in advance,
    Anjana R.
    Message was edited by:
            Anjana Raghav

    Hi Gurus,
    Its working now. Earlier, the code was something like this....
    IWDNodeInfo compNode = wdThis.wdGet<i>Comp</i>Interface().wdGetAPI().getContext().getRootNodeInfo().getChild(nodeNm);
    viewNodeInfo.setMapping(compNode,true);
    and was trying to map it using
    iewNodeInfo.addMappedAttribute("order",".<i>Comp</i>."+ nodeNm + ".order");     
    Now, I am mapping like this.
    viewNodeInfo.addMappedAttribute("order","order");
    Thanks,
    Anjana R.

  • Adding dynamic context node

    Hello,
    I having problems with creating a dynamic context node.
    How can i add a new node to the context on runtime and not on design time.
    Best Regards,
    Smadar.

    Hi,
    IWDNodeInfo nodeinfo=wdContext.getNodeInfo();
    /* This will add a ValueNode */
    IWDNodeInfo customerNode=nodeinfo.addChild("Customer",null,true,true,true,false,false,true,null,null,null);
    /* This will add  a Attribute to the above Node */
    IWDAttributeInfo custAttr=customerNode.addAttribute("AttribName","com.sap.dictionary.string");
    Regards, Anilkumar

  • Create dynamic context node

    Hi Experts,
    I have tried the given example for Dynamic Context Node in Webdynpro ABAP
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/4c70444a-0801-0010-7688-9e4bd844b783
    But getting the Error when executing this application
    Note
    The following error text was processed in the system ISP : Adapter error in &VIEW_ELEMENT_TYPE& "TABLENAME" of view "ZWD_SACHIN_DYN_ALV.MAIN_VIEW": Context binding of property VALUE cannot be resolved: Node MAIN_VIEW.1.INPUT does not contain any elements
    The error occurred on the application server usirs254_ISP_01 and in the work process 0 .
    The termination type was: RABAX_STATE
    The ABAP call stack was:
    Method: RAISE_FOR of program CX_WDR_ADAPTER_EXCEPTION======CP
    Method: RAISE_BINDING_EXCEPTION of program CL_WDR_VIEW_ELEMENT_ADAPTER===CP
    Method: GET_BOUND_ELEMENT of program CL_WDR_VIEW_ELEMENT_ADAPTER===CP
    Please resolve this issue because when I am mapping the Attribute TableName in the InputGroup, it is throwing above Error.
    Thanks in advance
    Regards
    Sachin

    Hi Sachin,
    I am unable to understand why you are getting an error. I have tried the same tutorial myself and it works fine for me. Make sure that the TABLENAME attribute (which is of string type) is properly binded to the value property of the input field.
    Regards
    Arjun
    Edited by: Arjun Thakur on Mar 17, 2009 1:46 PM

  • Dynamic context nodes

    Hi all,
    I want to create a dynamic context in this way.  But in this example I always need a data element in the dictionary for the describe by name method --> here ZREMARK
    I can use here describe_by_name( 'STRING' ) but then the column headerline is empty.
    How can I set the column headerline when I use this coding?
    comp-name = 'REMARK'.
    comp-type ?= cl_abap_datadescr=>describe_by_name( 'ZREMARK' ).
    APPEND comp TO comp_tab.
    not this structure contains the fields "CONNID" and "CARRID"
      struct_type = cl_abap_structdescr=>create( comp_tab ).
    now the nodeinfo is created
      node_info = wd_context->get_node_info( ).
      node_info = node_info->add_new_child_node(
        name                         = 'MY_NODE'
        is_mandatory                 = abap_false
        is_multiple                  = abap_true
        static_element_rtti          = struct_type
        is_static                    = abap_false
    regards

    >Is it possible to create the columns of the table control in a similar way?
    Yes you can create the table and its columns dynamically in WDDOMODIFYVIEW.  Here is a sample - I'm only creating one column, but it would be easy to adapt this logic to loop through some list of fields to create the columns.
    DATA lr_container TYPE REF TO cl_wd_uielement_container.
      DATA lr_input TYPE REF TO cl_wd_input_field.
      DATA lr_table TYPE REF TO cl_wd_table.
      DATA lr_caption TYPE REF TO cl_wd_caption.
      DATA lr_table_column TYPE REF TO cl_wd_table_column.
      DATA lr_table_standard_cell TYPE REF TO cl_wd_table_standard_cell.
      IF first_time = abap_true.
        lr_container  ?= view->get_element( 'ROOTUIELEMENTCONTAINER' ).
        cl_wd_table=>new_table(
          EXPORTING
            bind_data_source              = 'SFLIGHT.SFLIGHT'
            id                            = 'DYNTABLE'
          RECEIVING
             control                       = lr_table ).
        cl_wd_input_field=>new_input_field(
          EXPORTING
             bind_value             = 'SFLIGHT.SFLIGHT.CARRID'
             id                     = 'INPUT1'
          RECEIVING
            control                = lr_input ).
        lr_table_column = cl_wd_table_column=>new_table_column( ).
        lr_table_column->set_table_cell_editor( lr_input ).
        lr_caption = cl_wd_caption=>new_caption( ).
        lr_caption->set_text( 'Some text' ).
        lr_table_column->set_header( EXPORTING the_header = lr_caption ).
        lr_table->add_column( EXPORTING the_column = lr_table_column ).
    *       create the layout data of the text view
        DATA lr_grid_data TYPE REF TO cl_wd_grid_data.
        lr_grid_data = cl_wd_grid_data=>new_grid_data( lr_table ).
        lr_table->set_layout_data( lr_grid_data ).
        lr_container->add_child(
          EXPORTING
            the_child = lr_table ).
      ENDIF.

  • Set Data from a Dynamic Context in ALV

    Hi,
    I've created an dynamic context and have binded the data. When I want to show this data in an dynamicly table with the following code, it works well.
    cl_wd_dynamic_tool=>create_table_from_node( EXPORTING ui_parent      = lo_container
                                                              table_id       = 'DYN_ML_TABLE'
                                                              node           = lo_nd_dyn_ml
                                                    RECEIVING table          = lo_table ).
    Unfortunately when I want to show the context data in an ALV table with the method set_data I will see the structure, but the binded data are lost.
    lo_comp_alv = wd_this->wd_cpuse_usage_alv_dyn_ml( ).
      IF lo_comp_alv->has_active_component( ) IS INITIAL.
        lo_comp_alv->create_component( ).
      ENDIF.
      lo_comp_if_alv = wd_this->wd_cpifc_usage_alv_dyn_ml( ).
      lo_comp_if_alv->set_data( lo_nd_dyn_ml ).
    I've tested an manually created context node with this method, and I will see the data.
    Could anybody help me?
    Best Regards,
    Sascha

    I created the node with rtti. Now, it works:
    "Beschreibung zu interner Tabelle lesen
       lo_tab_descr ?= cl_abap_typedescr=>describe_by_data( it_matchlist ).
       "Zeilentyp zu interner Tabelle ermitteln
       lo_str_descr ?= lo_tab_descr->get_table_line_type( ).
       "Komponente der Zeile ausgeben, welche für die Erstellung der Knotenattribute benötigt werden
       lt_comp = lo_str_descr->get_components( ).
       data: ls_component type cl_abap_structdescr=>component,
             lr_type type ref to cl_abap_datadescr,
             lt_components type cl_abap_structdescr=>component_table,
             lr_structdescr type ref to cl_abap_structdescr.
       "Loop über Komponente und Einfügen in Attributenliste
       loop at lt_comp into ls_comp.
         lv_abs_name = ls_comp-type->absolute_name.
         "Folgende Zeichen werden entfernt: '/TYPE='
         shift lv_abs_name left by 6 places.
         lr_type ?= cl_abap_typedescr=>describe_by_name( p_name = lv_abs_name ).
         ls_component-name = ls_comp-name.
         ls_component-type = lr_type .
         append ls_component to lt_components.
       endloop.
       "Strukturtyp anhand der definierten Kompententen der internen Tabelle erzeugen
       lr_structdescr = cl_abap_structdescr=>create( p_components = lt_components ).
    *  "Neuen Kindknoten anlegen
       lo_nd_dyn_info = lo_nd_root_info->add_new_child_node( name                         = wd_this->gd_matchlist_nd_name
                                                             is_mandatory                 = abap_false
                                                             is_mandatory_selection       = abap_false
                                                             is_multiple                  = abap_true
                                                             is_multiple_selection        = abap_false
                                                             is_singleton                 = abap_false
                                                             is_initialize_lead_selection = abap_true
    *                                                        attributes                   = lt_attributes
                                                             is_static                    = abap_false
                                                             static_element_rtti          = lr_structdescr
                                                             "supply_method                =
                                                             "supply_object                =
                                                             "dispose_method               =
                                                             "dispose_object               =
                                                             "static_element_type          =

  • How to create dynamic context based on a structure defined in the program?

    Hi Experts,
             I need to create a dynamic context based on a structure wa_struc which i have define programatically.
    When I pass wa_struc to structure_name parameter of create_nodeinfo_from_struc, i get a runtime error:
    "Parameter STRUCTURE_NAME contains an invalid value wa_struc."
    How to create dynamic context based on a structure defined in the program?
    I have written the code like this:
    TYPES: BEGIN OF t_type,
                v_carrid TYPE sflight-carrid,
                v_connid TYPE sflight-connid,
             END OF t_type.
      Data:  i_struc type table of t_type,
             wa_struc type t_type.
      data: dyn_node   type ref to if_wd_context_node.
      data: rootnode_info   type ref to if_wd_context_node_info.
      rootnode_info = wd_context->get_node_info( ).
      clear i_struc. refresh i_struc.
      select carrid connid into corresponding fields of table i_struc from sflight where carrid = 'AA'.
    cl_wd_dynamic_tool=>create_nodeinfo_from_struct(
      parent_info = rootnode_info
      node_name = 'dynflight'
      structure_name = 'wa_struc'
      is_multiple = abap_true ).
    dyn_node = wd_context->get_child_node( name = 'dynflight' ).
    dyn_node->bind_table( i_struc ).
    Thanks
    Gopal
    Message was edited by: gopalkrishna baliga

    Hi Michelle,
              First of all Special thanks for your informative answers to my other forum questions. I really appreciate your help.
    Coming back to this question I am still waiting for an answer. Please help. Note that my structure is not in a dictionary.
    I am trying to create a new node. That is
    CONTEXT
    - DYNFLIGHT
    CARRID
    CONNID
    As you see above I am trying to create 'DYNFLIGHT' along with the 2 attributes which are inside this node. The structure of the node that is, no.of attributes may vary based on some condition. Thats why I am trying to create a node dynamically.
    Also I cannot define the structure in the ABAP dictionary because it changes based on condition
    I have updated my code like the following and I am getting error:
    TYPES: BEGIN OF t_type,
    CARRID TYPE sflight-carrid,
    CONNID TYPE sflight-connid,
    END OF t_type.
    Data: i_struc type table of t_type,
    dyn_node type ref to if_wd_context_node,
    rootnode_info type ref to if_wd_context_node_info,
    i_node_att type wdr_context_attr_info_map,
    wa_node_att type line of wdr_context_attr_info_map.
    wa_node_att-name = 'CARRID'.
    wa_node_att-TYPE_NAME = 'SFLIGHT-CARRID'.
    insert wa_node_att into table i_node_att.
    wa_node_att-name = 'CONNID'.
    wa_node_att-TYPE_NAME = 'SFLIGHT-CONNID'.
    insert wa_node_att into table i_node_att.
    clear i_struc. refresh i_struc.
    select carrid connid into corresponding fields of table i_struc from sflight where carrid = 'AA'.
    rootnode_info = wd_context->get_node_info( ).
    rootnode_info->add_new_child_node( name = 'DYNFLIGHT'
    attributes = i_node_att
    is_multiple = abap_true ).
    dyn_node = wd_context->get_child_node( 'DYNFLIGHT' ).
    dyn_node->bind_table( i_struc ).
    l_ref_interfacecontroller->set_data( dyn_node ).
    But now I am getting the following error :
    The following error text was processed in the system PET : Line types of an internal table and a work area not compatible.
    The error occurred on the application server FMSAP995_PET_02 and in the work process 0 .
    The termination type was: RABAX_STATE
    The ABAP call stack was:
    Method: IF_WD_CONTEXT_NODE~GET_STATIC_ATTRIBUTES_TABLE of program CL_WDR_CONTEXT_NODE_VAL=======CP
    Method: GET_REF_TO_TABLE of program CL_SALV_WD_DATA_TABLE=========CP
    Method: EXECUTE of program CL_SALV_WD_SERVICE_MANAGER====CP
    Method: APPLY_SERVICES of program CL_SALV_BS_RESULT_DATA_TABLE==CP
    Method: REFRESH of program CL_SALV_BS_RESULT_DATA_TABLE==CP
    Method: IF_SALV_WD_COMP_TABLE_DATA~MAP_FROM_SOURCE_DATA of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_COMP_TABLE_DATA~MAP_FROM_SOURCE of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_COMP_TABLE_DATA~UPDATE of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_VIEW~MODIFY of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_COMPONENT~VIEW_MODIFY of program CL_SALV_WD_A_COMPONENT========CP
    -Gopal
    Message was edited by: gopalkrishna baliga

  • Dynamic context binding in web dynpro alv

    I use dynamic context binding (see code below to show and edit the ALV table.
    'DB_TABLE' is a tranparent table. It works fine.
    But now this table should be expanded with additional fields which are only known at runtime and could be different from case to case.
    How can I get these fields in the context dynamically?
      DATA:
            rootnode_info TYPE REF TO if_wd_context_node_info,
            dyn_node      TYPE REF TO if_wd_context_node,
            tablename   TYPE string.
      rootnode_info = wd_context->get_node_info( ).
      tablename = 'DB_TABLE'.
      cl_wd_dynamic_tool=>create_nodeinfo_from_struct(
        parent_info = rootnode_info
        node_name = tablename
        structure_name = tablename
        is_multiple = abap_true ).
      DATA:
            stru_tab TYPE REF TO data.
      FIELD-SYMBOLS: <tab> TYPE table.
      CREATE DATA stru_tab TYPE TABLE OF (tablename).
      ASSIGN stru_tab->* TO <tab>.
      SELECT * FROM (tablename) INTO CORRESPONDING FIELDS OF TABLE <tab>.
      dyn_node = wd_context->get_child_node( name = tablename ).
      dyn_node->bind_table( <tab> ).

    You should create a structure dynamically and use this as the context structure. See the coding below, where a structure is created, which contains CARRID and CONNID.
    DATA: node_info type ref to if_wd_context_node_info,
          struct_type TYPE REF TO cl_abap_structdescr,
          table_type  type ref to cl_abap_tabledescr,
          comp_tab    TYPE cl_abap_structdescr=>component_table,
          comp        LIKE LINE OF comp_tab,
          my_table    type ref to data,
          my_row      type ref to data.
      field-symbols: <table> type table,
                     <row> type data,
                     <flight> type sflight.
    * build a structure description from the list of single fields
      comp-name = 'CARRID'.
      comp-type ?= cl_abap_datadescr=>describe_by_name( 'S_CARR_ID' ).
      APPEND comp TO comp_tab.
      comp-name = 'CONNID'.
      comp-type ?= cl_abap_datadescr=>describe_by_name( 'S_CONN_ID' ).
      APPEND comp TO comp_tab.
    * note this structure contains the fields "CONNID" and "CARRID"
      struct_type = cl_abap_structdescr=>create( comp_tab ).
    * now the nodeinfo is created
      node_info = wd_context->get_node_info( ).
      node_info = node_info->add_new_child_node(
        name                         = 'MY_NODE'
        IS_MANDATORY                 = ABAP_true
        IS_MULTIPLE                  = ABAP_true
        STATIC_ELEMENT_RTTI          = struct_type
        IS_STATIC                    = ABAP_false
    * fill new node;
      data: l_node type ref to if_wd_context_node,
            l_flight type STANDARD TABLE OF sflight.
      l_node = wd_context->get_child_node( 'MY_NODE' ).
      l_flight = wd_assist->get_flights( ).
    *  if you could create a local data type, would be fine, but if you have to do it dynamically ...
      struct_type = node_info->GET_STATIC_ATTRIBUTES_TYPE( ).
    * create tabledescriptor from structdescription (standard table, no keys)
      table_type = cl_abap_tabledescr=>create( p_line_type = struct_type ).
      create data my_table type handle table_type.
      assign my_table->* to <table>.
      loop at l_flight assigning <flight>.
        create data my_row type handle struct_type.
        assign my_row->* to <row>.
        move-corresponding <flight> to <row>.
        append <row> to <table>.
      endloop.
      l_node->bind_table( <table> ).

  • Dynamic Context Mapping in Web Dynpro ABAP

    Hi Experts,
    How can I create two dynamic Context nodes, one in ViewController and the other in Component Controller and finally create a context mapping between them?
    Regards,
    Johan Kriek.

    Hi Johan,
    I found a method IF_WD_CONTEXT_NODE_INFO~ADD_NEW_MAPPED_CHILD_NODE that seems to be the one that I am looking for.
    I do have same idea but i have been trying to give solution by using above method,unfortunately here my server is down.check the below code. i didnt check this code due to server down.
    DATA: lo_nd_purchase_header TYPE REF TO if_wd_context_node,
          lo_el_purchase_header TYPE REF TO if_wd_context_element,
    ls_purchase_header TYPE wd_this->element_purchase_header,
          lo_node_info type ref to if_wd_context_node_info,
          lo_child_node_info type ref to if_wd_context_node_info,
          MAPPING_INFO type WDR_CONTEXT_MAPPING_INFO.
    * navigate from <CONTEXT> to <PURCHASE_HEADER> via lead selection
      lo_nd_purchase_header = wd_context->get_child_node( name = wd_this->wdctx_purchase_header ).
                  CALL METHOD LO_ND_PURCHSE_HEADER->GET_NODE_INFO
                    RECEIVING
                      NODE_INFO = lo_node_info.
           MAPPING_INFO-controller = 'ZWDC_ALV'. "conponent name
           MAPPING_INFO-path = 'PURCHASE_HEADER'. "Controller context node name
          CALL METHOD LO_NODE_INFO->ADD_NEW_MAPPED_CHILD_NODE
            EXPORTING
              CHILD_NAME      = 'PURCHASE_HEADER'
              MAPPING_INFO    =  MAPPING_INFO
    *          IS_STATIC       = ABAP_TRUE
            RECEIVING
              CHILD_NODE_INFO = lo_child_node_info

  • Dynamic context mapping

    Hello,
    Is it possible to create dynamic mapping between contexts of view and e.g. custom controller at runtime? If it is possible, so how. I have not found any documentation about this.
    Thanks a lot for answers!
    With best regards
    Michael Belenki

    Hi,
    The problem is not getting solved.Am getting an error while trying to dynamically map a node in the view controller from the component controller in ABAP.
    I have a node
                  Const_data(node)
                       |_
                         Value(attribute)
    and it has an attribute 'value' .Both are created dynamically.
    Now when I try to map this context in the view controller.I use the following code.
    map_path = 'COMPONENTCONTROLLER.CONST_DATA.VALUE'.
    insert map_path into table path_mapping_table.
    struct_mapping_info-CONTROLLER = 'COMPONENTCONTROLLER'.
    struct_mapping_info-PATH = path_mapping_table.
    const_dat_info =
    context_root-ADD_NEW_MAPPED_CHILD_NODE
    (                                                    CHILD_NAME   = 'CONST_DATA'
    IS_STATIC    = abap_false                           MAPPING_INFO = struct_mapping_info) .
    Now when I try to get the value of attribute "value".
    I get an error message :
    Attribute COMPONENTCONTROLLER.1.VALUE could not be found
    Since I am not trying an external mapping I dont think I need set_mapping_complete method.

  • [Tree] item and node order ! (Recursive Node)

    I made a wd4a has organizatonal structure tree. but I have some problem with the org tree.
    I want to have a tree(org structure) in item(person) and node(organization) order.
    Root                                            Root
      |- Person 1                                    |- Head Dept
      |- Person 2                                    |        |-Person 3
      |-Head Dept                        ->        |        |-Person 4
      |       |- Person 3                             |-Sales
      |       |- Person 4                             |- Person 1
      |-Sales                                          |- Person 2
    ( to be displayed)                                 (current displayed)
    Whiat's the problem?
    Although the both of them have a same contents, I really want to display in person and org order .
    Plz. help.

    I solved this problem myself and it makes me very so tired.
    I guess that Recursive node tree have some bugs.
    If a node have one recursive node and one sub-node and some kinds of attributes,
    we have to make a decision on how to display and sort them(sub-node and attributes)
    There is a example below as I really want to sort them.
      C_Drive Folder
    - file 1
    - file 2
    - Folder 1
    - file3
    - Folder 1-1
    - Folder 2
    Context
        |-Folder Node
        |      |-File Node
        |      |       |-File Name attribute
        |      |-Folder Name attribute
        |      |-Folder_Content             -> Recursive Node
    When you meet this situation,you must implement the context nodes and
    the names of context node and recursive node must be in alphabet order you want to display.
    I am sorry for my crumsy writting English.

Maybe you are looking for