<?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: xml and abap data structures in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/xml-and-abap-data-structures/m-p/3764421#M905733</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;look through these ,maybe this can help you&lt;/P&gt;&lt;P&gt;REPORT zvin01newbat NO STANDARD PAGE HEADING&lt;/P&gt;&lt;P&gt;                  MESSAGE-ID 00&lt;/P&gt;&lt;P&gt;                  LINE-COUNT 65&lt;/P&gt;&lt;P&gt;                  LINE-SIZE 160.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; TABLES:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES: objk, mara, makt, ytvin , ytdpvin ,&lt;/P&gt;&lt;P&gt;        afpo, vbap , ser05 , t001w .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;RANGES: r_werks FOR t001w-werks .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; CONSTANTS:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*CONSTANTS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; PROGRAM VARIABLES&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; INTERNAL TABLES&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF itab OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE ytvin.&lt;/P&gt;&lt;P&gt;DATA:  veh_czrq(20) TYPE c,&lt;/P&gt;&lt;P&gt;       veh_fzrq1(20) TYPE c,&lt;/P&gt;&lt;P&gt;       veh_clzzrq1(20) TYPE c,&lt;/P&gt;&lt;P&gt;END OF itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; SELECT-OPTIONS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; PAPAMETERS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_radioa RADIOBUTTON GROUP rad0,&lt;/P&gt;&lt;P&gt;            p_radiob RADIOBUTTON GROUP rad0.&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS: s_ytsn  FOR ytvin-ytsn OBLIGATORY .&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN SKIP 1.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_radio1 RADIOBUTTON GROUP rad1,&lt;/P&gt;&lt;P&gt;            p_radio2 RADIOBUTTON GROUP rad1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF BLOCK b1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;INITIALIZATION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;AT SELECTION-SCREEN&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;START-OF-SELECTION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_radioa = 'X' .&lt;/P&gt;&lt;P&gt;    SELECT *&lt;/P&gt;&lt;P&gt;    INTO TABLE itab&lt;/P&gt;&lt;P&gt;    FROM ytvin&lt;/P&gt;&lt;P&gt;    WHERE ytsn IN s_ytsn .&lt;/P&gt;&lt;P&gt;  ELSE .&lt;/P&gt;&lt;P&gt;    SELECT *&lt;/P&gt;&lt;P&gt;    INTO CORRESPONDING FIELDS OF TABLE itab&lt;/P&gt;&lt;P&gt;    FROM ytdpvin&lt;/P&gt;&lt;P&gt;    WHERE ytsn IN s_ytsn .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT itab .&lt;/P&gt;&lt;P&gt;      CONCATENATE itab-veh_fdjxh&lt;/P&gt;&lt;P&gt;                  itab-veh_fdjh&lt;/P&gt;&lt;P&gt;             INTO itab-veh_fdjh&lt;/P&gt;&lt;P&gt;             SEPARATED BY space .&lt;/P&gt;&lt;P&gt;      itab-veh_zchgzbh = itab-veh_dphgzbh .&lt;/P&gt;&lt;P&gt;      CLEAR itab-veh_dphgzbh .&lt;/P&gt;&lt;P&gt;      MODIFY itab TRANSPORTING veh_fdjh veh_zchgzbh veh_dphgzbh .&lt;/P&gt;&lt;P&gt;    ENDLOOP .&lt;/P&gt;&lt;P&gt;  ENDIF .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT itab.&lt;/P&gt;&lt;P&gt;    CONCATENATE sy-datum+0(4) '-'&lt;/P&gt;&lt;P&gt;                sy-datum+4(2) '-'&lt;/P&gt;&lt;P&gt;                sy-datum+6(2) '#'&lt;/P&gt;&lt;P&gt;                sy-uzeit+0(2) ':'&lt;/P&gt;&lt;P&gt;                sy-uzeit+2(2) ':'&lt;/P&gt;&lt;P&gt;                sy-uzeit+4(2)&lt;/P&gt;&lt;P&gt;    INTO itab-veh_czrq.&lt;/P&gt;&lt;P&gt;    TRANSLATE itab-veh_czrq USING '# '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE itab-veh_fzrq+0(4) '-'&lt;/P&gt;&lt;P&gt;                itab-veh_fzrq+6(2) '-'&lt;/P&gt;&lt;P&gt;                itab-veh_fzrq+10(2) '#'&lt;/P&gt;&lt;P&gt;                '00:00:00'&lt;/P&gt;&lt;P&gt;    INTO itab-veh_fzrq1.&lt;/P&gt;&lt;P&gt;    TRANSLATE itab-veh_fzrq1 USING '# '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE itab-veh_clzzrq+0(4) '-'&lt;/P&gt;&lt;P&gt;                itab-veh_clzzrq+6(2) '-'&lt;/P&gt;&lt;P&gt;                itab-veh_clzzrq+10(2) '#'&lt;/P&gt;&lt;P&gt;                '00:00:00'&lt;/P&gt;&lt;P&gt;    INTO itab-veh_clzzrq1.&lt;/P&gt;&lt;P&gt;    TRANSLATE itab-veh_clzzrq1 USING '# '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MODIFY itab TRANSPORTING veh_czrq veh_fzrq1 veh_clzzrq1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF itab-veh_clztxx = 'QX' .&lt;/P&gt;&lt;P&gt;      CONCATENATE itab-veh_fdjxh&lt;/P&gt;&lt;P&gt;                  itab-veh_fdjh&lt;/P&gt;&lt;P&gt;             INTO itab-veh_fdjh&lt;/P&gt;&lt;P&gt;             SEPARATED BY space .&lt;/P&gt;&lt;P&gt;      MODIFY itab TRANSPORTING veh_fdjh .&lt;/P&gt;&lt;P&gt;    ENDIF .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF itab-veh_clztxx = 'JH' .&lt;/P&gt;&lt;P&gt;      CLEAR: itab-veh_fdjxh , itab-veh_fdjh .&lt;/P&gt;&lt;P&gt;      MODIFY itab TRANSPORTING veh_fdjxh veh_fdjh .&lt;/P&gt;&lt;P&gt;    ENDIF .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_radio1 = 'X'.&lt;/P&gt;&lt;P&gt;    PERFORM render_xml_file TABLES itab USING 'd:\upload.vm'&lt;/P&gt;&lt;P&gt;                                              'C:\upload.xml'.&lt;/P&gt;&lt;P&gt;  ELSEIF p_radio2 = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM render_xml_file TABLES itab USING 'd:\DELERQ.vm'&lt;/P&gt;&lt;P&gt;                                              'C:\DELERQ.xml'.&lt;/P&gt;&lt;P&gt;  ENDIF .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;END-OF-SELECTION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;END-OF-SELECTION .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM render_xml_file                                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      ........                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  P_OUTPUT                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM render_xml_file TABLES itab USING p_input p_output.&lt;/P&gt;&lt;P&gt;  DATA: BEGIN OF it_data OCCURS 0,&lt;/P&gt;&lt;P&gt;          line(255) TYPE c,&lt;/P&gt;&lt;P&gt;        END OF it_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: it_xml LIKE TABLE OF it_data WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;        it_header LIKE TABLE OF it_data WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;        it_foot LIKE TABLE OF it_data WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;        it_repeat LIKE TABLE OF it_data WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;        it_cont LIKE TABLE OF it_data WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: line(255) TYPE c.&lt;/P&gt;&lt;P&gt;*0:header 1:content 2:foot&lt;/P&gt;&lt;P&gt;  DATA: sign(1) TYPE c.&lt;/P&gt;&lt;P&gt;  DATA: it_name(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FIELD-SYMBOLS: &amp;lt;fs&amp;gt; TYPE ANY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: fld_name(30) TYPE c.&lt;/P&gt;&lt;P&gt;  DATA: prefix(30) TYPE c,&lt;/P&gt;&lt;P&gt;        surfix(30) TYPE c.&lt;/P&gt;&lt;P&gt;  DATA: dsn(20) VALUE 'Upload.vm'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WS_UPLOAD'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            filename                = p_input&lt;/P&gt;&lt;P&gt;            filetype                = 'DAT'&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            data_tab                = it_data&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            conversion_error        = 1&lt;/P&gt;&lt;P&gt;            file_open_error         = 2&lt;/P&gt;&lt;P&gt;            file_read_error         = 3&lt;/P&gt;&lt;P&gt;            invalid_type            = 4&lt;/P&gt;&lt;P&gt;            no_batch                = 5&lt;/P&gt;&lt;P&gt;            unknown_error           = 6&lt;/P&gt;&lt;P&gt;            invalid_table_width     = 7&lt;/P&gt;&lt;P&gt;            gui_refuse_filetransfer = 8&lt;/P&gt;&lt;P&gt;            customer_error          = 9&lt;/P&gt;&lt;P&gt;            OTHERS                  = 10.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;/P&gt;&lt;P&gt;            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  sign = 0.&lt;/P&gt;&lt;P&gt;  LOOP AT it_data.&lt;/P&gt;&lt;P&gt;    line = it_data-line.&lt;/P&gt;&lt;P&gt;    CONDENSE line.&lt;/P&gt;&lt;P&gt;    IF line+0(8) = '#foreach'.&lt;/P&gt;&lt;P&gt;      sign = 1.&lt;/P&gt;&lt;P&gt;      PERFORM get_enclose_text&lt;/P&gt;&lt;P&gt;        USING line '(' ')'&lt;/P&gt;&lt;P&gt;        CHANGING it_name.&lt;/P&gt;&lt;P&gt;      CONTINUE.&lt;/P&gt;&lt;P&gt;    ELSEIF line+0(4) = '#end'.&lt;/P&gt;&lt;P&gt;      sign = 2.&lt;/P&gt;&lt;P&gt;      CONTINUE.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONDENSE it_data.&lt;/P&gt;&lt;P&gt;    IF sign = 0.&lt;/P&gt;&lt;P&gt;      APPEND it_data TO it_header.&lt;/P&gt;&lt;P&gt;    ELSEIF sign = 2.&lt;/P&gt;&lt;P&gt;      APPEND it_data TO it_foot.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      APPEND it_data TO it_repeat.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT itab.&lt;/P&gt;&lt;P&gt;    LOOP AT it_repeat.&lt;/P&gt;&lt;P&gt;      IF NOT it_repeat-line CS '$'.&lt;/P&gt;&lt;P&gt;        it_cont-line = it_repeat-line.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        PERFORM get_enclose_text&lt;/P&gt;&lt;P&gt;          USING it_repeat-line '&amp;lt;' '&amp;gt;'&lt;/P&gt;&lt;P&gt;          CHANGING prefix.&lt;/P&gt;&lt;P&gt;        PERFORM get_enclose_text&lt;/P&gt;&lt;P&gt;          USING it_repeat-line '/' '&amp;gt;'&lt;/P&gt;&lt;P&gt;          CHANGING surfix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        PERFORM get_enclose_text&lt;/P&gt;&lt;P&gt;          USING it_repeat-line '$' '&amp;lt;'&lt;/P&gt;&lt;P&gt;          CHANGING fld_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        ASSIGN COMPONENT fld_name OF STRUCTURE itab TO &amp;lt;fs&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CONCATENATE '&amp;lt;' prefix '&amp;gt;'&lt;/P&gt;&lt;P&gt;                    &amp;lt;fs&amp;gt;&lt;/P&gt;&lt;P&gt;                    '&amp;lt;/' surfix '&amp;gt;'&lt;/P&gt;&lt;P&gt;        INTO it_cont-line.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      APPEND it_cont.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT it_header.&lt;/P&gt;&lt;P&gt;    APPEND it_header TO it_xml.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  LOOP AT it_cont.&lt;/P&gt;&lt;P&gt;    APPEND it_cont TO it_xml.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT it_foot.&lt;/P&gt;&lt;P&gt;    APPEND it_foot TO it_xml.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WS_DOWNLOAD'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            filename                = p_output&lt;/P&gt;&lt;P&gt;            filetype                = 'DAT'&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            data_tab                = it_xml&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            file_open_error         = 1&lt;/P&gt;&lt;P&gt;            file_write_error        = 2&lt;/P&gt;&lt;P&gt;            invalid_filesize        = 3&lt;/P&gt;&lt;P&gt;            invalid_type            = 4&lt;/P&gt;&lt;P&gt;            no_batch                = 5&lt;/P&gt;&lt;P&gt;            unknown_error           = 6&lt;/P&gt;&lt;P&gt;            invalid_table_width     = 7&lt;/P&gt;&lt;P&gt;            gui_refuse_filetransfer = 8&lt;/P&gt;&lt;P&gt;            customer_error          = 9&lt;/P&gt;&lt;P&gt;            OTHERS                  = 10.&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;/P&gt;&lt;P&gt;            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM get_enclose_text                                         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      ........                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  P1                                                            *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  P2                                                            *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  P_TEXT                                                        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_enclose_text USING p_orgin p1 p2 CHANGING p_text.&lt;/P&gt;&lt;P&gt;  DATA: start TYPE i,&lt;/P&gt;&lt;P&gt;        end TYPE i,&lt;/P&gt;&lt;P&gt;        len  TYPE i.&lt;/P&gt;&lt;P&gt;  SEARCH p_orgin FOR p1.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    start = sy-fdpos.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  start = start + 1.&lt;/P&gt;&lt;P&gt;  SEARCH p_orgin FOR p2 STARTING AT start.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    end = sy-fdpos.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  len = end - 1.&lt;/P&gt;&lt;P&gt;  p_text = p_orgin+start(len).&lt;/P&gt;&lt;P&gt;  CONDENSE p_text.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 28 Apr 2008 00:43:44 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-04-28T00:43:44Z</dc:date>
    <item>
      <title>xml and abap data structures</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/xml-and-abap-data-structures/m-p/3764420#M905732</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi guys, &lt;/P&gt;&lt;P&gt;I'm new to ABAP  only a few months experience ,&lt;/P&gt;&lt;P&gt;I have a question ,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What does the transformation between XML and ABAP data structures&lt;/P&gt;&lt;P&gt;involve? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;please help  ;  )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Arturo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 27 Apr 2008 17:46:29 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/xml-and-abap-data-structures/m-p/3764420#M905732</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-04-27T17:46:29Z</dc:date>
    </item>
    <item>
      <title>Re: xml and abap data structures</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/xml-and-abap-data-structures/m-p/3764421#M905733</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;look through these ,maybe this can help you&lt;/P&gt;&lt;P&gt;REPORT zvin01newbat NO STANDARD PAGE HEADING&lt;/P&gt;&lt;P&gt;                  MESSAGE-ID 00&lt;/P&gt;&lt;P&gt;                  LINE-COUNT 65&lt;/P&gt;&lt;P&gt;                  LINE-SIZE 160.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; TABLES:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES: objk, mara, makt, ytvin , ytdpvin ,&lt;/P&gt;&lt;P&gt;        afpo, vbap , ser05 , t001w .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;RANGES: r_werks FOR t001w-werks .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; CONSTANTS:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*CONSTANTS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; PROGRAM VARIABLES&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; INTERNAL TABLES&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF itab OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE ytvin.&lt;/P&gt;&lt;P&gt;DATA:  veh_czrq(20) TYPE c,&lt;/P&gt;&lt;P&gt;       veh_fzrq1(20) TYPE c,&lt;/P&gt;&lt;P&gt;       veh_clzzrq1(20) TYPE c,&lt;/P&gt;&lt;P&gt;END OF itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; SELECT-OPTIONS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; PAPAMETERS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_radioa RADIOBUTTON GROUP rad0,&lt;/P&gt;&lt;P&gt;            p_radiob RADIOBUTTON GROUP rad0.&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS: s_ytsn  FOR ytvin-ytsn OBLIGATORY .&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN SKIP 1.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_radio1 RADIOBUTTON GROUP rad1,&lt;/P&gt;&lt;P&gt;            p_radio2 RADIOBUTTON GROUP rad1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF BLOCK b1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;INITIALIZATION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;AT SELECTION-SCREEN&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;START-OF-SELECTION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_radioa = 'X' .&lt;/P&gt;&lt;P&gt;    SELECT *&lt;/P&gt;&lt;P&gt;    INTO TABLE itab&lt;/P&gt;&lt;P&gt;    FROM ytvin&lt;/P&gt;&lt;P&gt;    WHERE ytsn IN s_ytsn .&lt;/P&gt;&lt;P&gt;  ELSE .&lt;/P&gt;&lt;P&gt;    SELECT *&lt;/P&gt;&lt;P&gt;    INTO CORRESPONDING FIELDS OF TABLE itab&lt;/P&gt;&lt;P&gt;    FROM ytdpvin&lt;/P&gt;&lt;P&gt;    WHERE ytsn IN s_ytsn .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT itab .&lt;/P&gt;&lt;P&gt;      CONCATENATE itab-veh_fdjxh&lt;/P&gt;&lt;P&gt;                  itab-veh_fdjh&lt;/P&gt;&lt;P&gt;             INTO itab-veh_fdjh&lt;/P&gt;&lt;P&gt;             SEPARATED BY space .&lt;/P&gt;&lt;P&gt;      itab-veh_zchgzbh = itab-veh_dphgzbh .&lt;/P&gt;&lt;P&gt;      CLEAR itab-veh_dphgzbh .&lt;/P&gt;&lt;P&gt;      MODIFY itab TRANSPORTING veh_fdjh veh_zchgzbh veh_dphgzbh .&lt;/P&gt;&lt;P&gt;    ENDLOOP .&lt;/P&gt;&lt;P&gt;  ENDIF .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT itab.&lt;/P&gt;&lt;P&gt;    CONCATENATE sy-datum+0(4) '-'&lt;/P&gt;&lt;P&gt;                sy-datum+4(2) '-'&lt;/P&gt;&lt;P&gt;                sy-datum+6(2) '#'&lt;/P&gt;&lt;P&gt;                sy-uzeit+0(2) ':'&lt;/P&gt;&lt;P&gt;                sy-uzeit+2(2) ':'&lt;/P&gt;&lt;P&gt;                sy-uzeit+4(2)&lt;/P&gt;&lt;P&gt;    INTO itab-veh_czrq.&lt;/P&gt;&lt;P&gt;    TRANSLATE itab-veh_czrq USING '# '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE itab-veh_fzrq+0(4) '-'&lt;/P&gt;&lt;P&gt;                itab-veh_fzrq+6(2) '-'&lt;/P&gt;&lt;P&gt;                itab-veh_fzrq+10(2) '#'&lt;/P&gt;&lt;P&gt;                '00:00:00'&lt;/P&gt;&lt;P&gt;    INTO itab-veh_fzrq1.&lt;/P&gt;&lt;P&gt;    TRANSLATE itab-veh_fzrq1 USING '# '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE itab-veh_clzzrq+0(4) '-'&lt;/P&gt;&lt;P&gt;                itab-veh_clzzrq+6(2) '-'&lt;/P&gt;&lt;P&gt;                itab-veh_clzzrq+10(2) '#'&lt;/P&gt;&lt;P&gt;                '00:00:00'&lt;/P&gt;&lt;P&gt;    INTO itab-veh_clzzrq1.&lt;/P&gt;&lt;P&gt;    TRANSLATE itab-veh_clzzrq1 USING '# '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MODIFY itab TRANSPORTING veh_czrq veh_fzrq1 veh_clzzrq1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF itab-veh_clztxx = 'QX' .&lt;/P&gt;&lt;P&gt;      CONCATENATE itab-veh_fdjxh&lt;/P&gt;&lt;P&gt;                  itab-veh_fdjh&lt;/P&gt;&lt;P&gt;             INTO itab-veh_fdjh&lt;/P&gt;&lt;P&gt;             SEPARATED BY space .&lt;/P&gt;&lt;P&gt;      MODIFY itab TRANSPORTING veh_fdjh .&lt;/P&gt;&lt;P&gt;    ENDIF .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF itab-veh_clztxx = 'JH' .&lt;/P&gt;&lt;P&gt;      CLEAR: itab-veh_fdjxh , itab-veh_fdjh .&lt;/P&gt;&lt;P&gt;      MODIFY itab TRANSPORTING veh_fdjxh veh_fdjh .&lt;/P&gt;&lt;P&gt;    ENDIF .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_radio1 = 'X'.&lt;/P&gt;&lt;P&gt;    PERFORM render_xml_file TABLES itab USING 'd:\upload.vm'&lt;/P&gt;&lt;P&gt;                                              'C:\upload.xml'.&lt;/P&gt;&lt;P&gt;  ELSEIF p_radio2 = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM render_xml_file TABLES itab USING 'd:\DELERQ.vm'&lt;/P&gt;&lt;P&gt;                                              'C:\DELERQ.xml'.&lt;/P&gt;&lt;P&gt;  ENDIF .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;END-OF-SELECTION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;END-OF-SELECTION .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM render_xml_file                                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      ........                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  P_OUTPUT                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM render_xml_file TABLES itab USING p_input p_output.&lt;/P&gt;&lt;P&gt;  DATA: BEGIN OF it_data OCCURS 0,&lt;/P&gt;&lt;P&gt;          line(255) TYPE c,&lt;/P&gt;&lt;P&gt;        END OF it_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: it_xml LIKE TABLE OF it_data WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;        it_header LIKE TABLE OF it_data WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;        it_foot LIKE TABLE OF it_data WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;        it_repeat LIKE TABLE OF it_data WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;        it_cont LIKE TABLE OF it_data WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: line(255) TYPE c.&lt;/P&gt;&lt;P&gt;*0:header 1:content 2:foot&lt;/P&gt;&lt;P&gt;  DATA: sign(1) TYPE c.&lt;/P&gt;&lt;P&gt;  DATA: it_name(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FIELD-SYMBOLS: &amp;lt;fs&amp;gt; TYPE ANY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: fld_name(30) TYPE c.&lt;/P&gt;&lt;P&gt;  DATA: prefix(30) TYPE c,&lt;/P&gt;&lt;P&gt;        surfix(30) TYPE c.&lt;/P&gt;&lt;P&gt;  DATA: dsn(20) VALUE 'Upload.vm'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WS_UPLOAD'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            filename                = p_input&lt;/P&gt;&lt;P&gt;            filetype                = 'DAT'&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            data_tab                = it_data&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            conversion_error        = 1&lt;/P&gt;&lt;P&gt;            file_open_error         = 2&lt;/P&gt;&lt;P&gt;            file_read_error         = 3&lt;/P&gt;&lt;P&gt;            invalid_type            = 4&lt;/P&gt;&lt;P&gt;            no_batch                = 5&lt;/P&gt;&lt;P&gt;            unknown_error           = 6&lt;/P&gt;&lt;P&gt;            invalid_table_width     = 7&lt;/P&gt;&lt;P&gt;            gui_refuse_filetransfer = 8&lt;/P&gt;&lt;P&gt;            customer_error          = 9&lt;/P&gt;&lt;P&gt;            OTHERS                  = 10.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;/P&gt;&lt;P&gt;            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  sign = 0.&lt;/P&gt;&lt;P&gt;  LOOP AT it_data.&lt;/P&gt;&lt;P&gt;    line = it_data-line.&lt;/P&gt;&lt;P&gt;    CONDENSE line.&lt;/P&gt;&lt;P&gt;    IF line+0(8) = '#foreach'.&lt;/P&gt;&lt;P&gt;      sign = 1.&lt;/P&gt;&lt;P&gt;      PERFORM get_enclose_text&lt;/P&gt;&lt;P&gt;        USING line '(' ')'&lt;/P&gt;&lt;P&gt;        CHANGING it_name.&lt;/P&gt;&lt;P&gt;      CONTINUE.&lt;/P&gt;&lt;P&gt;    ELSEIF line+0(4) = '#end'.&lt;/P&gt;&lt;P&gt;      sign = 2.&lt;/P&gt;&lt;P&gt;      CONTINUE.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONDENSE it_data.&lt;/P&gt;&lt;P&gt;    IF sign = 0.&lt;/P&gt;&lt;P&gt;      APPEND it_data TO it_header.&lt;/P&gt;&lt;P&gt;    ELSEIF sign = 2.&lt;/P&gt;&lt;P&gt;      APPEND it_data TO it_foot.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      APPEND it_data TO it_repeat.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT itab.&lt;/P&gt;&lt;P&gt;    LOOP AT it_repeat.&lt;/P&gt;&lt;P&gt;      IF NOT it_repeat-line CS '$'.&lt;/P&gt;&lt;P&gt;        it_cont-line = it_repeat-line.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        PERFORM get_enclose_text&lt;/P&gt;&lt;P&gt;          USING it_repeat-line '&amp;lt;' '&amp;gt;'&lt;/P&gt;&lt;P&gt;          CHANGING prefix.&lt;/P&gt;&lt;P&gt;        PERFORM get_enclose_text&lt;/P&gt;&lt;P&gt;          USING it_repeat-line '/' '&amp;gt;'&lt;/P&gt;&lt;P&gt;          CHANGING surfix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        PERFORM get_enclose_text&lt;/P&gt;&lt;P&gt;          USING it_repeat-line '$' '&amp;lt;'&lt;/P&gt;&lt;P&gt;          CHANGING fld_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        ASSIGN COMPONENT fld_name OF STRUCTURE itab TO &amp;lt;fs&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CONCATENATE '&amp;lt;' prefix '&amp;gt;'&lt;/P&gt;&lt;P&gt;                    &amp;lt;fs&amp;gt;&lt;/P&gt;&lt;P&gt;                    '&amp;lt;/' surfix '&amp;gt;'&lt;/P&gt;&lt;P&gt;        INTO it_cont-line.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      APPEND it_cont.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT it_header.&lt;/P&gt;&lt;P&gt;    APPEND it_header TO it_xml.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  LOOP AT it_cont.&lt;/P&gt;&lt;P&gt;    APPEND it_cont TO it_xml.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT it_foot.&lt;/P&gt;&lt;P&gt;    APPEND it_foot TO it_xml.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WS_DOWNLOAD'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            filename                = p_output&lt;/P&gt;&lt;P&gt;            filetype                = 'DAT'&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            data_tab                = it_xml&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            file_open_error         = 1&lt;/P&gt;&lt;P&gt;            file_write_error        = 2&lt;/P&gt;&lt;P&gt;            invalid_filesize        = 3&lt;/P&gt;&lt;P&gt;            invalid_type            = 4&lt;/P&gt;&lt;P&gt;            no_batch                = 5&lt;/P&gt;&lt;P&gt;            unknown_error           = 6&lt;/P&gt;&lt;P&gt;            invalid_table_width     = 7&lt;/P&gt;&lt;P&gt;            gui_refuse_filetransfer = 8&lt;/P&gt;&lt;P&gt;            customer_error          = 9&lt;/P&gt;&lt;P&gt;            OTHERS                  = 10.&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;/P&gt;&lt;P&gt;            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM get_enclose_text                                         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      ........                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  P1                                                            *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  P2                                                            *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  P_TEXT                                                        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_enclose_text USING p_orgin p1 p2 CHANGING p_text.&lt;/P&gt;&lt;P&gt;  DATA: start TYPE i,&lt;/P&gt;&lt;P&gt;        end TYPE i,&lt;/P&gt;&lt;P&gt;        len  TYPE i.&lt;/P&gt;&lt;P&gt;  SEARCH p_orgin FOR p1.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    start = sy-fdpos.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  start = start + 1.&lt;/P&gt;&lt;P&gt;  SEARCH p_orgin FOR p2 STARTING AT start.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    end = sy-fdpos.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  len = end - 1.&lt;/P&gt;&lt;P&gt;  p_text = p_orgin+start(len).&lt;/P&gt;&lt;P&gt;  CONDENSE p_text.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 28 Apr 2008 00:43:44 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/xml-and-abap-data-structures/m-p/3764421#M905733</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-04-28T00:43:44Z</dc:date>
    </item>
    <item>
      <title>Re: xml and abap data structures</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/xml-and-abap-data-structures/m-p/3764422#M905734</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Arturo&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The author of the previous posting is apparently not aware of the statement &lt;STRONG&gt;CALL TRANSFORMATION&lt;/STRONG&gt; which allows you to easily convert between ABAP structures and XML. The ABAP keyword documentation is quite verbose:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
