Additional Blogs by SAP
cancel
Showing results for 
Search instead for 
Did you mean: 
CarstenJ
Product and Topic Expert
Product and Topic Expert
0 Kudos
330
           TYPE spfli.   * create the ixml main factory   ixml = cl_ixml=>create( ).  * create a empty document   document = ixml->create_document( ).   charset = 'SAP*'.   encoding = ixml->create_encoding( character_set = charset                                     byte_order    = endian ).   document->set_encoding( encoding = encoding ).   * create root node for JNet   element = document->create_element( name = 'SAPJNetData' ).   ret = element->set_attribute( name = 'version' value = '1.0' ).   ret = element->set_attribute( name = 'xml:lang' value = 'en' ).   ret = document->append_child( new_child = element ).   root = element.  *-- create TypeRepository ------------------------------------------- *   element = document->create_element( name = 'TypeRepository' ).   ret = element->set_attribute( name = 'id' value = 'connections' ).   ret = element->set_attribute( name = 'version' value = '1.0' ).   ret = root->append_child( new_child = element ).   typerep = element.   * create LAYOUT    element = document->create_element( name = 'LAYOUT' ).   ret = typerep->append_child( new_child = element ).   parent = element.  * create MyLayout   element = document->create_element( name = 'type' ).   ret = element->set_attribute( name = 'name' value = 'MyLayout' ).   ret = parent->append_child( new_child = element ).   parent = element.    element = document->create_element( name = 'component' ).   ret = element->set_attribute( name = 'index' value = '0' ).   ret = element->set_attribute( name = 'width' value = '100%' ).   ret = element->set_attribute( name = 'height' value = '50%' ).   ret = parent->append_child( new_child = element ).    element = document->create_element( name = 'component' ).   ret = element->set_attribute( name = 'index' value = '1' ).   ret = element->set_attribute( name = 'width' value = '100%' ).   ret = element->set_attribute( name = 'height' value = '50%' ).   ret = parent->append_child( new_child = element ).  *-- create LABEL ---------------------------------------------------- *   element = document->create_element( name = 'LABEL' ).   ret = typerep->append_child( new_child = element ).   parent = element.  * create MyHeaderLabel   element = document->create_element( name = 'type' ).   ret = element->set_attribute( name = 'name' value = 'MyHeaderLabel' ).   ret = element->set_attribute( name = 'inherits' value = 'NodeLabel' ).   ret = parent->append_child( new_child = element ).   parent = element.    element = document->create_element( name = 'color' ).   ret = element->set_attribute( name = 'type' value = 'White' ).   ret = parent->append_child( new_child = element ).    element = document->create_element( name = 'fillColor' ).   ret = element->set_attribute( name = 'type' value = 'Blue' ).   ret = parent->append_child( new_child = element ).    element = document->create_element( name = 'font' ).   ret = parent->append_child( new_child = element ).   parent = element.    element = document->create_element( name = 'style' ).   ret = element->set_value( value = 'BOLD' ).   ret = parent->append_child( new_child = element ).   * create NODE   element = document->create_element( name = 'NODE' ).   ret = typerep->append_child( new_child = element ).   parent = element.  * create MyNode   element = document->create_element( name = 'type' ).   ret = element->set_attribute( name = 'name' value = 'MyNode' ).   ret = parent->append_child( new_child = element ).   parent = element.    element = document->create_element( name = 'layout' ).   ret = element->set_attribute( name = 'type' value = 'MyLayout' ).   ret = parent->append_child( new_child = element ).    element = document->create_element( name = 'label' ).   ret = element->set_attribute( name = 'index' value = '0' ).   ret = element->set_attribute( name = 'type' value = 'MyHeaderLabel' ).   ret = parent->append_child( new_child = element ).    element = document->create_element( name = 'label' ).   ret = element->set_attribute( name = 'index' value = '1' ).   ret = element->set_attribute( name = 'type' value = 'NodeLabel' ).   ret = parent->append_child( new_child = element ).    element = document->create_element( name = 'plugs' ).   ret = element->set_attribute( name = 'min' value = '0' ).   ret = element->set_attribute( name = 'position' value = 'SOUTH' ).   ret = parent->append_child( new_child = element ).    element = document->create_element( name = 'sockets' ).   ret = element->set_attribute( name = 'min' value = '0' ).   ret = element->set_attribute( name = 'position' value = 'NORTH' ).   ret = parent->append_child( new_child = element ).    element = document->create_element( name = 'shape' ).   ret = parent->append_child( new_child = element ).   parent = element.    element = document->create_element( name = 'border' ).   ret = element->set_attribute( name = 'type' value = 'EMPTY' ).   ret = parent->append_child( new_child = element ).    element = document->create_element( name = 'size' ).   ret = element->set_value( value = '140,77' ).   ret = parent->append_child( new_child = element ).    element = document->create_element( name = 'filled' ).   ret = element->set_value( value = 'TRUE' ).   ret = parent->append_child( new_child = element ).    element = document->create_element( name = 'fillColor' ).   ret = parent->append_child( new_child = element ).   parent = element.    element = document->create_element( name = 'rgb' ).   ret = element->set_value( value = '221,221,221' ).   ret = parent->append_child( new_child = element ).   *-- create Graph ---------------------------------------------------- *   element = document->create_element( name = 'Graph' ).   ret = element->set_attribute( name = 'version' value = '1.0' ).   ret = root->append_child( new_child = element ).   graph = element.  * layout, direction and view   element = document->create_element( name = 'layouts' ).   ret = element->set_attribute( name = 'onLoad' value = 'TREE' ).   ret = graph->append_child( new_child = element ).   parent = element.    element = document->create_element( name = 'types' ).   ret = element->set_value( value = 'TREE' ).   ret = parent->append_child( new_child = element ).   parent = element.    element = document->create_element( name = 'direction' ).   ret = element->set_value( value = 'TOP_BOTTOM' ).  ret = graph->append_child( new_child = element ).    element = document->create_element( name = 'view' ).   ret = element->set_attribute( name = 'coordinates' value = 'GRID' ).   ret = graph->append_child( new_child = element ).   parent = element.    element = document->create_element( name = 'grid' ).   ret = element->set_value( value = '80,180' ).   ret = parent->append_child( new_child = element ).    element = document->create_element( name = 'offset' ).   ret = element->set_value( value = '40,0' ).   ret = parent->append_child( new_child = element ).  * create node for the carrier   node_carriers = wd_context->get_child_node( name = wd_this->wdctx_carriers ).   node_carriers->get_static_attributes_table(    IMPORTING      TABLE  = lt_carriers ).   CHECK r_param->index IS NOT INITIAL.    READ TABLE lt_carriers INDEX r_param->index ASSIGNING append_child( new_child = element ).  * create nodes and edges for the connections   SELECT * FROM spfli INTO TABLE lt_spfli WHERE carrid = append_child( new_child = element ).    ENDLOOP.   * convert the XML to xstring   streamfactory = ixml->create_stream_factory( ).   ostream = streamfactory->create_ostream_xstring( content ).    renderer = ixml->create_renderer( document = document                                     ostream  = ostream ).   ret = renderer->render( ).   ostream->close( ).  * fill the data_source with the XML data   wd_context->set_attribute(     EXPORTING       name =  `DATA_SOURCE`       value = content ).  * dump the XML data to a mime file so  * we can see what's generated   DATA:     mime_repository TYPE REF TO if_mr_api,     url TYPE string VALUE '/SAP/BC/WebDynpro/SAP/Z_NETWORK_EXAMPLE/dump.xml'.    mime_repository = cl_mime_repository_api=>get_api( ).    CALL METHOD mime_repository->put     EXPORTING       i_url                     = URL       i_content                 = content       i_suppress_package_dialog = abap_true.   ENDMETHOD.      Of course the coding of this method is a long and explicit and the usage of select statements should be avoided in the MVC concept. But the focus here is to understand the generation of the XML data and not on nifty programming.    As a result you'll get a nice network chart:
1 Comment