<?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 from internal table to customtable in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/from-internal-table-to-customtable/m-p/3284135#M785493</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi guyz,&lt;/P&gt;&lt;P&gt;i've read the data from the xml into internal table...now , how can i pass the data from the internal table to  custom table into respective fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*************************************************&lt;/P&gt;&lt;P&gt;Program&lt;/P&gt;&lt;P&gt;*************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT zmlintosap .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS cl_ixml DEFINITION LOAD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS: ixml.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_xml_line,&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;BEGIN OF tsfixml,&lt;/P&gt;&lt;P&gt;data(1024) TYPE c,&lt;/P&gt;&lt;P&gt;END OF tsfixml.&lt;/P&gt;&lt;P&gt;&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: 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,&lt;/P&gt;&lt;P&gt;l_xml_line TYPE t_xml_line,&lt;/P&gt;&lt;P&gt;l_xml_table_size TYPE i.&lt;/P&gt;&lt;P&gt;DATA: l_filename TYPE string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PARAMETERS: pa_file TYPE char1024 DEFAULT&lt;/P&gt;&lt;P&gt;'C:\indigolighthouse20080107092755183578amz.xml'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Validation of XML file: Only DTD included in xml document is&lt;/P&gt;&lt;P&gt;*supported&lt;/P&gt;&lt;P&gt;PARAMETERS: pa_val TYPE char1 AS CHECKBOX.&lt;/P&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;&lt;/P&gt;&lt;P&gt;*Creating the main iXML factory&lt;/P&gt;&lt;P&gt;  l_ixml = cl_ixml=&amp;gt;create( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Creating a stream factory&lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;*wrap the table containing the file into a stream&lt;/P&gt;&lt;P&gt;  l_istream = l_streamfactory-&amp;gt;create_istream_itable( table =&lt;/P&gt;&lt;P&gt;  l_xml_table&lt;/P&gt;&lt;P&gt;  size =&lt;/P&gt;&lt;P&gt;  l_xml_table_size ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Creating a document&lt;/P&gt;&lt;P&gt;  l_document = l_ixml-&amp;gt;create_document( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Create a Parser&lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;*Validate a document&lt;/P&gt;&lt;P&gt;*if pa_val eq 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*l_parser-&amp;gt;set_validating ( mode = if_ixml_parser=&amp;gt;co_validate ).&lt;/P&gt;&lt;P&gt;*endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Parse the stream&lt;/P&gt;&lt;P&gt;  IF l_parser-&amp;gt;parse( ) NE 0.&lt;/P&gt;&lt;P&gt;    IF l_parser-&amp;gt;num_errors( ) NE 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;P&gt;&lt;/P&gt;&lt;P&gt;*Process the document&lt;/P&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;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;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; Form get_xml_table&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;FORM get_xml_table CHANGING l_xml_table_size TYPE i&lt;/P&gt;&lt;P&gt;l_xml_table TYPE standard table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Local variable declaration&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;&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;P&gt;&lt;/P&gt;&lt;P&gt;*upload a file from the client's workstation&lt;/P&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;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;**&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;**&amp;amp; Form process_dom&lt;/P&gt;&lt;P&gt;**&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&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;P&gt;  value TYPE string,&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;  DATA: name2 TYPE string,&lt;/P&gt;&lt;P&gt;  name_root TYPE string,&lt;/P&gt;&lt;P&gt;  node_parent TYPE REF TO if_ixml_node,&lt;/P&gt;&lt;P&gt;  node_root TYPE REF TO if_ixml_node,&lt;/P&gt;&lt;P&gt;  num_children 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;  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;P&gt;&lt;/P&gt;&lt;P&gt;*create a node iterator&lt;/P&gt;&lt;P&gt;  iterator = node-&amp;gt;create_iterator( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*get current node&lt;/P&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;*loop over all nodes&lt;/P&gt;&lt;P&gt;  WHILE NOT node IS INITIAL.&lt;/P&gt;&lt;P&gt;    indent = node-&amp;gt;get_height( ) * 2.&lt;/P&gt;&lt;P&gt;    indent = indent + 10.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    num_children = node-&amp;gt;num_children( ).&lt;/P&gt;&lt;P&gt;    CASE node-&amp;gt;get_type( ).&lt;/P&gt;&lt;P&gt;      WHEN if_ixml_node=&amp;gt;co_node_element.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*element node&lt;/P&gt;&lt;P&gt;        name = node-&amp;gt;get_name( ).&lt;/P&gt;&lt;P&gt;        WRITE:/ 'name:',name COLOR 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        nodemap = node-&amp;gt;get_attributes( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        node_root = node-&amp;gt;get_root( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        name_root = node_root-&amp;gt;get_name( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WRITE: / 'ELEMENT :'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WRITE: AT indent name COLOR  2. "COL_POSITIVE INVERSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WRITE: 'NUM_CHILDREN:', num_children.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WRITE: 'ROOT:', name_root.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        node_parent = node-&amp;gt;get_parent( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        name2 = node_parent-&amp;gt;get_name( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WRITE: 'NAME2: ' , name2 COLOR 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF NOT nodemap IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*attributes&lt;/P&gt;&lt;P&gt;          count = nodemap-&amp;gt;get_length( ).&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;&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 7. "COL_TOTAL INVERSE.&lt;/P&gt;&lt;P&gt;          ENDDO.&lt;/P&gt;&lt;P&gt;        ENDIF.&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;P&gt;*text node&lt;/P&gt;&lt;P&gt;        value = node-&amp;gt;get_value( ).&lt;/P&gt;&lt;P&gt;        WRITE: / 'VALUE :' COLOR 6.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        node_parent = node-&amp;gt;get_parent( ).&lt;/P&gt;&lt;P&gt;        WRITE: AT indent value COLOR 6." COL_GROUP INVERSE.&lt;/P&gt;&lt;P&gt;        name2 = node_parent-&amp;gt;get_name( ).&lt;/P&gt;&lt;P&gt;        WRITE: 'NAME2: ' , name2 COLOR 3.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*advance to next node&lt;/P&gt;&lt;P&gt;    node = iterator-&amp;gt;get_next( ).&lt;/P&gt;&lt;P&gt;  ENDWHILE.&lt;/P&gt;&lt;P&gt;ENDFORM. "process_dom&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Many Thanks&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 16 Jan 2008 12:00:20 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-01-16T12:00:20Z</dc:date>
    <item>
      <title>from internal table to customtable</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/from-internal-table-to-customtable/m-p/3284135#M785493</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi guyz,&lt;/P&gt;&lt;P&gt;i've read the data from the xml into internal table...now , how can i pass the data from the internal table to  custom table into respective fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*************************************************&lt;/P&gt;&lt;P&gt;Program&lt;/P&gt;&lt;P&gt;*************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT zmlintosap .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS cl_ixml DEFINITION LOAD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS: ixml.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_xml_line,&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;BEGIN OF tsfixml,&lt;/P&gt;&lt;P&gt;data(1024) TYPE c,&lt;/P&gt;&lt;P&gt;END OF tsfixml.&lt;/P&gt;&lt;P&gt;&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: 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,&lt;/P&gt;&lt;P&gt;l_xml_line TYPE t_xml_line,&lt;/P&gt;&lt;P&gt;l_xml_table_size TYPE i.&lt;/P&gt;&lt;P&gt;DATA: l_filename TYPE string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PARAMETERS: pa_file TYPE char1024 DEFAULT&lt;/P&gt;&lt;P&gt;'C:\indigolighthouse20080107092755183578amz.xml'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Validation of XML file: Only DTD included in xml document is&lt;/P&gt;&lt;P&gt;*supported&lt;/P&gt;&lt;P&gt;PARAMETERS: pa_val TYPE char1 AS CHECKBOX.&lt;/P&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;&lt;/P&gt;&lt;P&gt;*Creating the main iXML factory&lt;/P&gt;&lt;P&gt;  l_ixml = cl_ixml=&amp;gt;create( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Creating a stream factory&lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;*wrap the table containing the file into a stream&lt;/P&gt;&lt;P&gt;  l_istream = l_streamfactory-&amp;gt;create_istream_itable( table =&lt;/P&gt;&lt;P&gt;  l_xml_table&lt;/P&gt;&lt;P&gt;  size =&lt;/P&gt;&lt;P&gt;  l_xml_table_size ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Creating a document&lt;/P&gt;&lt;P&gt;  l_document = l_ixml-&amp;gt;create_document( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Create a Parser&lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;*Validate a document&lt;/P&gt;&lt;P&gt;*if pa_val eq 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*l_parser-&amp;gt;set_validating ( mode = if_ixml_parser=&amp;gt;co_validate ).&lt;/P&gt;&lt;P&gt;*endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Parse the stream&lt;/P&gt;&lt;P&gt;  IF l_parser-&amp;gt;parse( ) NE 0.&lt;/P&gt;&lt;P&gt;    IF l_parser-&amp;gt;num_errors( ) NE 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;P&gt;&lt;/P&gt;&lt;P&gt;*Process the document&lt;/P&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;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;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; Form get_xml_table&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;FORM get_xml_table CHANGING l_xml_table_size TYPE i&lt;/P&gt;&lt;P&gt;l_xml_table TYPE standard table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Local variable declaration&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;&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;P&gt;&lt;/P&gt;&lt;P&gt;*upload a file from the client's workstation&lt;/P&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;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;**&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;**&amp;amp; Form process_dom&lt;/P&gt;&lt;P&gt;**&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&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;P&gt;  value TYPE string,&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;  DATA: name2 TYPE string,&lt;/P&gt;&lt;P&gt;  name_root TYPE string,&lt;/P&gt;&lt;P&gt;  node_parent TYPE REF TO if_ixml_node,&lt;/P&gt;&lt;P&gt;  node_root TYPE REF TO if_ixml_node,&lt;/P&gt;&lt;P&gt;  num_children 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;  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;P&gt;&lt;/P&gt;&lt;P&gt;*create a node iterator&lt;/P&gt;&lt;P&gt;  iterator = node-&amp;gt;create_iterator( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*get current node&lt;/P&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;*loop over all nodes&lt;/P&gt;&lt;P&gt;  WHILE NOT node IS INITIAL.&lt;/P&gt;&lt;P&gt;    indent = node-&amp;gt;get_height( ) * 2.&lt;/P&gt;&lt;P&gt;    indent = indent + 10.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    num_children = node-&amp;gt;num_children( ).&lt;/P&gt;&lt;P&gt;    CASE node-&amp;gt;get_type( ).&lt;/P&gt;&lt;P&gt;      WHEN if_ixml_node=&amp;gt;co_node_element.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*element node&lt;/P&gt;&lt;P&gt;        name = node-&amp;gt;get_name( ).&lt;/P&gt;&lt;P&gt;        WRITE:/ 'name:',name COLOR 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        nodemap = node-&amp;gt;get_attributes( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        node_root = node-&amp;gt;get_root( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        name_root = node_root-&amp;gt;get_name( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WRITE: / 'ELEMENT :'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WRITE: AT indent name COLOR  2. "COL_POSITIVE INVERSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WRITE: 'NUM_CHILDREN:', num_children.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WRITE: 'ROOT:', name_root.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        node_parent = node-&amp;gt;get_parent( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        name2 = node_parent-&amp;gt;get_name( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WRITE: 'NAME2: ' , name2 COLOR 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF NOT nodemap IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*attributes&lt;/P&gt;&lt;P&gt;          count = nodemap-&amp;gt;get_length( ).&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;&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 7. "COL_TOTAL INVERSE.&lt;/P&gt;&lt;P&gt;          ENDDO.&lt;/P&gt;&lt;P&gt;        ENDIF.&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;P&gt;*text node&lt;/P&gt;&lt;P&gt;        value = node-&amp;gt;get_value( ).&lt;/P&gt;&lt;P&gt;        WRITE: / 'VALUE :' COLOR 6.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        node_parent = node-&amp;gt;get_parent( ).&lt;/P&gt;&lt;P&gt;        WRITE: AT indent value COLOR 6." COL_GROUP INVERSE.&lt;/P&gt;&lt;P&gt;        name2 = node_parent-&amp;gt;get_name( ).&lt;/P&gt;&lt;P&gt;        WRITE: 'NAME2: ' , name2 COLOR 3.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*advance to next node&lt;/P&gt;&lt;P&gt;    node = iterator-&amp;gt;get_next( ).&lt;/P&gt;&lt;P&gt;  ENDWHILE.&lt;/P&gt;&lt;P&gt;ENDFORM. "process_dom&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Many Thanks&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 16 Jan 2008 12:00:20 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/from-internal-table-to-customtable/m-p/3284135#M785493</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-01-16T12:00:20Z</dc:date>
    </item>
    <item>
      <title>Re: from internal table to customtable</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/from-internal-table-to-customtable/m-p/3284136#M785494</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If the table is empty, then use&lt;/P&gt;&lt;P&gt;INSERT ZTABLE FROM TABLE ITAB&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if u have some data in table , then use&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MODIFY ZTABLE FROM TABLE ITAB&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 16 Jan 2008 12:05:57 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/from-internal-table-to-customtable/m-p/3284136#M785494</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-01-16T12:05:57Z</dc:date>
    </item>
    <item>
      <title>Re: from internal table to customtable</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/from-internal-table-to-customtable/m-p/3284137#M785495</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;HI Vasu,&lt;/P&gt;&lt;P&gt;Thanks For ya reply..but all i wanna know is do i have to make any changes in the code above....&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 16 Jan 2008 12:40:28 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/from-internal-table-to-customtable/m-p/3284137#M785495</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-01-16T12:40:28Z</dc:date>
    </item>
  </channel>
</rss>

