Binding Dropdownbykey to child node's attribute dynamically

Hi..
i am creating a child node "CHILD" and attribute attached to it "ATTR" dynamically. Also i create a dynamic dropdownbykey element and trying to attach the ATTR. then i get the following error. zdyn_date is data element with some fixed values. Please let me know as quick as possible.
<b>"Adapter error in DROPDOWN_BY_KEY "KEY1" of view "ZDYN_DDKEY.MAIN": Context binding for property SELECTED_KEY cannot be resolved: The MAIN.1.CHILD node does not contain any elements"</b>
METHOD WDDOMODIFYVIEW .
  DATA: LR_ROOT_INFO TYPE REF TO IF_WD_CONTEXT_NODE_INFO,
        LR_CHILD_INFO TYPE REF TO IF_WD_CONTEXT_NODE_INFO,
        cl_des type REF TO CL_ABAP_ELEMDESCR,
ATTR_INFO TYPE WDR_CONTEXT_ATTRIBUTE_INFO.
  LR_ROOT_INFO = WD_CONTEXT->GET_NODE_INFO( ).
CALL METHOD lr_root_info->ADD_NEW_CHILD_NODE
      EXPORTING
        NAME                         = 'CHILD'
      RECEIVING
        CHILD_NODE_INFO              = lr_child_info.
  ATTR_INFO-NAME = 'ATTR'.
  ATTR_INFO-TYPE_NAME = 'ZDYN_DATE'.
  CALL METHOD lr_child_info->ADD_ATTRIBUTE
    EXPORTING
      ATTRIBUTE_INFO = ATTR_INFO.
  DATA: LR_ROOT_CONTAINER TYPE REF TO CL_WD_TRANSPARENT_CONTAINER,
        LE_DD_KEY1 TYPE REF TO CL_WD_DROPDOWN_BY_KEY.
  LR_ROOT_CONTAINER ?= VIEW->GET_ELEMENT( 'ROOTUIELEMENTCONTAINER' ).
  CALL METHOD CL_WD_DROPDOWN_BY_KEY=>NEW_DROPDOWN_BY_KEY
    EXPORTING
      BIND_SELECTED_KEY      = 'CHILD.ATTR'
      ID                     = 'KEY1'
    RECEIVING
      CONTROL                = LE_DD_KEY1. .
  CALL METHOD CL_WD_MATRIX_LAYOUT=>NEW_MATRIX_LAYOUT
    EXPORTING
      CONTAINER = LR_ROOT_CONTAINER.
  CALL METHOD CL_WD_MATRIX_HEAD_DATA=>NEW_MATRIX_HEAD_DATA
    EXPORTING
      ELEMENT = LE_DD_KEY1.
  CALL METHOD LR_ROOT_CONTAINER->ADD_CHILD
    EXPORTING
    INDEX     =
      THE_CHILD = LE_DD_KEY1.
ENDMETHOD.

Hi ,
can u try to create the node and its attribute in some other method..like in some action or in WDDOINIT instead of wddomodifyview .bcoz its recommended not to modify the data of node in wddomodifyview ..
hope it will solve ur problem .
Regards
Yash

