<?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 How to generate (export) correct XML from SAS in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-generate-export-correct-XML-from-SAS/m-p/912349#M359663</link>
    <description>&lt;P&gt;i need to export data from SAS database to XML file. The XML structure is defined by third parties, so it must be followed.&lt;/P&gt;&lt;P&gt;I created a map file that defines the XML, but I don't know how to merge the data so that some values are not repeated. Basically how to create one table within a table. (I can't replicate the required structure.)&lt;/P&gt;&lt;P&gt;for one company i need to put address and list of all transactions. but now I get 1 record in XML for each row in table.&lt;/P&gt;&lt;P&gt;i need output like below&lt;/P&gt;&lt;PRE class=""&gt;&lt;CODE class=""&gt;&lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;CESOP&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;PaymentDataBody&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;COMPANY1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;Address 1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;TRNS1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;EUR&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;TRNS2&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;USD&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;COMPANY2&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;Address 1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;TRNS1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;EUR&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;PaymentDataBody&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;CESOP&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;but i got this:&lt;/P&gt;&lt;PRE class=""&gt;&lt;CODE class=""&gt;&lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;CESOP&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;PaymentDataBody&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;COMPANY1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;Address 1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;TRNS1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;EUR&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;COMPANY1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;Address 1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;TRNS2&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;USD&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;COMPANY2&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;Address 1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;TRNS1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;EUR&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;PaymentDataBody&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;CESOP&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;SAS code:&lt;/P&gt;&lt;PRE class=""&gt;&lt;CODE class=""&gt;data COMP;
    length COMPANY $200. ADDRESS $200.  COUNTRY $200. TRNS_ID $200. TRNS_CCY $3;
    infile datalines dlm = '|';
    input COMPANY ADDRESS COUNTRY TRNS_ID TRNS_CCY;
    datalines;
COMPANY1|Address 1|CZ|TRNS1|EUR
COMPANY1|Address 1|CZ|TRNS2|USD
COMPANY2|Address 1|DE|TRNS1|EUR
run;

filename out 'path\compout.xml';
libname out xmlv2 xmltype=xmlmap xmlmap='path\test.map';

data out.COMP;
   set COMP;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sat, 20 Jan 2024 17:18:15 GMT</pubDate>
    <dc:creator>TeryK2</dc:creator>
    <dc:date>2024-01-20T17:18:15Z</dc:date>
    <item>
      <title>How to generate (export) correct XML from SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-generate-export-correct-XML-from-SAS/m-p/912349#M359663</link>
      <description>&lt;P&gt;i need to export data from SAS database to XML file. The XML structure is defined by third parties, so it must be followed.&lt;/P&gt;&lt;P&gt;I created a map file that defines the XML, but I don't know how to merge the data so that some values are not repeated. Basically how to create one table within a table. (I can't replicate the required structure.)&lt;/P&gt;&lt;P&gt;for one company i need to put address and list of all transactions. but now I get 1 record in XML for each row in table.&lt;/P&gt;&lt;P&gt;i need output like below&lt;/P&gt;&lt;PRE class=""&gt;&lt;CODE class=""&gt;&lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;CESOP&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;PaymentDataBody&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;COMPANY1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;Address 1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;TRNS1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;EUR&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;TRNS2&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;USD&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;COMPANY2&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;Address 1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;TRNS1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;EUR&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;PaymentDataBody&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;CESOP&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;but i got this:&lt;/P&gt;&lt;PRE class=""&gt;&lt;CODE class=""&gt;&lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;CESOP&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;PaymentDataBody&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;COMPANY1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;Address 1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;TRNS1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;EUR&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;COMPANY1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;Address 1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;TRNS2&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;USD&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;COMPANY2&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Name&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;Address 1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;FreeAddress&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Address&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;TRNS1&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_ID&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;EUR&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;trns_CCY&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedTransaction&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;ReportedPayee&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;PaymentDataBody&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;CESOP&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;SAS code:&lt;/P&gt;&lt;PRE class=""&gt;&lt;CODE class=""&gt;data COMP;
    length COMPANY $200. ADDRESS $200.  COUNTRY $200. TRNS_ID $200. TRNS_CCY $3;
    infile datalines dlm = '|';
    input COMPANY ADDRESS COUNTRY TRNS_ID TRNS_CCY;
    datalines;
COMPANY1|Address 1|CZ|TRNS1|EUR
COMPANY1|Address 1|CZ|TRNS2|USD
COMPANY2|Address 1|DE|TRNS1|EUR
run;

