<?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 Transform complex ABAP internal tables to recursive nodes in XML in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/transform-complex-abap-internal-tables-to-recursive-nodes-in-xml/m-p/8876506#M1687654</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How to transform complex ABAP internal tables to recursive nodes in XML using XSLT?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Eg: ABAP data in internal table is like:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" style="width: 153px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD height="20" width="64"&gt;LEVEL&lt;/TD&gt;&lt;TD width="89"&gt;COMPONENT&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;0&lt;/TD&gt;&lt;TD&gt;P1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;1&lt;/TD&gt;&lt;TD&gt;C1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;2&lt;/TD&gt;&lt;TD&gt;C11&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;3&lt;/TD&gt;&lt;TD&gt;C111&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;2&lt;/TD&gt;&lt;TD&gt;C12&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;1&lt;/TD&gt;&lt;TD&gt;C2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;2&lt;/TD&gt;&lt;TD&gt;C21&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;2&lt;/TD&gt;&lt;TD&gt;C22&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;3&lt;/TD&gt;&lt;TD&gt;C221&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;3&lt;/TD&gt;&lt;TD&gt;C222&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To be transformed to XML. Note - The number of levels is not fixed. There can be multiple children at different levels. A child at level 1 can be a parent for another child at level 2 and so on.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;XML to look like&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;P1&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C1&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C11&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C111&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C12&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C2&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C21&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C22&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C221&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C222&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any pointers are apprciated!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;BR /&gt;Deepthi&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 17 Jul 2012 19:19:08 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2012-07-17T19:19:08Z</dc:date>
    <item>
      <title>Transform complex ABAP internal tables to recursive nodes in XML</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/transform-complex-abap-internal-tables-to-recursive-nodes-in-xml/m-p/8876506#M1687654</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How to transform complex ABAP internal tables to recursive nodes in XML using XSLT?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Eg: ABAP data in internal table is like:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" style="width: 153px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD height="20" width="64"&gt;LEVEL&lt;/TD&gt;&lt;TD width="89"&gt;COMPONENT&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;0&lt;/TD&gt;&lt;TD&gt;P1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;1&lt;/TD&gt;&lt;TD&gt;C1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;2&lt;/TD&gt;&lt;TD&gt;C11&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;3&lt;/TD&gt;&lt;TD&gt;C111&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;2&lt;/TD&gt;&lt;TD&gt;C12&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;1&lt;/TD&gt;&lt;TD&gt;C2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;2&lt;/TD&gt;&lt;TD&gt;C21&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;2&lt;/TD&gt;&lt;TD&gt;C22&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;3&lt;/TD&gt;&lt;TD&gt;C221&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;3&lt;/TD&gt;&lt;TD&gt;C222&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To be transformed to XML. Note - The number of levels is not fixed. There can be multiple children at different levels. A child at level 1 can be a parent for another child at level 2 and so on.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;XML to look like&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;P1&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C1&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C11&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C111&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C12&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C2&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C21&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C22&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C221&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C222&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any pointers are apprciated!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;BR /&gt;Deepthi&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 17 Jul 2012 19:19:08 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/transform-complex-abap-internal-tables-to-recursive-nodes-in-xml/m-p/8876506#M1687654</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2012-07-17T19:19:08Z</dc:date>
    </item>
    <item>
      <title>Re: Transform complex ABAP internal tables to recursive nodes in XML</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/transform-complex-abap-internal-tables-to-recursive-nodes-in-xml/m-p/8876507#M1687655</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Check this link&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://wiki.sdn.sap.com/wiki/display/ABAP/XML+XSLT+with+ABAP" title="http://wiki.sdn.sap.com/wiki/display/ABAP/XML+XSLT+with+ABAP"&gt;http://wiki.sdn.sap.com/wiki/display/ABAP/XML+XSLT+with+ABAP&lt;/A&gt; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Jul 2012 04:19:14 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/transform-complex-abap-internal-tables-to-recursive-nodes-in-xml/m-p/8876507#M1687655</guid>
      <dc:creator>JJosh</dc:creator>
      <dc:date>2012-07-18T04:19:14Z</dc:date>
    </item>
    <item>
      <title>Re: Transform complex ABAP internal tables to recursive nodes in XML</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/transform-complex-abap-internal-tables-to-recursive-nodes-in-xml/m-p/8876508#M1687656</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The following transformation does the job.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;xsl:transform xmlns:xsl="&lt;A href="http://www.w3.org/1999/XSL/Transform"&gt;http://www.w3.org/1999/XSL/Transform&lt;/A&gt;" version="1.0"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:strip-space elements="*"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:template match="/"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ROOT&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:apply-templates select="//item[LEVEL = 0]"/&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ROOT&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;/xsl:template&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:template match="item"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:variable name="level" select="LEVEL"/&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:variable name="line_id" select="generate-id()"/&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:variable name="children"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:apply-templates select="following-sibling::item[LEVEL = $level+1][preceding-sibling::item[LEVEL = $level][1]/generate-id() = $line_id]"/&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:variable&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:element name="{NAME}"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:if test="$children/*"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:copy-of select="$children"/&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:if&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:element&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;/xsl:template&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/xsl:transform&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The test program below gives the expected output:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;ROOT&amp;gt;&lt;/P&gt;&lt;P&gt; &amp;lt;P1&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;C1&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;lt;C11&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C111/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C112/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/C11&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;lt;C12/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/C1&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;C2&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;lt;C21/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;lt;C22&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C221/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;C222/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/C22&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/C2&amp;gt;&lt;/P&gt;&lt;P&gt; &amp;lt;/P1&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/ROOT&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;*&amp;amp; Report&amp;nbsp; Z_TEST_LEVEL_STRUC&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;/P&gt;&lt;P&gt;report&amp;nbsp; z_test_level_struc.&lt;/P&gt;&lt;P&gt;types: begin of ty_node,&lt;BR /&gt;&amp;nbsp; level type i,&lt;BR /&gt;&amp;nbsp; name&amp;nbsp; type string,&lt;BR /&gt;&amp;nbsp; end of ty_node,&lt;BR /&gt;&amp;nbsp; ty_nodes type standard table of ty_node&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; with non-unique default key.&lt;/P&gt;&lt;P&gt;start-of-selection.&lt;BR /&gt;&amp;nbsp; perform start.&lt;/P&gt;&lt;P&gt;* ---&lt;BR /&gt;form start.&lt;BR /&gt;&amp;nbsp; data: lt_nodes type ty_nodes,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lo_doc&amp;nbsp;&amp;nbsp; type ref to if_ixml_document.&lt;/P&gt;&lt;P&gt;&amp;nbsp; perform fill_nodes changing lt_nodes.&lt;/P&gt;&lt;P&gt;&amp;nbsp; lo_doc ?= cl_ixml=&amp;gt;create( )-&amp;gt;create_document( ).&lt;/P&gt;&lt;P&gt;&amp;nbsp; call transformation z_test_level_struc&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; source levels = lt_nodes&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; result xml lo_doc.&lt;/P&gt;&lt;P&gt;&amp;nbsp; call function 'SDIXML_DOM_TO_SCREEN'&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exporting&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document&amp;nbsp;&amp;nbsp;&amp;nbsp; = lo_doc&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exceptions&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; no_document = 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; others&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 2.&lt;BR /&gt;&amp;nbsp; if sy-subrc ne 0.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; message id sy-msgid type 'I' number sy-msgno&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;BR /&gt;&amp;nbsp; endif.&lt;/P&gt;&lt;P&gt;endform.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "start&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;* ---&lt;BR /&gt;form fill_nodes changing et_nodes type ty_nodes.&lt;BR /&gt;&amp;nbsp; data: ls_node&amp;nbsp; type ty_node.&lt;/P&gt;&lt;P&gt;&amp;nbsp; define _add_node.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ls_node-level = &amp;amp;1.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ls_node-name&amp;nbsp; = &amp;amp;2.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; append ls_node to et_nodes.&lt;BR /&gt;&amp;nbsp; end-of-definition.&lt;/P&gt;&lt;P&gt;&amp;nbsp; clear et_nodes.&lt;BR /&gt;&amp;nbsp; _add_node :&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 'P1' ,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 'C1' ,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; 'C11' ,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; 'C111' ,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; 'C112' ,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; 'C12' ,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 'C2' ,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; 'C21' ,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; 'C22' ,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; 'C221' ,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; 'C222'.&lt;/P&gt;&lt;P&gt;endform.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "fill_nodes&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Jul 2012 21:03:02 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/transform-complex-abap-internal-tables-to-recursive-nodes-in-xml/m-p/8876508#M1687656</guid>
      <dc:creator>Ruediger_Plantiko</dc:creator>
      <dc:date>2012-07-19T21:03:02Z</dc:date>
    </item>
    <item>
      <title>Re: Transform complex ABAP internal tables to recursive nodes in XML</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/transform-complex-abap-internal-tables-to-recursive-nodes-in-xml/m-p/8876509#M1687657</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;... or, slightly simplified, but functionally identical:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;xsl:transform xmlns:xsl="&lt;A href="http://www.w3.org/1999/XSL/Transform"&gt;http://www.w3.org/1999/XSL/Transform&lt;/A&gt;" version="1.0"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:strip-space elements="*"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:template match="/"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ROOT&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:apply-templates select="//LEVELS/*[LEVEL = 0]"/&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ROOT&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;/xsl:template&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:template match="LEVELS/*"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:variable name="level" select="LEVEL"/&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:variable name="id" select="generate-id()"/&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:element name="{NAME}"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:apply-templates&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select="following-sibling::*[LEVEL = $level+1][preceding-sibling::*[LEVEL = $level][1]/generate-id() = $id]"/&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:element&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;/xsl:template&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/xsl:transform&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;This version works with DDIC line types, too, not only for local line types (as my test program above is using). For local types, the elements representing the table lines have the name "item". For DDIC types, these elements get the name of the DDIC line type instead. The transformation above eliminates the fixed name 'item' and uses '*' instead.&lt;/LI&gt;&lt;LI&gt;This holds for both transformations: The source structure may even have more than one level 0 entry. Therefore, everything is wrapped in a &amp;lt;ROOT&amp;gt; element. If, in your case, there is only one line of level 0, you can of course omit the wrapping &amp;lt;ROOT&amp;gt; element in the root template.&lt;/LI&gt;&lt;LI&gt;The XPath expression selects &lt;EM&gt;the set of all following siblings of the next line level, but only if they come before the next sibling having the current level&lt;/EM&gt;.&lt;/LI&gt;&lt;/UL&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 20 Jul 2012 06:13:00 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/transform-complex-abap-internal-tables-to-recursive-nodes-in-xml/m-p/8876509#M1687657</guid>
      <dc:creator>Ruediger_Plantiko</dc:creator>
      <dc:date>2012-07-20T06:13:00Z</dc:date>
    </item>
  </channel>
</rss>