Syntax 
CALL TRANSFORMATION {trans|(name)} 
                    [PARAMETERS {p1 = e1 p2 = e2 ...}|(ptab)] 
                    [OBJECTS    {o1 = e1 o2 = e2 ...}|(otab)] 
                    [OPTIONS    a1 = e1 a2 = e2 ...] 
                    SOURCE {XML sxml} 
                         | {{bn1 = e1 bn2 = e2 ...}|(stab)} 
                    RESULT {XML rxml} 
                         | {{bn1 = f1 bn2 = f2 ...}|(rtab)}. 


This statement calls the specified XSL transformation (XSLT) or a simple transformation (ST, as of release 6.40). The source of the transformation is specified after SOURCE and the result is stored as specified after RESULT. Use PARAMETERS and OBJECTS to pass parameters to the transformation. Possible transformation types are: 

from XML to XML (only for XSLT), 

from XML to ABAP (for XSLT and simple transformations), 

from ABAP to XML (for XSLT and simple transformations), 

from ABAP to ABAP (only for XSLT), 

where the last two types are available only as of release 6.20. 



The name of the transformation can be specified either directly as trans or as content of a character-type data object name in braces. The specified transformation must exist as a XSLT program or as a simple transformation in the Repository. 
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you like to learn more about the XML features of the SAP system have a look at the classes, interfaces and sample reports in packages &lt;STRONG&gt;SIXML&lt;/STRONG&gt; and &lt;STRONG&gt;SIXML_TEST&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;  Uwe&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 28 Apr 2008 03:42:11 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/xml-and-abap-data-structures/m-p/3764422#M905734</guid>
      <dc:creator>uwe_schieferstein</dc:creator>
      <dc:date>2008-04-28T03:42:11Z</dc:date>
    </item>
    <item>
      <title>Re: xml and abap data structures</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/xml-and-abap-data-structures/m-p/3764423#M905735</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;so what does the transformation between XML and ABAP data structures generate? which of the following 3?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- Generation of ABAP proxy types from XML schemas.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- Generation of XML schemas from ABAP types.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- Neither generation of XML schemas from ABAP types nor generation of ABAP&lt;/P&gt;&lt;P&gt;proxy types from XML schemas.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 28 Apr 2008 13:13:57 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/xml-and-abap-data-structures/m-p/3764423#M905735</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-04-28T13:13:57Z</dc:date>
    </item>
  </channel>
</rss>