filename out 'path\compout.xml';
libname out xmlv2 xmltype=xmlmap xmlmap='path\test.map';

data out.COMP;
   set COMP;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 20 Jan 2024 17:18:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-generate-export-correct-XML-from-SAS/m-p/912349#M359663</guid>
      <dc:creator>TeryK2</dc:creator>
      <dc:date>2024-01-20T17:18:15Z</dc:date>
    </item>
    <item>
      <title>Re: How to generate (export) correct XML from SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-generate-export-correct-XML-from-SAS/m-p/912366#M359672</link>
      <description>&lt;P&gt;An XML file is just a text file. So just use normal SAS methods for writing text files.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data _null_;
  file OUT ;
  if _n_=1 then put '&amp;lt;CESOP&amp;gt;' / @3 '&amp;lt;PaymentDataBody&amp;gt;';
  if eof then put @3 '&amp;lt;/PaymentDataBody&amp;gt;' / '&amp;lt;/CESOP&amp;gt;';

  set comp end=eof;
  by company ;
  if first.company then put 
   @5 '&amp;lt;ReportedPayee&amp;gt;'
 / @7 '&amp;lt;Name&amp;gt;' COMPANY +(-1) '&amp;lt;/Name&amp;gt;'
 / @7 '&amp;lt;Address&amp;gt;'
 / @9 '&amp;lt;FreeAddress&amp;gt;' ADDRESS +(-1) '&amp;lt;/FreeAddress&amp;gt;'
 / @7 '&amp;lt;/Address&amp;gt;'
  ;
  put 
   @7 '&amp;lt;ReportedTransaction&amp;gt;'
 / @9 '&amp;lt;trns_ID&amp;gt;' TRNS_ID +(-1) '&amp;lt;/trns_ID&amp;gt;'
 / @9 '&amp;lt;trns_CCY&amp;gt;' TRNS_CCY +(-1) '&amp;lt;/trns_CCY&amp;gt;'
 / @7 '&amp;lt;/ReportedTransaction&amp;gt;'
  ;
  if last.company then put 
   @5 '&amp;lt;/ReportedPayee&amp;gt;'
  ;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result&lt;/P&gt;
&lt;PRE&gt;&amp;lt;CESOP&amp;gt;
  &amp;lt;PaymentDataBody&amp;gt;
    &amp;lt;ReportedPayee&amp;gt;
      &amp;lt;Name&amp;gt;COMPANY1&amp;lt;/Name&amp;gt;
      &amp;lt;Address&amp;gt;
        &amp;lt;FreeAddress&amp;gt;Address 1&amp;lt;/FreeAddress&amp;gt;
      &amp;lt;/Address&amp;gt;
      &amp;lt;ReportedTransaction&amp;gt;
        &amp;lt;trns_ID&amp;gt;TRNS1&amp;lt;/trns_ID&amp;gt;
        &amp;lt;trns_CCY&amp;gt;EUR&amp;lt;/trns_CCY&amp;gt;
      &amp;lt;/ReportedTransaction&amp;gt;
      &amp;lt;ReportedTransaction&amp;gt;
        &amp;lt;trns_ID&amp;gt;TRNS2&amp;lt;/trns_ID&amp;gt;
        &amp;lt;trns_CCY&amp;gt;USD&amp;lt;/trns_CCY&amp;gt;
      &amp;lt;/ReportedTransaction&amp;gt;
    &amp;lt;/ReportedPayee&amp;gt;
    &amp;lt;ReportedPayee&amp;gt;
      &amp;lt;Name&amp;gt;COMPANY2&amp;lt;/Name&amp;gt;
      &amp;lt;Address&amp;gt;
        &amp;lt;FreeAddress&amp;gt;Address 1&amp;lt;/FreeAddress&amp;gt;
      &amp;lt;/Address&amp;gt;
      &amp;lt;ReportedTransaction&amp;gt;
        &amp;lt;trns_ID&amp;gt;TRNS1&amp;lt;/trns_ID&amp;gt;
        &amp;lt;trns_CCY&amp;gt;EUR&amp;lt;/trns_CCY&amp;gt;
      &amp;lt;/ReportedTransaction&amp;gt;
    &amp;lt;/ReportedPayee&amp;gt;
  &amp;lt;/PaymentDataBody&amp;gt;
&amp;lt;/CESOP&amp;gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 20 Jan 2024 21:44:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-generate-export-correct-XML-from-SAS/m-p/912366#M359672</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2024-01-20T21:44:29Z</dc:date>
    </item>
  </channel>
</rss>

