<?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 Read data from database tables dynamically in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/read-data-from-database-tables-dynamically/m-p/12662902#M2015790</link>
    <description>&lt;P&gt;Hi there,&lt;/P&gt;
  &lt;P&gt;I would like to know if it is possible to implement a generic logic to dynamically read from database tables.&lt;/P&gt;
  &lt;P&gt;I would like to do something like this:&lt;/P&gt;
  &lt;PRE&gt;&lt;CODE&gt;CLASS reader DEFINITION&lt;BR /&gt;  CREATE PUBLIC.&lt;BR /&gt;  PUBLIC SECTION.&lt;BR /&gt;&lt;BR /&gt;  METHODS read&lt;BR /&gt;    IMPORTING&lt;BR /&gt;      table TYPE REF TO data.&lt;BR /&gt;ENDCLASS.&lt;BR /&gt;&lt;BR /&gt;CLASS reader IMPLEMENTATION.&lt;BR /&gt;  METHOD read.&lt;BR /&gt;    ##todo " how could I determine the run time type of table as string?&lt;BR /&gt;    DATA database_table TYPE string.&lt;BR /&gt;    FIELD-SYMBOLS &amp;lt;table_ref&amp;gt; TYPE ANY TABLE.&lt;BR /&gt;    ASSIGN table TO &amp;lt;table_ref&amp;gt;.&lt;BR /&gt;    ##todo " how could I read data dynamically from (database_table) my result table?&lt;BR /&gt;    SELECT&lt;BR /&gt;    FROM (database_table)&lt;BR /&gt;    FIELDS *&lt;BR /&gt;    INTO TABLE @&amp;lt;table_ref&amp;gt;.&lt;BR /&gt;  ENDMETHOD.
