<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: create xml tag dynamically within simple transformation in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/create-xml-tag-dynamically-within-simple-transformation/m-p/2780141#M647965</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Exaple program for creating XML file from abap&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;REPORT  z_xit_xml_dom_create.

  TYPE-POOLS: ixml.

  TYPES: BEGIN OF xml_line,
          data(256) TYPE x,
         END OF xml_line.

  DATA: l_ixml            TYPE REF TO if_ixml,
        l_streamfactory   TYPE REF TO if_ixml_stream_factory,
        l_ostream         TYPE REF TO if_ixml_ostream,
        l_renderer        TYPE REF TO if_ixml_renderer,
        l_document        TYPE REF TO if_ixml_document.

  DATA: l_element_flights TYPE REF TO if_ixml_element,
        l_element_airline TYPE REF TO if_ixml_element,
        l_element_flight  TYPE REF TO if_ixml_element,
        l_element_from    TYPE REF TO if_ixml_element,
        l_element_to      TYPE REF TO if_ixml_element,
        l_element_dummy   TYPE REF TO if_ixml_element,
        l_value           TYPE string.

  DATA: l_xml_table       TYPE TABLE OF xml_line,
        l_xml_size        TYPE i,
        l_rc              TYPE i.

  DATA: lt_spfli          TYPE TABLE OF spfli.
  DATA: l_spfli           TYPE spfli.


  START-OF-SELECTION.
*   Fill the internal table
    SELECT * FROM spfli INTO TABLE lt_spfli.

*   Sort internal table
    SORT lt_spfli BY carrid.

*   Start filling xml dom object from internal table
    LOOP AT lt_spfli INTO l_spfli.

      AT FIRST.
*       Creating a ixml factory
        l_ixml = cl_ixml=&amp;gt;create( ).
*       Creating the dom object model
        l_document = l_ixml-&amp;gt;create_document( ).
*       Fill root node with value flights
        l_element_flights  = l_document-&amp;gt;create_simple_element(
                    name = 'flights'
                    parent = l_document ).
      ENDAT.

      AT NEW carrid.
*       Create element 'airline' as child of 'flights'
        l_element_airline  = l_document-&amp;gt;create_simple_element(
                    name = 'airline'
                    parent = l_element_flights  ).

*       Create attribute 'code' of node 'airline'
        l_value = l_spfli-carrid.
        l_rc = l_element_airline-&amp;gt;set_attribute( name = 'code' value = l_value ).

*       Create attribute 'name' of node 'airline'
        SELECT SINGLE carrname FROM scarr INTO l_value WHERE carrid EQ l_spfli-carrid.
        l_rc = l_element_airline-&amp;gt;set_attribute( name = 'name' value = l_value ).

      ENDAT.

      AT NEW connid.
*       Create element 'flight' as child of 'airline'
        l_element_flight  = l_document-&amp;gt;create_simple_element(
                    name = 'flight'
                    parent = l_element_airline  ).

*       Create attribute 'number' of node 'flight'
        l_value = l_spfli-connid.
        l_rc = l_element_flight-&amp;gt;set_attribute( name = 'number' value = l_value ).

      ENDAT.

*     Create element 'from' as child of 'flight'
      CONCATENATE l_spfli-cityfrom ',' l_spfli-countryfr INTO l_value.
      l_element_from  = l_document-&amp;gt;create_simple_element(
                  name = 'from'
                  value = l_value
                  parent = l_element_flight  ).

*     Create attribute 'airport' of node 'from'
      l_value = l_spfli-airpfrom.
      l_rc = l_element_from-&amp;gt;set_attribute( name = 'airport' value = l_value ).

*     Create element 'to' as child of 'flight'
      CONCATENATE l_spfli-cityto ',' l_spfli-countryto INTO l_value.
      l_element_to  = l_document-&amp;gt;create_simple_element(
                  name = 'to'
                  value = l_value
                  parent = l_element_flight  ).

*     Create attribute 'airport' of node 'from'
      l_value = l_spfli-airpto.
      l_rc = l_element_to-&amp;gt;set_attribute( name = 'airport' value = l_value ).

*     Create element 'departure' as child of 'flight'
      l_value = l_spfli-deptime.
      l_element_dummy  = l_document-&amp;gt;create_simple_element(
                  name = 'departure'
                  value = l_value
                  parent = l_element_flight ).

*     Create element 'arrival' as child of 'flight'
      l_value = l_spfli-arrtime.
      l_element_dummy  = l_document-&amp;gt;create_simple_element(
                  name = 'arrival'
                  value = l_value
                  parent = l_element_flight ).

