<?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: parsing XML file in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/parsing-xml-file/m-p/1487649#M227330</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Raja,&lt;/P&gt;&lt;P&gt;Than you very much.Points are given.&lt;/P&gt;&lt;P&gt;But can you pls tell me in your pgm which is there in the link..in which internal table the data is storing finally..&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 08 Aug 2006 13:08:44 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2006-08-08T13:08:44Z</dc:date>
    <item>
      <title>parsing XML file</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/parsing-xml-file/m-p/1487647#M227328</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Experts,&lt;/P&gt;&lt;P&gt;Here is a sample pgm for parsing XML file.&lt;/P&gt;&lt;P&gt;What my problem is there is method like &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;value = node-&amp;gt;get_value( ).&lt;/P&gt;&lt;P&gt;Where exactly i am getting the data.&lt;/P&gt;&lt;P&gt;i declared the varibale value as value(65535)..so max.length.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But in my xml file i have a field called long description&lt;/P&gt;&lt;P&gt;which may have any n.of lines.But when i exicute pgm the varible Value contains only half of those lines..Suppose &lt;/P&gt;&lt;P&gt;in XML file the long description has 4 lines...here it is diaplaying only 2 lines.i have to display complete lines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can any body tell me how can we do this?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Report  ZREAD_XML                                                   *&lt;/P&gt;&lt;P&gt;*&amp;amp;                                                                     *&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;                                                                     *&lt;/P&gt;&lt;P&gt;*&amp;amp;                                                                     *&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;REPORT  ZREAD_XML                               .&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;P&gt;*PURPOSE: This program transfers XML data into SAP internal table format&lt;/P&gt;&lt;P&gt;*The nodes in DOM can be stored as fields in SAP Internal table&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;type pool definitions&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS: ixml. "iXML Library Types&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;type definitions&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_xml_line, "Structure for holding XML data&lt;/P&gt;&lt;P&gt;data(256) TYPE x,&lt;/P&gt;&lt;P&gt;END OF t_xml_line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: l_ixml TYPE REF TO if_ixml,&lt;/P&gt;&lt;P&gt;l_streamfactory TYPE REF TO if_ixml_stream_factory,&lt;/P&gt;&lt;P&gt;l_parser TYPE REF TO if_ixml_parser,&lt;/P&gt;&lt;P&gt;l_istream TYPE REF TO if_ixml_istream,&lt;/P&gt;&lt;P&gt;l_document TYPE REF TO if_ixml_document,&lt;/P&gt;&lt;P&gt;l_node TYPE REF TO if_ixml_node,&lt;/P&gt;&lt;P&gt;l_xmldata TYPE string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data : v_text(1000).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: l_elem TYPE REF TO if_ixml_element,&lt;/P&gt;&lt;P&gt;l_root_node TYPE REF TO if_ixml_node,&lt;/P&gt;&lt;P&gt;l_next_node TYPE REF TO if_ixml_node,&lt;/P&gt;&lt;P&gt;l_name TYPE string,&lt;/P&gt;&lt;P&gt;l_iterator TYPE REF TO if_ixml_node_iterator.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: l_xml_table TYPE TABLE OF t_xml_line, " XML Table of the structure&lt;/P&gt;&lt;P&gt;*t_xml_line&lt;/P&gt;&lt;P&gt;l_xml_line TYPE t_xml_line, " Record of structure t_xml_line&lt;/P&gt;&lt;P&gt;l_xml_table_size TYPE i. " XML table size&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: l_filename TYPE string. " String to hold filename&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA : NUM TYPE I.&lt;/P&gt;&lt;P&gt;DATA : HOWMANY TYPE I.&lt;/P&gt;&lt;P&gt;DATA : CTR TYPE I.&lt;/P&gt;&lt;P&gt;DATA : MYIND TYPE SY-INDEX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of i_final occurs 0,&lt;/P&gt;&lt;P&gt;      value(20000),&lt;/P&gt;&lt;P&gt;      end of i_final.&lt;/P&gt;&lt;P&gt;data: begin of it_final occurs 0,&lt;/P&gt;&lt;P&gt;      finaltext(65535),&lt;/P&gt;&lt;P&gt;      end of it_final.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: v_temp type i.&lt;/P&gt;&lt;P&gt;data : it_final1 like it_final occurs 0 with header line.&lt;/P&gt;&lt;P&gt;DATA : V_TABIX TYPE SY-TABIX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: p_file like rlgrap-filename.&lt;/P&gt;&lt;P&gt;p_file = 'D:\test.TXT'.&lt;/P&gt;&lt;P&gt;*PARAMETERS: pa_file TYPE char1024 DEFAULT 'C:\Test1.html.xml'.&lt;/P&gt;&lt;P&gt;*parameters: pa_file type localfile.&lt;/P&gt;&lt;P&gt;parameters: pa_file type rlgrap-filename.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of it_product occurs 0,&lt;/P&gt;&lt;P&gt;       p1(100),&lt;/P&gt;&lt;P&gt;       p2(20),&lt;/P&gt;&lt;P&gt;       p3(2),&lt;/P&gt;&lt;P&gt;       p4(2),&lt;/P&gt;&lt;P&gt;       p5(7),&lt;/P&gt;&lt;P&gt;       p6(7),&lt;/P&gt;&lt;P&gt;       p7(100),&lt;/P&gt;&lt;P&gt;       p8(70),&lt;/P&gt;&lt;P&gt;       p9(10),&lt;/P&gt;&lt;P&gt;       p10(70),&lt;/P&gt;&lt;P&gt;       p11(2),&lt;/P&gt;&lt;P&gt;       P12(2),&lt;/P&gt;&lt;P&gt;       P13(70),&lt;/P&gt;&lt;P&gt;       P14(10),&lt;/P&gt;&lt;P&gt;       P15(2),&lt;/P&gt;&lt;P&gt;       P16(10),&lt;/P&gt;&lt;P&gt;       P17(10),&lt;/P&gt;&lt;P&gt;       P18(10),&lt;/P&gt;&lt;P&gt;       P19(5000),&lt;/P&gt;&lt;P&gt;       P20(10),&lt;/P&gt;&lt;P&gt;       P21(500),&lt;/P&gt;&lt;P&gt;       P22(500),&lt;/P&gt;&lt;P&gt;       P23(500),&lt;/P&gt;&lt;P&gt;       P24(500),&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      P25(150),&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      P26(150),&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      P27(150),&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      P28(100),&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      P29(150),&lt;/P&gt;&lt;/LI&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;     P30(100),&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;       end of it_product.&lt;/P&gt;&lt;P&gt;data: begin of IT_SERENA occurs 0,&lt;/P&gt;&lt;P&gt;       ID LIKE COMM_PCAT_CTY-ID,&lt;/P&gt;&lt;P&gt;       TEXT(65000),&lt;/P&gt;&lt;P&gt;      end of IT_SERENA.&lt;/P&gt;&lt;P&gt;DATA:WA_SERENA like IT_SERENA.&lt;/P&gt;&lt;P&gt;data: productnum type COMT_PRWB_OBJECT.&lt;/P&gt;&lt;P&gt;data: proguid type COMT_PRODUCT_GUID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;DATA: BASIC_TEXT LIKE THEAD OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: YGUID LIKE COMM_PCAT_CTY-GUID,&lt;/P&gt;&lt;P&gt;      ZGUID LIKE COMM_PCAT_CTV-PARENT_CATEGORY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BASICTEXT like TLINE OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: IT_THEAD LIKE  THEAD OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&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;Validation of XML file: Only DTD included in XML document is supported&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*PARAMETERS: pa_val TYPE char1 AS CHECKBOX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;at selection-screen on value-request for pa_file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'KD_GET_FILENAME_ON_F4'&lt;/P&gt;&lt;P&gt; EXPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  PROGRAM_NAME        = SYST-REPID&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DYNPRO_NUMBER       = SYST-DYNNR&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FIELD_NAME          = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   STATIC              = 'X'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  MASK                = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CHANGING&lt;/P&gt;&lt;P&gt;    FILE_NAME           = pa_file&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  MASK_TOO_LONG       = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  OTHERS              = 2&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          .&lt;/P&gt;&lt;P&gt;IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&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;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creating the main iXML factory&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  l_ixml = cl_ixml=&amp;gt;create( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creating a stream factory&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  l_streamfactory = l_ixml-&amp;gt;create_stream_factory( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM get_xml_table CHANGING l_xml_table_size l_xml_table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Wrap the table containing the file into a stream.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;l_istream = l_streamfactory-&amp;gt;create_istream_itable( table = l_xml_table&lt;/P&gt;&lt;P&gt;size = l_xml_table_size ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creating a document&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  l_document = l_ixml-&amp;gt;create_document( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creating a Parser&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  l_parser = l_ixml-&amp;gt;create_parser( stream_factory = l_streamfactory&lt;/P&gt;&lt;P&gt;  istream = l_istream&lt;/P&gt;&lt;P&gt;  document = l_document ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Validate a document&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; IF pa_val = 'X'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   l_parser-&amp;gt;set_validating( mode = if_ixml_parser=&amp;gt;co_validate ).&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Parse the stream&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF l_parser-&amp;gt;parse( ) &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    IF l_parser-&amp;gt;num_errors( ) &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      DATA: parseerror TYPE REF TO if_ixml_parse_error,&lt;/P&gt;&lt;P&gt;      str TYPE string,&lt;/P&gt;&lt;P&gt;      i TYPE i,&lt;/P&gt;&lt;P&gt;      count TYPE i,&lt;/P&gt;&lt;P&gt;      index TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      count = l_parser-&amp;gt;num_errors( ).&lt;/P&gt;&lt;P&gt;      WRITE: count, ' parse errors have occured:'.&lt;/P&gt;&lt;P&gt;      index = 0.&lt;/P&gt;&lt;P&gt;      WHILE index &amp;lt; count.&lt;/P&gt;&lt;P&gt;        parseerror = l_parser-&amp;gt;get_error( index = index ).&lt;/P&gt;&lt;P&gt;        i = parseerror-&amp;gt;get_line( ).&lt;/P&gt;&lt;P&gt;        WRITE: 'line: ', i.&lt;/P&gt;&lt;P&gt;        i = parseerror-&amp;gt;get_column( ).&lt;/P&gt;&lt;P&gt;        WRITE: 'column: ', i.&lt;/P&gt;&lt;P&gt;        str = parseerror-&amp;gt;get_reason( ).&lt;/P&gt;&lt;P&gt;        WRITE: str.&lt;/P&gt;&lt;P&gt;        index = index + 1.&lt;/P&gt;&lt;P&gt;      ENDWHILE.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Process the document&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF l_parser-&amp;gt;is_dom_generating( ) EQ 'X'.&lt;/P&gt;&lt;P&gt;    PERFORM process_dom USING l_document.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   perform download.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDIF.&lt;/P&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; Form get_xml_table&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;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;&amp;lt;--P_L_XML_TABLE_SIZE text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;--P_L_XML_TABLE 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_xml_table CHANGING p_l_xml_table_size&lt;/P&gt;&lt;P&gt;p_l_xml_table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Local variable declarations&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: l_len TYPE i,&lt;/P&gt;&lt;P&gt;  l_len2 TYPE i,&lt;/P&gt;&lt;P&gt;  l_tab TYPE tsfixml,&lt;/P&gt;&lt;P&gt;  l_content TYPE string,&lt;/P&gt;&lt;P&gt;  l_str1 TYPE string,&lt;/P&gt;&lt;P&gt;  c_conv TYPE REF TO cl_abap_conv_in_ce,&lt;/P&gt;&lt;P&gt;  l_itab TYPE TABLE OF string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_filename = pa_file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Upload file from the client's workstation&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD cl_gui_frontend_services=&amp;gt;gui_upload&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      filename   = l_filename&lt;/P&gt;&lt;P&gt;      filetype   = 'BIN'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      filelength = l_xml_table_size&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      data_tab   = l_xml_table&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      OTHERS     = 19.&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Writing the XML document to the screen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR l_str1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT l_xml_table INTO l_xml_line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;c_conv = cl_abap_conv_in_ce=&amp;gt;create( input = l_xml_line-data replacement&lt;/P&gt;&lt;P&gt; = space ).&lt;/P&gt;&lt;P&gt;    c_conv-&amp;gt;read( IMPORTING data = l_content len = l_len ).&lt;/P&gt;&lt;P&gt;    CONCATENATE l_str1 l_content INTO l_str1.&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;  l_str1 = l_str1+0(l_xml_table_size).&lt;/P&gt;&lt;P&gt;  SPLIT l_str1 AT cl_abap_char_utilities=&amp;gt;cr_lf INTO TABLE l_itab.&lt;/P&gt;&lt;P&gt;  WRITE: /.&lt;/P&gt;&lt;P&gt;  WRITE: /' XML File'.&lt;/P&gt;&lt;P&gt;  WRITE: /.&lt;/P&gt;&lt;P&gt;  LOOP AT l_itab INTO l_str1.&lt;/P&gt;&lt;P&gt;   REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=&amp;gt;horizontal_tab IN&lt;/P&gt;&lt;P&gt;   l_str1 WITH space.&lt;/P&gt;&lt;P&gt;    WRITE: / l_str1.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  WRITE: /.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " get_xml_table&lt;/P&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; Form process_dom&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;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;--&amp;gt;P_L_DOCUMENT 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 process_dom USING document TYPE REF TO if_ixml_document.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: node TYPE REF TO if_ixml_node,&lt;/P&gt;&lt;P&gt;  iterator TYPE REF TO if_ixml_node_iterator,&lt;/P&gt;&lt;P&gt;  nodemap TYPE REF TO if_ixml_named_node_map,&lt;/P&gt;&lt;P&gt;  attr TYPE REF TO if_ixml_node,&lt;/P&gt;&lt;P&gt;  name TYPE string,&lt;/P&gt;&lt;P&gt;  prefix TYPE string,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; value TYPE string,&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; value(65535),&lt;/P&gt;&lt;P&gt;  indent TYPE i,&lt;/P&gt;&lt;P&gt;  count TYPE i,&lt;/P&gt;&lt;P&gt;  index TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  node ?= document.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK NOT node IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;  WRITE:/.&lt;/P&gt;&lt;P&gt;  WRITE: /' DOM-TREE'.&lt;/P&gt;&lt;P&gt;  WRITE: /.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF node IS INITIAL.&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create a node iterator&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  iterator = node-&amp;gt;create_iterator( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get current node&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  node = iterator-&amp;gt;get_next( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Loop over all nodes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  WHILE NOT node IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    indent = node-&amp;gt;get_height( ) * 2.&lt;/P&gt;&lt;P&gt;    indent = indent + 20.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CASE node-&amp;gt;get_type( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      WHEN if_ixml_node=&amp;gt;co_node_element.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;element node&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        name = node-&amp;gt;get_name( ).&lt;/P&gt;&lt;P&gt;        nodemap = node-&amp;gt;get_attributes( ).&lt;/P&gt;&lt;P&gt;*WRITE: / 'ELEMENT :'.&lt;/P&gt;&lt;P&gt;*WRITE: AT indent name COLOR COL_POSITIVE INVERSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF NOT nodemap IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;attributes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          count = nodemap-&amp;gt;get_length( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          DO count TIMES.&lt;/P&gt;&lt;P&gt;            index = sy-index - 1.&lt;/P&gt;&lt;P&gt;            attr = nodemap-&amp;gt;get_item( index ).&lt;/P&gt;&lt;P&gt;            name = attr-&amp;gt;get_name( ).&lt;/P&gt;&lt;P&gt;            prefix = attr-&amp;gt;get_namespace_prefix( ).&lt;/P&gt;&lt;P&gt;            value = attr-&amp;gt;get_value( ).&lt;/P&gt;&lt;P&gt;*WRITE: / 'ATTRIBUTE:'.&lt;/P&gt;&lt;P&gt;*WRITE: AT indent name COLOR COL_HEADING INVERSE, '=',&lt;/P&gt;&lt;P&gt;*value COLOR COL_TOTAL INVERSE.&lt;/P&gt;&lt;P&gt;          ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      WHEN if_ixml_node=&amp;gt;co_node_text OR&lt;/P&gt;&lt;P&gt;      if_ixml_node=&amp;gt;co_node_cdata_section.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text node&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        &amp;lt;b&amp;gt;value = node-&amp;gt;get_value( ).&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;WRITE: / 'VALUE :', value.&lt;/P&gt;&lt;P&gt;*WRITE: AT indent value COLOR COL_GROUP INVERSE.&lt;/P&gt;&lt;P&gt;     concatenate i_final-value value into i_final-value separated by'|'.&lt;/P&gt;&lt;P&gt;        append i_final.&lt;/P&gt;&lt;P&gt;        clear i_final.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDCASE.&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;Advance to next node&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    node = iterator-&amp;gt;get_next( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDWHILE.&lt;/P&gt;&lt;P&gt;  loop at i_final.&lt;/P&gt;&lt;P&gt;    split i_final-value at '|' into table it_final.&lt;/P&gt;&lt;P&gt;    insert lines of it_final into table it_final1.&lt;/P&gt;&lt;P&gt;    delete it_final1 where finaltext = space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 08 Aug 2006 11:49:51 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/parsing-xml-file/m-p/1487647#M227328</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-08-08T11:49:51Z</dc:date>
    </item>
    <item>
      <title>Re: parsing XML file</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/parsing-xml-file/m-p/1487648#M227329</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;1. declare the value field as type string.&lt;/P&gt;&lt;P&gt;2. if interested check the following link where i have given a code sample using standard FM to parse XML file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="1703695"&gt;&lt;/A&gt; (check the answer by me, the last one)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Raja&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 08 Aug 2006 12:31:21 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/parsing-xml-file/m-p/1487648#M227329</guid>
      <dc:creator>athavanraja</dc:creator>
      <dc:date>2006-08-08T12:31:21Z</dc:date>
    </item>
    <item>
      <title>Re: parsing XML file</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/parsing-xml-file/m-p/1487649#M227330</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Raja,&lt;/P&gt;&lt;P&gt;Than you very much.Points are given.&lt;/P&gt;&lt;P&gt;But can you pls tell me in your pgm which is there in the link..in which internal table the data is storing finally..&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 08 Aug 2006 13:08:44 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/parsing-xml-file/m-p/1487649#M227330</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-08-08T13:08:44Z</dc:date>
    </item>
    <item>
      <title>Re: parsing XML file</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/parsing-xml-file/m-p/1487650#M227331</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;lt;b&amp;gt;result_xml&amp;lt;/b&amp;gt; table will hold all the element values&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Raja&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 Aug 2006 09:22:01 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/parsing-xml-file/m-p/1487650#M227331</guid>
      <dc:creator>athavanraja</dc:creator>
      <dc:date>2006-08-09T09:22:01Z</dc:date>
    </item>
  </channel>
</rss>