ENDCLASS.
&lt;BR /&gt;START-OF-SELECTION.&lt;BR /&gt;  DATA table_content TYPE STANDARD TABLE OF pa0015 WITH EMPTY KEY.&lt;BR /&gt;  DATA(reader) = NEW reader( ).&lt;BR /&gt;  reader-&amp;gt;read( table = REF #( table_content ) ).&lt;/CODE&gt;&lt;/PRE&gt;
  &lt;P&gt;BR,&lt;BR /&gt;Daniel&lt;/P&gt;</description>
    <pubDate>Fri, 24 Feb 2023 08:18:25 GMT</pubDate>
    <dc:creator>dschiener</dc:creator>
    <dc:date>2023-02-24T08:18:25Z</dc:date>
    <item>
      <title>Read data from database tables dynamically</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/read-data-from-database-tables-dynamically/m-p/12662902#M2015790</link>
      <description>&lt;P&gt;Hi there,&lt;/P&gt;
  &lt;P&gt;I would like to know if it is possible to implement a generic logic to dynamically read from database tables.&lt;/P&gt;
  &lt;P&gt;I would like to do something like this:&lt;/P&gt;
  &lt;PRE&gt;&lt;CODE&gt;CLASS reader DEFINITION&lt;BR /&gt;  CREATE PUBLIC.&lt;BR /&gt;  PUBLIC SECTION.&lt;BR /&gt;&lt;BR /&gt;  METHODS read&lt;BR /&gt;    IMPORTING&lt;BR /&gt;      table TYPE REF TO data.&lt;BR /&gt;ENDCLASS.&lt;BR /&gt;&lt;BR /&gt;CLASS reader IMPLEMENTATION.&lt;BR /&gt;  METHOD read.&lt;BR /&gt;    ##todo " how could I determine the run time type of table as string?&lt;BR /&gt;    DATA database_table TYPE string.&lt;BR /&gt;    FIELD-SYMBOLS &amp;lt;table_ref&amp;gt; TYPE ANY TABLE.&lt;BR /&gt;    ASSIGN table TO &amp;lt;table_ref&amp;gt;.&lt;BR /&gt;    ##todo " how could I read data dynamically from (database_table) my result table?&lt;BR /&gt;    SELECT&lt;BR /&gt;    FROM (database_table)&lt;BR /&gt;    FIELDS *&lt;BR /&gt;    INTO TABLE @&amp;lt;table_ref&amp;gt;.&lt;BR /&gt;  ENDMETHOD.
ENDCLASS.
&lt;BR /&gt;START-OF-SELECTION.&lt;BR /&gt;  DATA table_content TYPE STANDARD TABLE OF pa0015 WITH EMPTY KEY.&lt;BR /&gt;  DATA(reader) = NEW reader( ).&lt;BR /&gt;  reader-&amp;gt;read( table = REF #( table_content ) ).&lt;/CODE&gt;&lt;/PRE&gt;
  &lt;P&gt;BR,&lt;BR /&gt;Daniel&lt;/P&gt;</description>
      <pubDate>Fri, 24 Feb 2023 08:18:25 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/read-data-from-database-tables-dynamically/m-p/12662902#M2015790</guid>
      <dc:creator>dschiener</dc:creator>
      <dc:date>2023-02-24T08:18:25Z</dc:date>
    </item>
    <item>
      <title>Re: Read data from database tables dynamically</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/read-data-from-database-tables-dynamically/m-p/12662903#M2015791</link>
      <description>&lt;P&gt;The question has been asked a lot in the forum.&lt;/P&gt;&lt;P&gt;You are missing CREATE DATA.&lt;/P&gt;</description>
      <pubDate>Fri, 24 Feb 2023 08:40:58 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/read-data-from-database-tables-dynamically/m-p/12662903#M2015791</guid>
      <dc:creator>Sandra_Rossi</dc:creator>
      <dc:date>2023-02-24T08:40:58Z</dc:date>
    </item>
    <item>
      <title>Re: Read data from database tables dynamically</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/read-data-from-database-tables-dynamically/m-p/12662904#M2015792</link>
      <description>&lt;P&gt;This code does something similar and should be of help.&lt;/P&gt;&lt;P&gt;You can pass the name of the database table, the filter string (where clause), the field_string (select clause) and opt to include a header line in the output.&lt;/P&gt;&lt;P&gt;The output is a list of strings, pipe delimited fields. But you can easily change that to be tab delimited by using cl_abap_char_utilities=&amp;gt;horizontal_tab instead.&lt;/P&gt;*"----------------------------------------------------------------------&lt;P&gt;
*"*"Local Interface:&lt;BR /&gt;
*"  IMPORTING&lt;BR /&gt;
*"     VALUE(FILTER_STRING) TYPE  STRING OPTIONAL&lt;BR /&gt;
*"     VALUE(FIELD_STRING) TYPE  STRING OPTIONAL&lt;BR /&gt;
*"     VALUE(TABLE_NAME) TYPE  TABNAME OPTIONAL&lt;BR /&gt;
*"     VALUE(WITH_HEADER_LINE) TYPE  XFELD DEFAULT 'X'&lt;BR /&gt;
*"  EXPORTING&lt;BR /&gt;
*"     VALUE(RESULT) TYPE  ZTT_STRING_STRUCTURE&lt;BR /&gt;
*"     VALUE(MESSAGE) TYPE  STRING&lt;BR /&gt;
*"----------------------------------------------------------------------&lt;/P&gt;  DATA: field_catalog          TYPE lvc_t_fcat,&lt;P&gt;
        complete_field_catalog TYPE lvc_t_fcat.&lt;BR /&gt;
&lt;BR /&gt;
  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'&lt;BR /&gt;
    EXPORTING&lt;BR /&gt;
      i_structure_name       = table_name&lt;BR /&gt;
    CHANGING&lt;BR /&gt;
      ct_fieldcat            = complete_field_catalog&lt;BR /&gt;
    EXCEPTIONS&lt;BR /&gt;
      inconsistent_interface = 1&lt;BR /&gt;
      program_error          = 2&lt;BR /&gt;
      OTHERS                 = 3.&lt;BR /&gt;
&lt;BR /&gt;
  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;BR /&gt;
    message = 'Invalid table name'. RETURN.&lt;BR /&gt;
  ENDIF.&lt;BR /&gt;
&lt;BR /&gt;
  DATA: select_clause TYPE TABLE OF edpline.&lt;BR /&gt;
&lt;BR /&gt;
  DATA: chosen_fields TYPE TABLE OF string.&lt;BR /&gt;
  SPLIT field_string AT ',' INTO TABLE chosen_fields.&lt;BR /&gt;
&lt;BR /&gt;
  IF chosen_fields IS INITIAL.&lt;BR /&gt;
    LOOP AT complete_field_catalog ASSIGNING FIELD-SYMBOL(&amp;lt;fcat&amp;gt;).&lt;BR /&gt;
      CHECK &amp;lt;fcat&amp;gt;-inttype CA 'CDNTP'.&lt;BR /&gt;
      APPEND &amp;lt;fcat&amp;gt;-fieldname TO select_clause.&lt;BR /&gt;
      APPEND &amp;lt;fcat&amp;gt; TO field_catalog.&lt;BR /&gt;
    ENDLOOP.&lt;BR /&gt;
&lt;BR /&gt;
  ELSE.&lt;BR /&gt;
&lt;BR /&gt;
    LOOP AT chosen_fields ASSIGNING FIELD-SYMBOL(&amp;lt;f&amp;gt;).&lt;BR /&gt;
      CONDENSE &amp;lt;f&amp;gt; NO-GAPS.&lt;BR /&gt;
      TRANSLATE &amp;lt;f&amp;gt; TO UPPER CASE.&lt;BR /&gt;
      READ TABLE complete_field_catalog ASSIGNING &amp;lt;fcat&amp;gt; WITH KEY fieldname = &amp;lt;f&amp;gt;.&lt;BR /&gt;
      IF sy-subrc &amp;lt;&amp;gt; 0.&lt;BR /&gt;
        message = `Field ` &amp;amp;&amp;amp; &amp;lt;f&amp;gt; &amp;amp;&amp;amp; ` is invalid`. RETURN.&lt;BR /&gt;
      ENDIF.&lt;BR /&gt;
&lt;BR /&gt;
      IF &amp;lt;fcat&amp;gt;-inttype NA 'CDNTP'.&lt;BR /&gt;
        message = `Field ` &amp;amp;&amp;amp; &amp;lt;f&amp;gt; &amp;amp;&amp;amp; ` has a type that is not supported`. RETURN.&lt;BR /&gt;
      ENDIF.&lt;BR /&gt;
&lt;BR /&gt;
      APPEND &amp;lt;fcat&amp;gt;-fieldname TO select_clause.&lt;BR /&gt;
      APPEND &amp;lt;fcat&amp;gt; TO field_catalog.&lt;BR /&gt;
    ENDLOOP.&lt;BR /&gt;
&lt;BR /&gt;
  ENDIF.&lt;BR /&gt;
&lt;BR /&gt;
  IF field_catalog IS INITIAL.&lt;BR /&gt;
    message = 'Empty column selection'. RETURN.&lt;BR /&gt;
  ENDIF.&lt;BR /&gt;
&lt;BR /&gt;
  LOOP AT field_catalog ASSIGNING &amp;lt;fcat&amp;gt;.&lt;BR /&gt;
    &amp;lt;fcat&amp;gt;-col_pos = sy-tabix.&lt;BR /&gt;
  ENDLOOP.&lt;BR /&gt;
&lt;BR /&gt;
  DATA: table_ref TYPE REF TO data.&lt;BR /&gt;
&lt;BR /&gt;
  " build a data structure with just the fields we need.&lt;BR /&gt;
  CALL METHOD cl_alv_table_create=&amp;gt;create_dynamic_table&lt;BR /&gt;
    EXPORTING&lt;BR /&gt;
      i_style_table             = ''&lt;BR /&gt;
      it_fieldcatalog           = field_catalog&lt;BR /&gt;
    IMPORTING&lt;BR /&gt;
      ep_table                  = table_ref&lt;BR /&gt;
    EXCEPTIONS&lt;BR /&gt;
      generate_subpool_dir_full = 1&lt;BR /&gt;
      OTHERS                    = 2.&lt;BR /&gt;
&lt;BR /&gt;
  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;BR /&gt;
    message = 'Unexpected error. Please contact support'. RETURN.&lt;BR /&gt;
  ENDIF.&lt;BR /&gt;
&lt;BR /&gt;
  FIELD-SYMBOLS: &amp;lt;tab&amp;gt; TYPE table.&lt;BR /&gt;
  ASSIGN table_ref-&amp;gt;* TO &amp;lt;tab&amp;gt;.&lt;BR /&gt;
&lt;BR /&gt;
  TRY.&lt;BR /&gt;
      SELECT (select_clause) FROM (table_name) INTO TABLE &amp;lt;tab&amp;gt; WHERE (filter_string).&lt;BR /&gt;
    CATCH cx_sy_dynamic_osql_semantics.&lt;BR /&gt;
      message = 'Invalid filter string'. RETURN.&lt;BR /&gt;
  ENDTRY.&lt;BR /&gt;
&lt;BR /&gt;
  IF &amp;lt;tab&amp;gt; IS INITIAL.&lt;BR /&gt;
    message = 'No data found'. RETURN.&lt;BR /&gt;
  ENDIF.&lt;BR /&gt;
&lt;BR /&gt;
  DATA: res TYPE zstring_structure.&lt;BR /&gt;
&lt;BR /&gt;
  IF with_header_line = 'X'.&lt;BR /&gt;
    LOOP AT field_catalog ASSIGNING &amp;lt;fcat&amp;gt;.&lt;BR /&gt;
      IF res IS INITIAL.&lt;BR /&gt;
        res-data = &amp;lt;fcat&amp;gt;-fieldname.&lt;BR /&gt;
      ELSE.&lt;BR /&gt;
        res-data = res-data &amp;amp;&amp;amp; '|' &amp;amp;&amp;amp; &amp;lt;fcat&amp;gt;-fieldname.&lt;BR /&gt;
      ENDIF.&lt;BR /&gt;
    ENDLOOP.&lt;BR /&gt;
    APPEND res TO result.&lt;BR /&gt;
  ENDIF.&lt;BR /&gt;
&lt;BR /&gt;
  LOOP AT &amp;lt;tab&amp;gt; ASSIGNING FIELD-SYMBOL(&amp;lt;record&amp;gt;).&lt;BR /&gt;
    CLEAR res.&lt;BR /&gt;
    DO.&lt;BR /&gt;
      FIELD-SYMBOLS: &amp;lt;field&amp;gt; TYPE any.&lt;BR /&gt;
      ASSIGN COMPONENT sy-index OF STRUCTURE &amp;lt;record&amp;gt; TO &amp;lt;field&amp;gt;.&lt;BR /&gt;
      IF sy-subrc &amp;lt;&amp;gt; 0. EXIT. ENDIF.&lt;BR /&gt;
&lt;BR /&gt;
      IF res IS INITIAL.&lt;BR /&gt;
        res-data =  &amp;lt;field&amp;gt;.&lt;BR /&gt;
      ELSE.&lt;BR /&gt;
        res-data = res-data &amp;amp;&amp;amp; `|` &amp;amp;&amp;amp; &amp;lt;field&amp;gt;.&lt;BR /&gt;
      ENDIF.&lt;BR /&gt;
    ENDDO.&lt;BR /&gt;
&lt;BR /&gt;
    IF res IS NOT INITIAL.&lt;BR /&gt;
      APPEND res TO result.&lt;BR /&gt;
    ENDIF.&lt;BR /&gt;
&lt;BR /&gt;
  ENDLOOP.&lt;/P&gt;</description>
      <pubDate>Fri, 24 Feb 2023 09:31:45 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/read-data-from-database-tables-dynamically/m-p/12662904#M2015792</guid>
      <dc:creator>JurgenLootens</dc:creator>
      <dc:date>2023-02-24T09:31:45Z</dc:date>
    </item>
    <item>
      <title>Re: Read data from database tables dynamically</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/read-data-from-database-tables-dynamically/m-p/12662905#M2015793</link>
      <description>&lt;P&gt;And you're also missing the &lt;STRONG&gt;Dereferencement&lt;/STRONG&gt; operator (-&amp;gt;*):&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;ASSIGN table-&amp;gt;* TO &amp;lt;table_ref&amp;gt;.&lt;BR /&gt;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 24 Feb 2023 09:55:29 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/read-data-from-database-tables-dynamically/m-p/12662905#M2015793</guid>
      <dc:creator>Sandra_Rossi</dc:creator>
      <dc:date>2023-02-24T09:55:29Z</dc:date>
    </item>
    <item>
      <title>Re: Read data from database tables dynamically</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/read-data-from-database-tables-dynamically/m-p/12662906#M2015794</link>
      <description>&lt;P&gt;And of course, due to dereferencement, &amp;lt;table_ref&amp;gt; is no more a table reference, it's just a table.&lt;/P&gt;&lt;P&gt;You should also catch the situation when the input reference is not a reference to a table.&lt;/P&gt;</description>
      <pubDate>Fri, 24 Feb 2023 09:57:28 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/read-data-from-database-tables-dynamically/m-p/12662906#M2015794</guid>
      <dc:creator>Sandra_Rossi</dc:creator>
      <dc:date>2023-02-24T09:57:28Z</dc:date>
    </item>
    <item>
      <title>Re: Read data from database tables dynamically</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/read-data-from-database-tables-dynamically/m-p/12662907#M2015795</link>
      <description>&lt;P&gt;Hi Sandra,&lt;/P&gt;&lt;P&gt;of course you're right. I missed the dereferencement.&lt;/P&gt;</description>
      <pubDate>Fri, 24 Feb 2023 11:41:49 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/read-data-from-database-tables-dynamically/m-p/12662907#M2015795</guid>
      <dc:creator>dschiener</dc:creator>
      <dc:date>2023-02-24T11:41:49Z</dc:date>
    </item>
    <item>
      <title>Re: Read data from database tables dynamically</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/read-data-from-database-tables-dynamically/m-p/12662908#M2015796</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;okay this is what I got now for the moment:&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;CLASS reader DEFINITION&lt;BR /&gt;  CREATE PUBLIC.&lt;BR /&gt;&lt;BR /&gt;  PUBLIC SECTION.&lt;BR /&gt;    METHODS read&lt;BR /&gt;      IMPORTING&lt;BR /&gt;        table TYPE REF TO data.&lt;BR /&gt;ENDCLASS.&lt;BR /&gt;&lt;BR /&gt;CLASS reader IMPLEMENTATION.&lt;BR /&gt;  METHOD read.&lt;BR /&gt;    ##todo " how can I determine the run time time of the input table dynamically?&lt;BR /&gt;    DATA database_table TYPE string VALUE 'PA0015'.&lt;BR /&gt;&lt;BR /&gt;    FIELD-SYMBOLS &amp;lt;table_ref&amp;gt; TYPE ANY TABLE.&lt;BR /&gt;&lt;BR /&gt;    ASSIGN table-&amp;gt;* TO &amp;lt;table_ref&amp;gt;.&lt;BR /&gt;&lt;BR /&gt;    SELECT&lt;BR /&gt;      FROM (database_table)&lt;BR /&gt;      FIELDS *&lt;BR /&gt;      WHERE attrib = '123456'&lt;BR /&gt;      INTO TABLE @&amp;lt;table_ref&amp;gt;.&lt;BR /&gt;  ENDMETHOD.&lt;BR /&gt;ENDCLASS.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;START-OF-SELECTION.&lt;BR /&gt;  DATA table_content TYPE STANDARD TABLE OF pa0015 WITH EMPTY KEY.&lt;BR /&gt;&lt;BR /&gt;  DATA(reader) = NEW reader( ).&lt;BR /&gt;  reader-&amp;gt;read( table = REF #( table_content ) ).&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;The last step that is missing is the determination of the concrete run time type of the input parameter &lt;EM&gt;table &lt;/EM&gt;of method read.  &lt;SPAN class="mention-scrubbed"&gt;sandra.rossi&lt;/SPAN&gt; unfortunately I don't know how &lt;EM&gt;CREATE DATA &lt;/EM&gt;would help me here.&lt;/P&gt;&lt;P&gt;I think by using &lt;EM&gt;CREATE DATA &lt;/EM&gt;I could dynamically allocate / create data.&lt;BR /&gt;I don't think that I need to do this in my case because the caller of method read has already allocated memory for the importing internal table...&lt;/P&gt;&lt;P&gt;I think I would have to determine the type of the input table by using RTTI anyhow, but when I call e.g. &lt;EM&gt;cl_abap_tabledescr&lt;/EM&gt; I don't get any processable content that would help me to retrieve the tables name (PA0015).&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;DATA(descriptor) = cl_abap_tabledescr=&amp;gt;describe_by_data_ref( p_data_ref = table ).&lt;BR /&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Maybe anyone can give me another hint again :)?&lt;/P&gt;&lt;P&gt;BR&lt;BR /&gt;Daniel&lt;/P&gt;</description>
      <pubDate>Fri, 24 Feb 2023 11:51:55 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/read-data-from-database-tables-dynamically/m-p/12662908#M2015796</guid>
      <dc:creator>dschiener</dc:creator>
      <dc:date>2023-02-24T11:51:55Z</dc:date>
    </item>
    <item>
      <title>Re: Read data from database tables dynamically</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/read-data-from-database-tables-dynamically/m-p/12662909#M2015797</link>
      <description>&lt;P&gt;Yes, you're right, I talked about CREATE DATA without checking your code, it seems it's not what you want to do (CREATE DATA dref TYPE TABLE OF (tablename).)&lt;/P&gt;&lt;P&gt;To know the DDIC table name used to define a variable, you need something like this (based on your Descriptor variable) - I do it in several lines so that it's more clear - NB: the code doesn't check whether "table" is really typed based on a database table, it could be a data element or a structure (but you can add more code if you want):&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;DATA(line_type) = ( CAST cl_abap_tabledescr( descriptor ) )-&amp;gt;get_table_line_type( ).
IF line_type-&amp;gt;is_ddic_type( ).&lt;BR /&gt;  DATA(table_name) = line_type-&amp;gt;get_relative_name( ).&lt;BR /&gt;ENDIF.&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 24 Feb 2023 12:49:40 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/read-data-from-database-tables-dynamically/m-p/12662909#M2015797</guid>
      <dc:creator>Sandra_Rossi</dc:creator>
      <dc:date>2023-02-24T12:49:40Z</dc:date>
    </item>
  </channel>
</rss>