*     Create element 'type' as child of 'flight'
      CASE l_spfli-fltype.
        WHEN 'X'.
          l_value = 'Charter'.
        WHEN OTHERS.
          l_value = 'Scheduled'.
      ENDCASE.
      l_element_dummy  = l_document-&amp;gt;create_simple_element(
                  name = 'type'
                  value = l_value
                  parent = l_element_flight ).
    ENDLOOP.
    IF sy-subrc NE 0.
      MESSAGE 'No data into db table ''spfli'', please run program ''SAPBC_DATA_GENERATOR'' with transaction ''SA38''' TYPE 'E'.
    ENDIF.


*   Creating a stream factory
    l_streamfactory = l_ixml-&amp;gt;create_stream_factory( ).
*   Connect internal XML table to stream factory
    l_ostream = l_streamfactory-&amp;gt;create_ostream_itable( table = l_xml_table ).

*   Rendering the document
    l_renderer = l_ixml-&amp;gt;create_renderer( ostream  = l_ostream
                                          document = l_document ).
    l_rc = l_renderer-&amp;gt;render( ).

*   Saving the XML document
    l_xml_size = l_ostream-&amp;gt;get_num_written_raw( ).

    CALL METHOD cl_gui_frontend_services=&amp;gt;gui_download
      EXPORTING
        bin_filesize = l_xml_size
        filename     = 'c:\temp\flights.xml'
        filetype     = 'BIN'
      CHANGING
        data_tab     = l_xml_table
      EXCEPTIONS
        OTHERS       = 24.
    IF sy-subrc &amp;lt;&amp;gt; 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 11 Sep 2007 18:44:48 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-09-11T18:44:48Z</dc:date>
    <item>
      <title>create xml tag dynamically within simple transformation</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/create-xml-tag-dynamically-within-simple-transformation/m-p/2780140#M647964</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all together,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm faceing the following problem:&lt;/P&gt;&lt;P&gt;There is a internal table provided, consisting of name/value-pairs. Something like&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_struc-name = 'NAME1'.&lt;/P&gt;&lt;P&gt;ls_struc-value = 'XYZ'.&lt;/P&gt;&lt;P&gt;append ls_struc to lt_struc&lt;/P&gt;&lt;P&gt;ls_struc-name = 'CITY1'.&lt;/P&gt;&lt;P&gt;ls_struc-value = 'Munich'.&lt;/P&gt;&lt;P&gt;append ls_struc to lt_struc&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and so on.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have to create this XML (with simple transformation):&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;NAME1&amp;gt;XYZ&amp;lt;/NAME1&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;CITY1&amp;gt;Munich&amp;lt;/CITY1&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Everythings works fine so far (tables, values etc.), but I have problems with creating the XML-Tag, e.g &amp;lt;NAME1&amp;gt; from "$line.name" within the transformation. I don't have any information about the data structure (therefore "call transaction id" does not work).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any hint is useful!!!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Thomas&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Sep 2007 18:26:22 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/create-xml-tag-dynamically-within-simple-transformation/m-p/2780140#M647964</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-09-11T18:26:22Z</dc:date>
    </item>
    <item>
      <title>Re: create xml tag dynamically within simple transformation</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/create-xml-tag-dynamically-within-simple-transformation/m-p/2780141#M647965</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Exaple program for creating XML file from abap&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;REPORT  z_xit_xml_dom_create.

  TYPE-POOLS: ixml.

  TYPES: BEGIN OF xml_line,
          data(256) TYPE x,
         END OF xml_line.

  DATA: l_ixml            TYPE REF TO if_ixml,
        l_streamfactory   TYPE REF TO if_ixml_stream_factory,
        l_ostream         TYPE REF TO if_ixml_ostream,
        l_renderer        TYPE REF TO if_ixml_renderer,
        l_document        TYPE REF TO if_ixml_document.

  DATA: l_element_flights TYPE REF TO if_ixml_element,
        l_element_airline TYPE REF TO if_ixml_element,
        l_element_flight  TYPE REF TO if_ixml_element,
        l_element_from    TYPE REF TO if_ixml_element,
        l_element_to      TYPE REF TO if_ixml_element,
        l_element_dummy   TYPE REF TO if_ixml_element,
        l_value           TYPE string.

  DATA: l_xml_table       TYPE TABLE OF xml_line,
        l_xml_size        TYPE i,
        l_rc              TYPE i.

  DATA: lt_spfli          TYPE TABLE OF spfli.
  DATA: l_spfli           TYPE spfli.


  START-OF-SELECTION.
*   Fill the internal table
    SELECT * FROM spfli INTO TABLE lt_spfli.

*   Sort internal table
    SORT lt_spfli BY carrid.

*   Start filling xml dom object from internal table
    LOOP AT lt_spfli INTO l_spfli.

      AT FIRST.
*       Creating a ixml factory
        l_ixml = cl_ixml=&amp;gt;create( ).
*       Creating the dom object model
        l_document = l_ixml-&amp;gt;create_document( ).
*       Fill root node with value flights
        l_element_flights  = l_document-&amp;gt;create_simple_element(
                    name = 'flights'
                    parent = l_document ).
      ENDAT.

      AT NEW carrid.