Similar Messages

  • How to access parent, child nodes and attributes in XML?

    EXAMPLE CODING:
    [Embed("assets/Try.xml", mimeType="application/octet-stream")]
    private static consTTest:Class;
    public static function getTestXML() : XML
    var baTest:ByteArrayAsset = ByteArrayAsset( new test() );
    var xmlTest:XML = new XML( baTest.readUTFBytes( baTest.length ) );
    return xmlTest;   
    public function SetTest():void
         var xml:XML = XMLResource.getTestXML();
         var XMLDoc:XMLDocument = parseXML(xml);
         var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true);
         var resultObj:Object = decoder.decodeXML(XMLDoc);
         trace(resultObj.Roots.Child[0].ChildTitle); //Output: ChildTesting  -> CAN GET IT, NO PROBLEM.
    QUESTIONS:
    (1) How to get the output for
    trace(resultObj.Roots.Child[0].Child1.Inside[0].InsideTitle); //GOT ERROR, THE OUTPUT I NEED IS InsideTesting1.
    (2) How to get the output for
    trace(resultObj.Roots.Child[0].Child1.Inside[0].Tasks.Task[0].TaskTitle); //GOT ERROR, THE OUTPUT I NEED IS TaskTesting1.
    Anyone can help me to solve this problem? Thanks.
    Regards,
    Jessie

    Hi.
    You have error in Try.xml in row 2:
    <Child ... "/>
    Delete '/', its end of this child.
    This is problem...

  • XML E4X Select nodes based on child node attribute.

    Hey,
    I am trying to make a selection on following XML.
    I want to retrieve a list of the variable node when its child nodes metadata attribute "name" is not equal to "transient". I have read through the documentation but have not been able to solve this and it should be rather simple. So far I have tried with something like.
    var variables:XMLList = classInfo.variable.(metadata.(@name != "transient"));
    var variables:XMLList = classInfo.variable.(metadata.@name != "transient");
    But it returns all variable nodes.
    <type name="com.sca.dataModel::PresentationDataEntity" base="com.sca.dataModel::BaseEntity" isDynamic="false" isFinal="false" isStatic="false">
      <extendsClass type="com.sca.dataModel::BaseEntity"/>
      <extendsClass type="Object"/>
      <variable name="subtitle" type="String">
        <metadata name="__go_to_definition_help">
          <arg key="file" value="/Users/jonas/projects/SCA-CMS/src/com/sca/dataModel/PresentationDataEntity.as"/>
          <arg key="pos" value="128"/>
        </metadata>
      </variable>
      <variable name="id" type="Number">
        <metadata name="__go_to_definition_help">
          <arg key="file" value="/Users/jonas/projects/SCA-CMS/src/com/sca/dataModel/BaseEntity.as"/>
          <arg key="pos" value="153"/>
        </metadata>
      </variable>
      <variable name="tableName" type="String">
        <metadata name="transient"/>
        <metadata name="__go_to_definition_help">
          <arg key="file" value="/Users/jonas/projects/SCA-CMS/src/com/sca/dataModel/BaseEntity.as"/>
          <arg key="pos" value="118"/>
        </metadata>
      </variable>
      <variable name="db_SortAsc" type="Boolean">
        <metadata name="transient"/>
        <metadata name="__go_to_definition_help">
          <arg key="file" value="/Users/jonas/projects/SCA-CMS/src/com/sca/dataModel/BaseEntity.as"/>
          <arg key="pos" value="281"/>
        </metadata>
      </variable>
      <variable name="title" type="String">
        <metadata name="__go_to_definition_help">
          <arg key="file" value="/Users/jonas/projects/SCA-CMS/src/com/sca/dataModel/PresentationDataEntity.as"/>
          <arg key="pos" value="100"/>
        </metadata>
      </variable>
      <method name="setData" declaredBy="com.sca.dataModel::BaseEntity" returnType="*">
        <parameter index="1" type="Object" optional="false"/>
        <metadata name="__go_to_definition_help">
          <arg key="file" value="/Users/jonas/projects/SCA-CMS/src/com/sca/dataModel/BaseEntity.as"/>
          <arg key="pos" value="330"/>
        </metadata>
      </method>
      <metadata name="__go_to_ctor_definition_help">
        <arg key="file" value="/Users/jonas/projects/SCA-CMS/src/com/sca/dataModel/PresentationDataEntity.as"/>
        <arg key="pos" value="167"/>
      </metadata>
      <metadata name="__go_to_definition_help">
        <arg key="file" value="/Users/jonas/projects/SCA-CMS/src/com/sca/dataModel/PresentationDataEntity.as"/>
        <arg key="pos" value="42"/>
      </metadata>
    </type>

    Perfect, that worked!
    Thanks.
    Jonas

  • Dynamic creation of ItemListBox and binding a child node

    Hello @all,
    I have the following context structure
    root
    --category
    -- --report
    -- -- --id
    -- -- --name
    -- --id
    -- --name
    the parent node is "category" with attributes "id" and "name" and the child node is "report" with "id" and "name".
    Now I want on an onAction-Event of a Button, that for every category an itemListBox will be created with the according report names. the creation of the itemList is not the problem, but the binding of the datasource and/or the descriptivetext.
    my code:
    public void initItemListBox( )
        //@@begin initItemListBox()
        IWDView view = wdContext.currentContextElement().getSelectView();
        IWDGroup group = (IWDGroup) view.getElement("ItemListGroup");
        if (group.hasChildren())
          group.removeAllChildren();
        for (int i = 0; i < wdContext.nodeCategory().size(); i++)
          ICategoryElement catEl = wdContext.nodeCategory().getCategoryElementAt(i);
          wdContext.nodeCategory().setLeadSelection(i);
          generateItemLists(wdContext.currentContextElement().getSelectView(), wdContext, catEl);
        //@@end
    public void generateItemLists( com.sap.tc.webdynpro.progmodel.api.IWDView view, de.mgi.portaldev.bc.mdw.msi.wdp.IPrivateCRSReportView.IContextNode wdContext, de.mgi.portaldev.bc.mdw.msi.wdp.IPrivateCRSReportView.ICategoryElement category )
        //@@begin generateItemLists()
        //    ItemListBox
        IWDGroup group;
        IWDGroup catGroup;
        IWDLabel label;
        String groupId = "group_" + category.getName();
        catGroup = (IWDGroup) view.createElement(IWDGroup.class, groupId);
        IWDMatrixLayout matrLayout = (IWDMatrixLayout) catGroup.createLayout(IWDMatrixLayout.class);
        String labelId = "label_" + category.getName();
        label = (IWDLabel) view.createElement(IWDLabel.class, labelId);
        label.setText(category.getName());
        IWDMatrixData layout = (IWDMatrixData) label.createLayoutData(IWDMatrixData.class);
        layout.setVAlign(WDCellVAlign.TOP);
        String itemListId = "itemList_" + category.getName();
        IWDItemListBox itemListBox = (IWDItemListBox) view.createElement(IWDItemListBox.class, itemListId);
        label.setLabelFor(itemListId);
        IWDMatrixData itemlayout = (IWDMatrixData) itemListBox.createLayoutData(IWDMatrixData.class);
        itemListBox.bindDescriptiveText("crsReporting.category.report.name");
        IWDNodeInfo reportNodeInfo = category.nodeReport().getNodeInfo();
    //    itemListBox.bindText(reportNodeInfo.getAttribute("name"));
        itemListBox.setVisibleItems(5);
        IWDMatrixHeadData matrixHead = (IWDMatrixHeadData) itemListBox.createLayoutData(IWDMatrixHeadData.class);
        IWDAction itemListAct = (IWDAction) wdThis.wdGetItemSelectAction();
        itemListBox.setOnLeadSelect(itemListAct);
    //    itemListBox.bindDataSource(reportNodeInfo);
        itemListBox.bindDataSource("crsReporting.category.report");
        catGroup.addChild(label);
        catGroup.addChild(itemListBox);
        group = (IWDGroup) view.getElement("ItemListGroup");
        group.addChild(catGroup);
        //    END ITEMLIST
        //@@end
    What am I doing wrong? in every ItemListbox there are only the report names of the last category.
    thanks.

    RowRepeater is available in WD Java since NW CE (7.1). With RowRepeater, the solution is trivial and can be done completely by declaration in view designer.
    In earlier releases, you can solve it as follows (non-trivial)
    - For each category, create a separate context node "Category_i" with an attribute "name"
    - Inside each category node, create a non-singleton node "Reports" with an attribute "name"
    - Foreach report, add a node element to the reports subnode of its category node <b>element</b>
    All this has to be done using the generic context API.
    On each change of the data, reset the context and re-create these nodes.
    In wdDoModifyView(), check if data have changes and create UI elements programmatically.
    - For each category, create a group, bind header text to category name.
    - Inside each group, create a ItemListBox, bind "dataSource" to reports sub-node of category (non-singleton!) and bind "text" to text attribute of report node.
    Sample code:
    To build context structure:
    private void createCategories()
        for (int i = 0; i < 3; ++i)
          IWDNodeInfo categoryNodeInfo = wdContext.getNodeInfo().addChild("Category" + i, null, true, CMICardinality.ONE, CMICardinality.ONE, true, null);
          IWDAttributeInfo att = categoryNodeInfo.addAttribute("name", "ddic:com.sap.dictionary.string");
          IWDNode categoryNode = wdContext.getChildNode(categoryNodeInfo.getName(), 0);
          categoryNode.getElementAt(0).setAttributeValue(att.getName(), "Category #" + i);
          IWDNodeInfo reportNodeInfo = categoryNodeInfo.addChild("Reports", null, false, CMICardinality.MANY, CMICardinality.ZERO_TO_ONE, true, null);
          IWDAttributeInfo attReportName = reportNodeInfo.addAttribute("name", "ddic:com.sap.dictionary.string");
          IWDNode reportNode = categoryNode.getChildNode("Reports", 0);
          for (int j = 0; j < 5; ++j)
            IWDNodeElement report = reportNode.createAndAddElement();
            report.setAttributeValue("name", "Report #" + j);
    To recreate UI:
    if (<data_have_changed>)
          IWDTransparentContainer root = (IWDTransparentContainer) view.getRootElement();
          for (int i = 0; i < 3; ++i)
            IWDNode categoryNode = wdContext.getChildNode("Category" + i, 0);
            IWDAttributeInfo attName = categoryNode.getNodeInfo().getAttribute("name");
            IWDGroup group = view.createElement(IWDGroup.class);
            root.addChild(group);
            IWDCaption header = view.createElement(IWDCaption.class);
            group.setHeader(header);
            header.bindText(attName);
            IWDNode reportsNode = categoryNode.getChildNode("Reports", 0);
            IWDAttributeInfo attReportName = reportsNode.getNodeInfo().getAttribute("name");
            IWDItemListBox list = view.createElement(IWDItemListBox.class);
            group.addChild(list);
            list.bindDataSource(reportsNode.getNodeInfo());
            list.bindText(attReportName);
    Armin
    Fixed code tags

  • Need to chart attribute value of just one child node of XML document

    I have a XML document with (for example) 7 parent nodes, each
    parent node has 5 child nodes. The parent nodes have an attribute
    @EarlierDTS (DateTime type) that is the x-axis category of a chart.
    Each child node has an attribute @eventid which specifies the id of
    the event, and another atttribute @NumOccurs which specifies how
    many times that event occured in that period.
    How do I tell Flex I want a simple line chart of the eventID
    = 215? What if I want two lines, for both eventID=215 and
    eventid=307?
    I have studied the posts and blogs for over a week now, and
    have seen this question or similar come up quite a few places, with
    no answer.
    1) Should I focus on learning how to create a filterfunction
    for the XMLList that underlies my XMLListCollection so that the
    filtered data view is just one child node per parent node ( or two
    child nodes for the second case)? And set the filtered data view as
    the dataprovider of my chart's vertical series?
    2) Should I focus on learning how to create a XML Filter
    query that selects just one or two child nodes for each parent
    node, and set the charts' series' dataprovider to this filter
    expression? (I don't think this is allowed - but I'm checking with
    the forum members...)
    3) Should I focus on learning how to convert the
    XMLListCollection into a HierarchicalData object, and then learning
    how to filter this object so there is only one (or two) childs per
    parent? This seems like a lot of coding - I almost have to create a
    pair of classes - one for the parent and one for the child - so I
    can create nested ArrayObjects.
    4) Should I create a brand new XMLList by walking the
    original XML list, and inserting Parent nodes and just the child
    nodes that match the eventID(s) I want to chart, into the new
    XMLList?
    I believe that the easiest way would be to create a
    Filterfunction for the XMLList, and bind the chart series to the
    (filtered) XML List. But the problem with this approach is that I
    have seen more than 2 posts asking how to accomplish filtering that
    removes specific children from the view, with no solutions posted.
    Help! What is the best way to get just one child for each
    parent, from an XMLList?

    "whertzing" <[email protected]> wrote in
    message
    news:[email protected]...
    >I have a XML document with (for example) 7 parent nodes,
    each parent node
    >has 5
    > child nodes. The parent nodes have an attribute
    @EarlierDTS (DateTime
    > type)
    > that is the x-axis category of a chart. Each child node
    has an attribute
    > @eventid which specifies the id of the event, and
    another atttribute
    > @NumOccurs
    > which specifies how many times that event occured in
    that period.
    >
    > How do I tell Flex I want a simple line chart of the
    eventID = 215? What
    > if I
    > want two lines, for both eventID=215 and eventid=307?
    >
    > I have studied the posts and blogs for over a week now,
    and have seen this
    > question or similar come up quite a few places, with no
    answer.
    >
    > 1) Should I focus on learning how to create a
    filterfunction for the
    > XMLList
    > that underlies my XMLListCollection so that the filtered
    data view is just
    > one
    > child node per parent node ( or two child nodes for the
    second case)? And
    > set
    > the filtered data view as the dataprovider of my chart's
    vertical series?
    >
    > 2) Should I focus on learning how to create a XML Filter
    query that
    > selects
    > just one or two child nodes for each parent node, and
    set the charts'
    > series'
    > dataprovider to this filter expression? (I don't think
    this is allowed -
    > but
    > I'm checking with the forum members...)
    >
    > 3) Should I focus on learning how to convert the
    XMLListCollection into a
    > HierarchicalData object, and then learning how to filter
    this object so
    > there
    > is only one (or two) childs per parent? This seems like
    a lot of coding -
    > I
    > almost have to create a pair of classes - one for the
    parent and one for
    > the
    > child - so I can create nested ArrayObjects.
    >
    > 4) Should I create a brand new XMLList by walking the
    original XML list,
    > and
    > inserting Parent nodes and just the child nodes that
    match the eventID(s)
    > I
    > want to chart, into the new XMLList?
    >
    > I believe that the easiest way would be to create a
    Filterfunction for the
    > XMLList, and bind the chart series to the (filtered) XML
    List. But the
    > problem
    > with this approach is that I have seen more than 2 posts
    asking how to
    > accomplish filtering that removes specific children from
    the view, with no
    > solutions posted.
    >
    > Help! What is the best way to get just one child for
    each parent, from an
    > XMLList?
    I'd just look at a dataFunction. There's an example here that
    may point you
    in the right direction:
    http://flexdiary.blogspot.com/2008/08/charting-example.html
    HTH;
    Amy

  • Dynamic Table control with context nodes and attributes?

    Hi all
    I have node and attributes in context. i want to create table dynamically using this node and attributes, can anyone give code how to do this???
    Thanks
    Madhan.

    Hi
    Go through this [link|http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/80a3de18-ee00-2d10-bfb3-946d7e00fd91?quicklink=index&overridelayout=true].
    Regards
    Arun.P

  • How To Display  attributes of Child Node and Parent Node in same view

    Suppose I have two view Carview and CarDetail View...IN Component context I have Parent Node Called Cars and It have its attribute as Price,Warranty,Year and also One Child Node Called as Brand Name Whose attribute are PrimaryBrand and SecondaryBrand..Now If I do Mapping of My First View i.e CarView with Child node of BrandName..and then I Have To Show Whole Detail of Car in CarDetailView.......How Can I Achieve it..

    Hi Vinay,
    You can map the child node and even the paren tnode to the same view if u want to display in the same window..
    If not if ur requirment is to dispaly in the sme view but should not map the child and parent to the Same view then you can take another new view.. and insert 2 view containers and then add the Child view and parent view in that view containers and then Diaplay the newly created view.
    Regards,
    Raju Bonagiri

  • How to access the attribute of child node

    Uday,
    now i have changed my coding as
    lr_node_contacts = wd_context->path_get_node( 'CUSTOMER.CONTACTS' ).
    lr_node_contacts->set_attribute( exporting name = 'EMAIL_ID'
                                                    value = 'siva.palaniswamy' ).
    and trying to bind its value to another table using following code
    node->Bind_table( new_items = lr_node_contacts ).
    But am getting the syntax error as
    LR_NODE_CONTACTS is not compatible with NEW_ITEMS ,,,
    thanks,
    Siva

    Hi Siva,
    When you say bind_table( ) you need to pass the internal table with which you want to bind the context node with. You were above trying to pass the reference of the node instead. Thats the reason for the problem.
    So if you want to bind to CONTACTS you should have an internal table like:
    data: lt_contacts type ig_componentcontroller=>elements_contacts.
    You can then say like:
    lr_node_contacts->bind_table( new_items = lt_contacts ).
    I guess that you are a beginner trying to learn WebDynpro. Do go through the [document link|https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/60730016-dbba-2a10-8f96-9754a865b814] which I had sent you to get an idea about working with context nodes and attributes.
    Regards,
    Uday

  • Programmatic, using bean add Parent and child nodes in af:tree dynamically

    Hi All,
    i have to add parent and child nodes dynamically in tree .
    Example :
    i have created a tree like below.On click of button i will get value A ,from pl/sql function i will A1 and A 2 values.which i have to show in pop as tree.
    A
    |-----A1
    |-----A2
    If user clicks on A2.I have to catch A2 value and pass to pl/sql function which gives A2.01 and A2.02 values.
    A
    |-----A1
    |-----A2
    |------A2.01
    |------A2.02.
    A, A1 ,A2,A2.01 ...........values comes from pl/sql funchtion .
    thanks in advance ......... any suggestion will greatly helps

    no use ......................

  • Xpath: get attributes from first child node

    Hi,
    I have some problems by getting the attributes from the first child node, if i try to get child elements everything works fine, but whenever i need the elementvalue from a node with attributes i doesn't return anything.
    The xpath expression works fine if i want to get the element value from all childs, but not when i just want from one of them.
    This one works,
    XPathFactory factory1 = XPathFactory.newInstance();
        XPath xpath = factory1.newXPath();
        xpath.setNamespaceContext(new PersonalNamespaceContext());
        XPathExpression expr
         = xpath.compile("//default:DeviceExchange[1]/default:Status/text()");
       // gets the value of the node picked out
        Object result = expr.evaluate(doc, XPathConstants.NODESET);
        NodeList nodes = (NodeList) result;
        for (int i = 0; i < nodes.getLength(); i++) {
          names[i] = nodes.item(i).getNodeValue();
          String a = names;
    // checks if status is exchanged, if it is sets status to 1
    if (a.length() == 9){
    names[i] = "1"; }
    else{  names[i] = "0";}
    System.out.println(names[i]);This doesn'tXPathFactory factory2 = XPathFactory.newInstance();
    XPath xpath2 = factory2.newXPath();
    xpath2.setNamespaceContext(new PersonalNamespaceContext());
    XPathExpression expr2 = xpath2.compile("//default:DeviceExchange[1]/default:Field[@names='MLPKTID']/text()");
    Object result2 = expr2.evaluate(doc, XPathConstants.NODESET);
    NodeList nodes2 = (NodeList) result2;
    for (int i = 0; i < nodes2.getLength(); i++) {
    names2[i] = nodes2.item(i).getNodeValue();
    System.out.println(names2[i]);}Does anyone have any ideas? I will apreciate all help!
    Edited by: fusen on Oct 25, 2007 1:12 AM                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

    Sorry, solved myself. Just � typo that that i couldn't detect.

  • Child node attributes do not appear in ABAP WD

    Hi,
      I have the following context hierarchy (in ABAP WD):
    -Context
    ---Child_Node_A
    Sub_Child_NodeB
    AttributeE_of_Sub_Child_NodeB
    AttributeF_of_Sub_Child_NodeB
    AttributeG_of_Sub_Child_NodeB
    Sub_Child_NodeC
    AttributeH_of_Sub_Child_NodeC
    AttributeI_of_Sub_Child_NodeC
    AttributeJ_of_Sub_Child_NodeC
    AttributeA_of_Child_Node_A
    AttributeB_of_Child_Node_A
    AttributeC_of_Child_Node_A
    The attributes A, B, C of Child_Node_A are displayed in an ALV grid and the idea is that when the user selects a row in the ALV grid and clicks on a button, a popup is to be shown with additional details of the selected row in the ALV.  In this popup, I have some fields which are mapped to the attributes E, F, G of Sub_Child_NodeB and attributes H, I, J of Sub_Child_NodeC.  But when I show the popup the fields are empty.
    I use a supply function in the Component Controller to fill Child_Node_A and its children, so typically when the popup appears I should see the attributes of the Sub_Child_Node B and C which are linked to the lead selection of the ALV grid (i.e.: Child_Node_A), right?
    By the way, I have linked Child_Node_A from the Component Controller Context to the Context of my Main View and Popup View.  Also, I checked in the INIT method of my Main view to see if after the supply function has been called the Sub_Child_Nodes attributes were still there for a given lead selection in the ALV grid and they were.  But in my action handler to show the popup window from my Main view, I checked again to see if the Sub_Child_Nodes attributes were still there and they were not.
    I hope I was clear enough in my explanation.
    Thanks in advance for your help,
    Christian

    Hi Christian,
    We discussed this problem offline, but I would like to give some feedback on what we found out.
    (a) Since Child_Node_A had a supply function that also supplied Sub_Child_NodeB and since Sub_Child_NodeB was a singleton, it was not resupplied. The initial element originated from having Sub_Child_NodeB as 1..1 cardinality. In this case the runtime recreates an initial node element upon invalidation of the node.
    (b) The second problem might be related to the ALV. As the ALV does not support child nodes being present for the data displayed, the assumption is that Sub_Child_NodeB might have been invalidated once the data was copied back from the ALV to Child_Node_A.
    The solution is to have a supply function for Sub_Child_NodeB as well, which will counter any invalidation at any point in time and will restore the original data.
    I am curious if (b) is really the cause of the problem described.
    Best regards,
    Thomas

  • Sum on child nodes based on attribute value in xslt

    Hi all,
    Any one can post helpful code to calculate the sum of child nodes based on the attribute value of other child node.
    Let's say for example.
    I have one child element has attribute value let's say Tax so I have to put condition on child element having value of "Tax" I need to calcualte sum of Invoice amount that element is also child node
    After calculating sum I have to apply that sum at the header level of the Invoice. For each Invoice I have calculate sum and apply at the header level.

    It isn't working :(.Got the following error:
    An error was reported compiling the XPath expression: error: XPath expression invalid, not a selection: declare namespace ws = 'http://www.bea.com/wli/sb/transports/ws';
    declare namespace tuxedo = 'http://www.bea.com/wli/sb/transports/tuxedo';
    declare namespace wsa = 'http://schemas.xmlsoap.org/ws/2004/08/addressing';
    declare namespace http = 'http://www.bea.com/wli/sb/transports/http';
    declare namespace xsi = 'http://www.w3.org/2001/XMLSchema-instance';
    declare namespace wsp = 'http://schemas.xmlsoap.org/ws/2004/09/policy';
    declare namespace file = 'http://www.bea.com/wli/sb/transports/file';
    declare namespace xsd = 'http://www.w3.org/2001/XMLSchema';
    declare namespace soap12-env = 'http://www.w3.org/2003/05/soap-envelope';
    declare namespace flow = 'http://www.bea.com/alsb/flow/transport';
    declare namespace sftp = 'http://www.bea.com/wli/sb/transports/sftp';
    declare namespace sb = 'http://www.bea.com/wli/sb/transports/sb';
    declare namespace soap-enc = 'http://schemas.xmlsoap.org/soap/encoding/';
    declare namespace ejb = 'http://www.bea.com/wli/sb/transports/ejb';
    declare namespace soap-env = 'http://schemas.xmlsoap.org/soap/envelope/';
    declare namespace jpd = 'http://www.bea.com/wli/sb/transports/jpd';
    declare namespace email = 'http://www.bea.com/wli/sb/transports/email';
    declare namespace tp = 'http://www.bea.com/wli/sb/transports';
    declare namespace dsp = 'http://www.bea.com/dsp/transport/sb';
    declare namespace ctx = 'http://www.bea.com/wli/sb/context';
    declare namespace soap12-enc = 'http://www.w3.org/2003/05/soap-encoding';
    declare namespace wsu = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd';
    declare namespace jms = 'http://www.bea.com/wli/sb/transports/jms';
    declare namespace ftp = 'http://www.bea.com/wli/sb/transports/ftp';
    fn:string(./xml-fragment/@IntObjectName).

  • Check the value of attribute of a child node in datatype xmltype.

    Hello,
    I have a xml stored in column having datatype as "XMLTYPE"
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <Settings>
      <Setting Name="A1" Value="N"/>
      <Setting Name="A2" Value="N"/>
      <Setting Name="A3" Value="SOMEVALUE"/>
      <Setting Name="A4" Value="N"/>
      <Setting Name="A5" Value="Y"/>
      <Setting Name="A6" Value="N"/>
    </Settings>I do not want to loop into each child node. But want to find out if the value of setting A5 is Y or N? Is there a way I can find that without doing the extract of "Setting" child node and then looping each node to find the value?
    Regards,

    You didn't specify your version of Oracle so here are two options. If 10.2 or greater, use XMLTable, else use the ExtractValue option.
    -- The WITH simply simulates your existing table that I do not have.
    WITH fake_tab AS
    (SELECT XMLTYPE('<?xml version="1.0" encoding="ISO-8859-1"?>
    <Settings>
      <Setting Name="A1" Value="N"/>
      <Setting Name="A2" Value="N"/>
      <Setting Name="A3" Value="SOMEVALUE"/>
      <Setting Name="A4" Value="N"/>
      <Setting Name="A5" Value="Y"/>
      <Setting Name="A6" Value="N"/>
    </Settings>
    ') tab_col
      FROM dual)
    -- For 10.2 and higher use this SELECT
    SELECT a5
      FROM fake_tab,
           XMLTABLE('/Settings'
                    PASSING fake_tab.tab_col
                    COLUMNS
                    a5   VARCHAR2(10)  PATH 'Setting[@Name="A5"]/@Value');
    -- For 10.1 and before
    SELECT ExtractValue(tab_col, '/Settings/Setting[@Name="A5"]/@Value')
      FROM fake_tab;

  • ContextException: DataNodeInfo(AdminView): unknown child node IO

    Hi all,
    I am getting this exception while creating a Web Dynpro application which provides a drop-down menu (containing a list of tables from SQL server) for the user. The user can select a table from the drop-down, and when he clicks Submit, the contents of the table selected has to be displayed.
    For this, I am creating a node in the context of the view dynamically and also adding attributes to the node corresponding to the columns of the table selected. I am doing this dynamic creation in the wdModifyView(). I am creating the view layout which displays the table-contents dynamically too.
    But when I run the application, I am getting this exception. Following is the complete stack trace,
    com.sap.tc.webdynpro.progmodel.context.ContextException: DataNodeInfo(AdminView): unknown child node IO
         at com.sap.tc.webdynpro.progmodel.context.Paths.followMetaPath(Paths.java:794)
         at com.sap.tc.webdynpro.progmodel.context.Paths.getAttributeInfoFor(Paths.java:234)
         at com.sap.tc.webdynpro.clientserver.uielib.standard.uradapter.TableAdapter._getAlignment(TableAdapter.java:11239)
         at com.sap.tc.webdynpro.clientserver.uielib.standard.uradapter.TableAdapter._calculateColumnHAlign(TableAdapter.java:12455)
         at com.sap.tc.webdynpro.clientserver.uielib.standard.uradapter.TableAdapter.setViewAndNodeElement(TableAdapter.java:398)
         at com.sap.tc.webdynpro.clientserver.uielements.adaptmgr.URAdapterManager.getAdapterFor(URAdapterManager.java:285)
         at com.sap.tc.webdynpro.clientserver.uielements.adaptmgr.URAdapterManager.getAdapterFor(URAdapterManager.java:93)
         at com.sap.tc.webdynpro.clientserver.uielements.adaptbase.AbstractAdapter.getAdapterFor(AbstractAdapter.java:495)
         at com.sap.tc.webdynpro.clientserver.uielib.standard.uradapter.FlowLayoutAdapter$Items.getControl(FlowLayoutAdapter.java:368)
         at com.sap.tc.ur.renderer.ie6.FlowLayoutRenderer.renderFlowLayoutItemFragment(FlowLayoutRenderer.java:288)
         at com.sap.tc.ur.renderer.ie6.FlowLayoutRenderer.renderFlowLayoutFragment(FlowLayoutRenderer.java:244)
         at com.sap.tc.ur.renderer.ie6.FlowLayoutRenderer.render(FlowLayoutRenderer.java:49)
         at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:434)
         at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:133)
         at com.sap.tc.ur.renderer.ie6.ScrollContainerRenderer.renderScrollContainerFragment(ScrollContainerRenderer.java:619)
         at com.sap.tc.ur.renderer.ie6.ScrollContainerRenderer.render(ScrollContainerRenderer.java:74)
         at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:434)
         at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:133)
         at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.UiWindowRenderer.render(UiWindowRenderer.java:52)
         at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:434)
         at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:133)
         at com.sap.tc.webdynpro.clientimpl.html.client.HtmlClient.sendHtml(HtmlClient.java:1057)
         at com.sap.tc.webdynpro.clientimpl.html.client.HtmlClient.fillDynamicTemplateContext(HtmlClient.java:457)
         at com.sap.tc.webdynpro.clientimpl.html.client.HtmlClient.sendResponse(HtmlClient.java:1245)
         at com.sap.tc.webdynpro.clientimpl.html.client.HtmlClient.retrieveData(HtmlClient.java:253)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doRetrieveData(WindowPhaseModel.java:595)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:156)
         at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:335)
         at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
         at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:321)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:713)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:666)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:250)
         at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:150)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:62)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:53)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:175)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    Please help...

    Here it is,
    public static void wdDoModifyView(IPrivateAdminView wdThis, IPrivateAdminView.IContextNode wdContext, com.sap.tc.webdynpro.progmodel.api.IWDView view, boolean firstTime)
        //@@begin wdDoModifyView
              if (firstTime) {
              } else {
                   String[] retString = null;
                   java.util.ArrayList arList = new java.util.ArrayList();
                   Context ctx = null;
                   DataSource ds = null;
                   String dataSource = "jdbc/WebCASDS";
                   try {
                        ctx = new InitialContext();
                        if (ctx == null) {
                             wdContext
                                  .wdGetAPI()
                                  .getController()
                                  .getComponent()
                                  .getMessageManager()
                                  .reportSuccess("Error - No Context");
                        ds = (DataSource) ctx.lookup(dataSource);
                        if (ds == null) {
                             wdContext
                                  .wdGetAPI()
                                  .getController()
                                  .getComponent()
                                  .getMessageManager()
                                  .reportSuccess("Error - No dataSource: " + ds);
                   } catch (ContextException ce) {
                        wdContext
                             .wdGetAPI()
                             .getController()
                             .getComponent()
                             .getMessageManager()
                             .reportSuccess("Inside catch1: Context Exception" + ce);
                   } catch (Exception e) {
                        wdContext
                             .wdGetAPI()
                             .getController()
                             .getComponent()
                             .getMessageManager()
                             .reportSuccess("DataSource Look up Exception ");
                   try {
                        IWDDropDownByKey key =
                             (IWDDropDownByKey) view.getElement("DropDownByKey");
                        String TableName1 = key.getSelectedKey();
                        wdContext
                             .wdGetAPI()
                             .getController()
                             .getComponent()
                             .getMessageManager()
                             .reportSuccess("Selected Table : " + TableName1);
                        Statement stmt = null;
                        ResultSet rs = null;
                        ResultSetMetaData rsmtadta = null;
                        int colCount;
                        int x = 0;
                        int i;
                        String[] colName = null;
                        String[] colType = null;
                        String sqlQuery = null;
                        stmt = conn1.createStatement();
                        sqlQuery = "select * from " + TableName1 + "";
                        wdContext
                             .wdGetAPI()
                             .getController()
                             .getComponent()
                             .getMessageManager()
                             .reportSuccess("SQL Query:" + sqlQuery);
                        stmt.execute(sqlQuery);
                        rs = stmt.executeQuery(sqlQuery);
                        rsmtadta = rs.getMetaData();
                        colCount = rsmtadta.getColumnCount();
                        wdContext
                             .wdGetAPI()
                             .getController()
                             .getComponent()
                             .getMessageManager()
                             .reportSuccess("Column Count " + colCount);
                        colName = new String[colCount + 1];
                        colType = new String[colCount + 1];
                        for (i = 1; i <= colCount; i++) {
                             colName[i - 1] = rsmtadta.getColumnName(i);
                             colType[i - 1] = rsmtadta.getColumnTypeName(i);
                             if (colType[i - 1].equalsIgnoreCase("varchar")) {
                                  colType[i - 1] = "ddic:com.sap.dictionary.string";
                             } else if (colType[i - 1].equalsIgnoreCase("datetime")) {
                                  colType[i - 1] = "ddic:com.sap.tut.wd.languages.myDate";
                             wdContext
                                  .wdGetAPI()
                                  .getController()
                                  .getComponent()
                                  .getMessageManager()
                                  .reportSuccess("Column Name " + colName[i - 1]);
                             wdContext
                                  .wdGetAPI()
                                  .getController()
                                  .getComponent()
                                  .getMessageManager()
                                  .reportSuccess("Column Type " + colType[i - 1]);
                        //Creating a node corresponding to the selected table
                        IWDNodeInfo rootNodeInfo = wdContext.getNodeInfo();
                        IWDNodeInfo tableNodeInfo =
                             rootNodeInfo.addChild(
                                  "TableSelected",
                                  null,
                                  true,
                                  false,
                                  true,
                                  false,
                                  false,
                                  true,
                                  null,
                                  null,
                                  null);
                        wdContext
                             .wdGetAPI()
                             .getController()
                             .getComponent()
                             .getMessageManager()
                             .reportSuccess("After node creation");
                        //Creating the attributes for the node created.. corresponding to the columns present in the selected table
                        for (i = 1; i <= colCount; i++) {
                             tableNodeInfo.addAttribute(colName[i - 1], colType[i - 1]);
                        wdContext
                             .wdGetAPI()
                             .getController()
                             .getComponent()
                             .getMessageManager()
                             .reportSuccess("After attribute creation");
                        IWDNode tableNode = wdContext.getChildNode("TableSelected", 0);
                        int rowCount = 0;
                        while (rs.next()) {
                             try {
                                  IWDNodeElement tableElement = tableNode.createElement();
                                  wdContext
                                       .wdGetAPI()
                                       .getController()
                                       .getComponent()
                                       .getMessageManager()
                                       .reportSuccess("Inside while before for, element initialized");
                                  for (i = 1; i <= colCount; i++) {
                                       wdContext
                                            .wdGetAPI()
                                            .getController()
                                            .getComponent()
                                            .getMessageManager()
                                            .reportSuccess(
                                                 "values1..."
                                                      + rs.getObject(
                                                           colName[i - 1].toString()));
                                  for (i = 1; i <= colCount; i++) {
                                       tableElement.setAttributeValue(
                                            colName[i - 1],
                                            rs.getObject(colName[i - 1].toString()));
                                       wdContext
                                            .wdGetAPI()
                                            .getController()
                                            .getComponent()
                                            .getMessageManager()
                                            .reportSuccess("Inside for, element row created");
                                  tableNode.addElement(tableElement);
                                  wdContext
                                       .wdGetAPI()
                                       .getController()
                                       .getComponent()
                                       .getMessageManager()
                                       .reportSuccess("Element created :" + tableElement);
                                  rowCount++;
                             } catch (ContextException ce) {
                                  wdContext
                                       .wdGetAPI()
                                       .getController()
                                       .getComponent()
                                       .getMessageManager()
                                       .reportSuccess(
                                            "Inside catch2: Context Exception" + ce);
                             } catch (ClassCastException e) {
                                  wdContext
                                       .wdGetAPI()
                                       .getController()
                                       .getComponent()
                                       .getMessageManager()
                                       .reportSuccess("Class cast exception" + e);
                        IWDTable table =
                             (IWDTable) view.createElement(IWDTable.class, null);
                        IWDNodeInfo tableNodeCreatedInfo = tableNode.getNodeInfo();
                        table.bindDataSource(tableNodeCreatedInfo);
                        IWDCaption tableCaption =
                             (IWDCaption) view.createElement(IWDCaption.class, null);
                        tableCaption.setText("Table Contents");
                        table.setHeader(tableCaption);
                        for (i = 1; i <= colCount; i++) {
                             IWDTableColumn column =
                                  (IWDTableColumn) view.createElement(
                                       IWDTableColumn.class,
                                       "ColCaption" + i);
                             IWDCaption caption =
                                  (IWDCaption) view.createElement(
                                       IWDCaption.class,
                                       "TableCaption" + i);
                             String header = colName[i - 1];
                             caption.setText(header);
                             column.setHeader((IWDCaption) caption);
                             table.addColumn(column);
                             wdContext
                                  .wdGetAPI()
                                  .getController()
                                  .getComponent()
                                  .getMessageManager()
                                  .reportSuccess("Inside for after creating column header");
                        //                                        IWDUIElementContainer root =
                        //                                                                 (IWDUIElementContainer) view.getRootElement();
                        //                                                            root.addChild(table);
                        int k = 1;
                        while (k <= rowCount) {
                             wdContext
                                  .wdGetAPI()
                                  .getController()
                                  .getComponent()
                                  .getMessageManager()
                                  .reportSuccess("Inside while layout creation after headers are in");
                             for (i = 1; i <= colCount; i++) {
                                  IWDTableColumn innerColumn =
                                       (IWDTableColumn) view.createElement(
                                            IWDTableColumn.class,
                                            null);
                                  IWDNodeElement nodeElement =
                                       tableNode.getElementAt(k - 1);
                                  String attribValue =
                                       nodeElement.getAttributeAsText(colName[i - 1]);
                                  wdContext
                                       .wdGetAPI()
                                       .getController()
                                       .getComponent()
                                       .getMessageManager()
                                       .reportSuccess(
                                            "Inside inner for, attrib value "
                                                 + attribValue);
                                  IWDTextView nameTextview1 =
                                       (IWDTextView) view.createElement(
                                            IWDTextView.class,
                                            "nameTextview" + k + i);
                                  wdContext
                                       .wdGetAPI()
                                       .getController()
                                       .getComponent()
                                       .getMessageManager()
                                       .reportSuccess("After text-view creation");
                                  nameTextview1.bindText(attribValue);
                                  innerColumn.setTableCellEditor(
                                       (IWDTableCellEditor) nameTextview1);
                                  table.addColumn(innerColumn);
                             k++;
                        IWDUIElementContainer root =
                             (IWDUIElementContainer) view.getRootElement();
                        root.addChild(table);
                   } catch (ContextException ce) {
                        wdContext
                             .wdGetAPI()
                             .getController()
                             .getComponent()
                             .getMessageManager()
                             .reportSuccess("Inside catch3: Context Exception" + ce);
                   } catch (RuntimeException e) {
                        wdContext
                             .wdGetAPI()
                             .getController()
                             .getComponent()
                             .getMessageManager()
                             .reportSuccess("Inside catch : runtime exception" + e);
                   } catch (SQLException e) {
                        wdContext
                             .wdGetAPI()
                             .getController()
                             .getComponent()
                             .getMessageManager()
                             .reportSuccess("Inside catch : SQL exception" + e);
                   } catch (Exception e) {
                        wdContext
                             .wdGetAPI()
                             .getController()
                             .getComponent()
                             .getMessageManager()
                             .reportSuccess("..normal exc.." + e);
        //@@end

  • Creating a Dynamic Node for a Dynamic Graphic - Tutorial

    Hi everyone,
    I'm sharing my first tutorial, hope it'll be helpful for you.
    In the Layout tab, it's possible to create an UI element "Business Graphic". It's a very simple tool that only requires a context node with a category attribute (that means, the values that will appear in the 'x' axis) and one or more series (each one with a color, generally a numerical value). It's possible to add a label for each series for better understanding of the Graphic.
    Although it's a very powerful tool, there are some problems when we must create a graphic with N series and different labels. If the graphic use an ALV or internal table to fetch data, during runtime we can have more or less series. The definition of a static node and generic series is not enough in this case. That's why I'd like to present you this little tutorial to create a dynamic node that fetchs a dynamic graph:
    In the WDDOINIT or Event Handler method that starts the application (once the data is available) we should create the dynamic node in the following way:
      DATA: lr_node_info    TYPE REF TO if_wd_context_node_info,             
                 lt_attributes      TYPE cl_abap_structdescr=>component_table,
                 attribute           LIKE LINE OF lt_attributes,
                 struct_type       TYPE REF TO cl_abap_structdescr,
                 lo_dyn_node    TYPE REF TO if_wd_context_node.
    * Let's suppouse we can LOOP at the data table, so we can fetch the
    * category data type (for example company name, month, year, ...)
    * and each series with a numeric type
      attribute-name = 'CATEGORY'.
      attribute-type ?= cl_abap_datadescr=>describe_by_name( 'STRING' ).
      INSERT attribute INTO TABLE lt_attributes.
      attribute-name = 'SERIE1'.
      attribute-type ?= cl_abap_datadescr=>describe_by_name( 'I' ).
      INSERT attribute INTO TABLE lt_attributes.
      attribute-name = 'SERIE2'.
      attribute-type ?= cl_abap_datadescr=>describe_by_name( 'I' ).
      INSERT attribute INTO TABLE lt_attributes.
    * Once we have all the attributs for the node, we create a formal structure
      struct_type = cl_abap_structdescr=>create( lt_attributes ).
    * Now we can get the context information to add a new node
      lr_node_info = wd_context->get_node_info( ).
    * Create the node
      lr_node_info = lr_node_info->add_new_child_node(
                        name = 'GRPH_DYN'
                        IS_MANDATORY = ABAP_false
                        IS_MULTIPLE = ABAP_true
                        STATIC_ELEMENT_RTTI = struct_type
                        IS_STATIC = ABAP_false ).
    * Now we should populates the node, I'll create a hardcoded table,
    * simulating the internal table that you should already have
      TYPES: BEGIN OF tw_alv,
                        category  TYPE string,
                       SERIE1    TYPE i,
                       SERIE2    TYPE i,
                    END OF tw_alv.
      TYPES: tt_alv TYPE STANDARD TABLE OF tw_alv.
      DATA: lw_alv  TYPE tw_alv,
                  lt_alv   TYPE tt_alv.
      lw_alv-category = 'Alfa'.
      lw_alv-serie1   = 3.
      lw_alv-serie2   = 8.
      APPEND lw_alv TO lt_alv.
      lw_alv-category = 'Beta'.
      lw_alv-serie1   = 4.
      lw_alv-serie2   = 4.
      APPEND lw_alv TO lt_alv.
      lw_alv-category = 'Gamma'.
      lw_alv-serie1   = 1.
      lw_alv-serie2   = 3.
      APPEND lw_alv TO lt_alv.
    * Now let's call the recently created node and bind the lt_alv table.
    * Get node from context
      lo_dyn_node = wd_context->get_child_node( name = 'GRPH_DYN' ).
    * Bind table with ALV Container
      CALL METHOD lo_dyn_node->bind_table
        EXPORTING
          new_items = lt_alv.
    * It's always good to check if the table was succesfully binded.
    * I refresh the lt_alv table and get the values from the node for controlling
      REFRESH lt_alv.
      lo_dyn_node->get_static_attributes_table( IMPORTING table = lt_alv ).
    There are other ways of adding a node structure in the method add_new_child_node, but it works for me only with STATIC_ELEMENT_RTTI. The node is now created and has the data required for the graphic. Now, we should go to WDDOONMODIFYVIEW, or save the target view as a parameter, to create the graphic, bind the category and series and show it on the screen.
      DATA: lr_graph       TYPE REF TO cl_wd_business_graphics,
                  lr_cat           TYPE REF TO cl_wd_category,
                  lr_series1    TYPE REF TO cl_wd_simple_series,
                  lr_series2    TYPE REF TO cl_wd_simple_series,
                  lr_container TYPE REF TO cl_wd_uielement_container,
                  lr_flow         TYPE REF TO cl_wd_flow_data.
    * Get the root element from the Layout or the specific
    * container you have created for the graphic
      lr_container ?= view->get_element( 'ROOTUIELEMENTCONTAINER' ).
    * Creates a line busniess graph
      lr_graph = cl_wd_business_graphics=>new_business_graphics(
            BIND_SERIES_SOURCE = 'GRPH_DYN'
            CHART_TYPE = cl_wd_business_graphics=>e_chart_type-lines
            HEIGHT = 340
            WIDTH = 750
            ID = 'GRAPH'  ).
    * Create the flow data for the new UI Element business graphic
      lr_flow = cl_wd_flow_data=>new_flow_data( element = lr_graph ).
    * Set graph in the root container from the Layout tab
      lr_container->add_child( lr_graph ).
    * Bind the category from the dynamic node to the dynamic graphic
      lr_cat = cl_wd_category=>new_category(
                      view = view
                      bind_description = 'GRPH_DYN.CATEGORY'
                      tooltip = 'Company Name' ).
      lr_graph->set_category( lr_cat ).
    * Bind the two series from the dynamic node to the dynamic graphic
      lr_series1 = cl_wd_simple_series=>new_simple_series(
                      bind_value = 'GRPH_DYN.SERIE1'
                      label = 'Sales'
                      view = view
                      tooltip = 'Average Sales' ).
      lr_graph->add_series( lr_series1 ).
      lr_series2 = cl_wd_simple_series=>new_simple_series(
                      bind_value = 'GRPH_DYN.SERIE2'
                      label = 'Purchases'
                      view = view
                      tooltip = 'Average Purchases' ).
      lr_graph->add_series( lr_series2 ).
    Finally we have created our business graphic. Test the application and you'll see something like the attached image.
    Hope you'll find it useful.
    Daniel Monteros.

    Hi,
    http://htmldb.oracle.com/pls/otn/f?p=26372
    then ApEx>Trees and pick a level.
    Use Help for more information.
    I you think that tree could help I will put more explanation into help page.
    Konstantin

Maybe you are looking for

  • E-mail submit, form sending to wrong address

    My e-mail submit button is part of a fragment. It has been working fine on all other forms. The forms are distribute by my default main e-mail account and the "form submit" button is set to a gmail account so that another location and I can share acc

  • HP 8610 touchscreen

    I have a new HP 8610 all in one, I am unable to select the "copy" or "Fax" options from the touchscreen.  I can see the options on the touchscreen and they appear to be the same as the "scan" options but they just are not activated for me to choose t

  • How can I combine by document on my mac and macbook

    Hi, I have recently bought a macbook and I already have a desktop mac.  How can I combine my document on both so that I can share stuff THanks Donna

  • Saving a Pages file as a jpg

    I am using Pages from iWork 06. I want to save/turn the file I created in Pages into/as a jpg file. Is this at all possible? Or is there another process first to change it from pdf to jpg. Thank you veedeekay

  • Database Leasing V/s Non data base consensus leasing

    We are planning to use Whole Server Migration for a HA weblogic cluster. Our environment has a Highly available database. Do we need to use Database leasing or In-Memory consensus leasing. We are ok to have node manager control server instances and h