*       Create element 'airline' as child of 'flights'
        l_element_airline  = l_document-&amp;gt;create_simple_element(
                    name = 'airline'
                    parent = l_element_flights  ).

*       Create attribute 'code' of node 'airline'
        l_value = l_spfli-carrid.
        l_rc = l_element_airline-&amp;gt;set_attribute( name = 'code' value = l_value ).

*       Create attribute 'name' of node 'airline'
        SELECT SINGLE carrname FROM scarr INTO l_value WHERE carrid EQ l_spfli-carrid.
        l_rc = l_element_airline-&amp;gt;set_attribute( name = 'name' value = l_value ).

      ENDAT.

      AT NEW connid.
*       Create element 'flight' as child of 'airline'
        l_element_flight  = l_document-&amp;gt;create_simple_element(
                    name = 'flight'
                    parent = l_element_airline  ).

*       Create attribute 'number' of node 'flight'
        l_value = l_spfli-connid.
        l_rc = l_element_flight-&amp;gt;set_attribute( name = 'number' value = l_value ).

      ENDAT.

*     Create element 'from' as child of 'flight'
      CONCATENATE l_spfli-cityfrom ',' l_spfli-countryfr INTO l_value.
      l_element_from  = l_document-&amp;gt;create_simple_element(
                  name = 'from'
                  value = l_value
                  parent = l_element_flight  ).

*     Create attribute 'airport' of node 'from'
      l_value = l_spfli-airpfrom.
      l_rc = l_element_from-&amp;gt;set_attribute( name = 'airport' value = l_value ).

*     Create element 'to' as child of 'flight'
      CONCATENATE l_spfli-cityto ',' l_spfli-countryto INTO l_value.
      l_element_to  = l_document-&amp;gt;create_simple_element(
                  name = 'to'
                  value = l_value
                  parent = l_element_flight  ).

*     Create attribute 'airport' of node 'from'
      l_value = l_spfli-airpto.
      l_rc = l_element_to-&amp;gt;set_attribute( name = 'airport' value = l_value ).

*     Create element 'departure' as child of 'flight'
      l_value = l_spfli-deptime.
      l_element_dummy  = l_document-&amp;gt;create_simple_element(
                  name = 'departure'
                  value = l_value
                  parent = l_element_flight ).

*     Create element 'arrival' as child of 'flight'
      l_value = l_spfli-arrtime.
      l_element_dummy  = l_document-&amp;gt;create_simple_element(
                  name = 'arrival'
                  value = l_value
                  parent = l_element_flight ).

*     Create element 'type' as child of 'flight'
      CASE l_spfli-fltype.
        WHEN 'X'.
          l_value = 'Charter'.
        WHEN OTHERS.
          l_value = 'Scheduled'.
      ENDCASE.
      l_element_dummy  = l_document-&amp;gt;create_simple_element(
                  name = 'type'
                  value = l_value
                  parent = l_element_flight ).
    ENDLOOP.
    IF sy-subrc NE 0.
      MESSAGE 'No data into db table ''spfli'', please run program ''SAPBC_DATA_GENERATOR'' with transaction ''SA38''' TYPE 'E'.
    ENDIF.


*   Creating a stream factory
    l_streamfactory = l_ixml-&amp;gt;create_stream_factory( ).
*   Connect internal XML table to stream factory
    l_ostream = l_streamfactory-&amp;gt;create_ostream_itable( table = l_xml_table ).

*   Rendering the document
    l_renderer = l_ixml-&amp;gt;create_renderer( ostream  = l_ostream
                                          document = l_document ).
    l_rc = l_renderer-&amp;gt;render( ).

*   Saving the XML document
    l_xml_size = l_ostream-&amp;gt;get_num_written_raw( ).

    CALL METHOD cl_gui_frontend_services=&amp;gt;gui_download
      EXPORTING
        bin_filesize = l_xml_size
        filename     = 'c:\temp\flights.xml'
        filetype     = 'BIN'
      CHANGING
        data_tab     = l_xml_table
      EXCEPTIONS
        OTHERS       = 24.
    IF sy-subrc &amp;lt;&amp;gt; 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Sep 2007 18:44:48 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/create-xml-tag-dynamically-within-simple-transformation/m-p/2780141#M647965</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-09-11T18:44:48Z</dc:date>
    </item>
    <item>
      <title>Re: create xml tag dynamically within simple transformation</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/create-xml-tag-dynamically-within-simple-transformation/m-p/2780142#M647966</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mahesh,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I wrote "within Simple Transformation". That means without building DOM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Thomas&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Sep 2007 19:19:17 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/create-xml-tag-dynamically-within-simple-transformation/m-p/2780142#M647966</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-09-11T19:19:17Z</dc:date>
    </item>
  </channel>
</rss>

