<?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: upload mass data from file during testing the function module in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/upload-mass-data-from-file-during-testing-the-function-module/m-p/1661323#M293086</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi Munish,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;the following code is used to get the large records from XML file, and print the collected data on to a list.. (a test program!!!) .&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;hope this would be helpful...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS: ixml.&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt; CLASS cl_ixml DEFINITION LOAD.&lt;/P&gt;&lt;P&gt;*-- Folder selection Declarations&lt;/P&gt;&lt;P&gt;  PARAMETER: ofile TYPE file_table-filename OBLIGATORY.&lt;/P&gt;&lt;P&gt;  DATA: directory     TYPE string.&lt;/P&gt;&lt;P&gt;  DATA: window_title  TYPE string.&lt;/P&gt;&lt;P&gt;  DATA: sel_folder    TYPE string.&lt;/P&gt;&lt;P&gt;  DATA: file_path     LIKE rlgrap-filename.&lt;/P&gt;&lt;P&gt;  DATA: wa_file_name  TYPE file_name.&lt;/P&gt;&lt;P&gt;  DATA: file_table    TYPE STANDARD TABLE OF file_name.&lt;/P&gt;&lt;P&gt;  DATA: count_files   TYPE i.&lt;/P&gt;&lt;P&gt;*-- iXML Declarations&lt;/P&gt;&lt;P&gt;  DATA: element         TYPE REF TO if_ixml_element.&lt;/P&gt;&lt;P&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; selection-screen - value reques for filename&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;AT SELECTION-SCREEN ON VALUE-REQUEST FOR ofile.&lt;/P&gt;&lt;P&gt;  MOVE 'Destination Data File'(002) TO window_title.&lt;/P&gt;&lt;P&gt;  CALL METHOD cl_gui_frontend_services=&amp;gt;directory_browse&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      window_title    = window_title&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     INITIAL_FOLDER  =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      selected_folder = sel_folder&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;     CNTL_ERROR      = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     ERROR_NO_GUI    = 2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     others          = 3          .&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  directory = sel_folder.&lt;/P&gt;&lt;P&gt;  ofile = sel_folder.&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;  directory = ofile.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    CALL METHOD cl_gui_frontend_services=&amp;gt;directory_list_files&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        directory                   = directory&lt;/P&gt;&lt;P&gt;        filter                      = '*.xml'&lt;/P&gt;&lt;P&gt;        files_only                  = 'X'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DIRECTORIES_ONLY            =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CHANGING&lt;/P&gt;&lt;P&gt;        file_table                  = file_table&lt;/P&gt;&lt;P&gt;        count                       = count_files .&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    LOOP AT file_table INTO wa_file_name.&lt;/P&gt;&lt;P&gt;      CONCATENATE directory  '' wa_file_name INTO file_path.&lt;/P&gt;&lt;P&gt;      PERFORM upload_parse USING file_path.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  upload_parse&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/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_FILE_PATH  text&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;FORM upload_parse USING    p_file_path LIKE rlgrap-filename.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: g_ixml          TYPE REF TO if_ixml.&lt;/P&gt;&lt;P&gt;  DATA: streamfactory   TYPE REF TO if_ixml_stream_factory.&lt;/P&gt;&lt;P&gt;  DATA: document        TYPE REF TO if_ixml_document.&lt;/P&gt;&lt;P&gt;  DATA: pnode           TYPE REF TO if_ixml_node.&lt;/P&gt;&lt;P&gt;  DATA: parser          TYPE REF TO if_ixml_parser.&lt;/P&gt;&lt;P&gt;  DATA: xml_doc         TYPE string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TYPES : BEGIN OF xml_line,&lt;/P&gt;&lt;P&gt;              data(256) TYPE x,&lt;/P&gt;&lt;P&gt;          END OF xml_line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: xml_table      TYPE TABLE OF xml_line,&lt;/P&gt;&lt;P&gt;        istream        TYPE REF TO if_ixml_istream,&lt;/P&gt;&lt;P&gt;        xml_table_size TYPE i.&lt;/P&gt;&lt;P&gt;&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;        position   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;HR originaltext="-----------------------------------" /&gt;&lt;P&gt;  DATA:    event           TYPE REF TO if_ixml_event,&lt;/P&gt;&lt;P&gt;           type            TYPE i,&lt;/P&gt;&lt;P&gt;           node            TYPE REF TO if_ixml_node,&lt;/P&gt;&lt;P&gt;           value           TYPE string,&lt;/P&gt;&lt;P&gt;           name            TYPE string,&lt;/P&gt;&lt;P&gt;           indent          TYPE i.&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;HR originaltext="-----------------------------------" /&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 FUNCTION 'WS_UPLOAD'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            filename   = p_file_path&lt;/P&gt;&lt;P&gt;            filetype   = 'BIN'&lt;/P&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;            filelength = xml_table_size&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            data_tab   = xml_table&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            OTHERS     = 11.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- create the main factory&lt;/P&gt;&lt;P&gt;  g_ixml = cl_ixml=&amp;gt;create( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- create the initial document&lt;/P&gt;&lt;P&gt;  document = g_ixml-&amp;gt;create_document( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- create the stream factory&lt;/P&gt;&lt;P&gt;  streamfactory = g_ixml-&amp;gt;create_stream_factory( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- create an input stream for the table&lt;/P&gt;&lt;P&gt;  istream = streamfactory-&amp;gt;create_istream_itable(&lt;/P&gt;&lt;P&gt;                           table = xml_table&lt;/P&gt;&lt;P&gt;                           size = xml_table_size ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- create the parser&lt;/P&gt;&lt;P&gt;  parser = g_ixml-&amp;gt;create_parser( stream_factory = streamfactory&lt;/P&gt;&lt;P&gt;                                  istream        = istream&lt;/P&gt;&lt;P&gt;                                  document       = document ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*!! subscribe events&lt;/P&gt;&lt;P&gt;*!!&lt;/P&gt;&lt;P&gt;  DATA: events TYPE i.&lt;/P&gt;&lt;P&gt;  ADD if_ixml_event=&amp;gt;co_event_element_pre    TO events.&lt;/P&gt;&lt;P&gt;  ADD if_ixml_event=&amp;gt;co_event_attribute_post TO events.&lt;/P&gt;&lt;P&gt;  ADD if_ixml_event=&amp;gt;co_event_text_post      TO events.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;... other events&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; parser-&amp;gt;set_event_subscription( events = events ).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD parser-&amp;gt;set_event_subscription&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      events = events&lt;/P&gt;&lt;P&gt;      .&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: /' EVENTS'.&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;*!! event based parsing&lt;/P&gt;&lt;P&gt;  DO.&lt;/P&gt;&lt;P&gt;*! read next event&lt;/P&gt;&lt;P&gt;    event = parser-&amp;gt;parse_event( ).&lt;/P&gt;&lt;P&gt;    IF event IS INITIAL. EXIT. ENDIF.&lt;/P&gt;&lt;P&gt;*! get event type&lt;/P&gt;&lt;P&gt;    type   = event-&amp;gt;get_type( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    node   = event-&amp;gt;get_node( ).&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;*! evaluate event type&lt;/P&gt;&lt;P&gt;    CASE type.&lt;/P&gt;&lt;P&gt;      WHEN if_ixml_event=&amp;gt;co_event_element_pre.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    element event&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        name    = node-&amp;gt;get_name( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CASE name.&lt;/P&gt;&lt;P&gt;          WHEN 'Title' OR 'TargetAudience' OR 'Prerequisites' OR&lt;/P&gt;&lt;P&gt;              'RequiredKnowledge' OR 'Goals' OR 'KTPContent' OR 'Notes'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            WRITE: / 'ELEMENT PRE :'.&lt;/P&gt;&lt;P&gt;            WRITE: AT indent name COLOR COL_POSITIVE INVERSE.&lt;/P&gt;&lt;P&gt;        ENDCASE.&lt;/P&gt;&lt;P&gt;      WHEN if_ixml_event=&amp;gt;co_event_attribute_post.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    attr event&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        name   = node-&amp;gt;get_name( ).&lt;/P&gt;&lt;P&gt;        value  = node-&amp;gt;get_value( ).&lt;/P&gt;&lt;P&gt;        WRITE: / 'ATTR    POST:'.&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;      WHEN if_ixml_event=&amp;gt;co_event_text_post OR&lt;/P&gt;&lt;P&gt;           if_ixml_event=&amp;gt;co_event_cdata_section_post.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    text event&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        value  = node-&amp;gt;get_value( ).&lt;/P&gt;&lt;P&gt;          WRITE: / 'TEXT    POST:'.&lt;/P&gt;&lt;P&gt;          WRITE: AT indent value COLOR COL_GROUP INVERSE.&lt;/P&gt;&lt;P&gt;      WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    other event&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        WRITE: / 'EVENT-TYPE    :'.&lt;/P&gt;&lt;P&gt;        WRITE: AT indent type COLOR COL_NORMAL INVERSE.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;  ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- parse the stream&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; IF parser-&amp;gt;parse( ) NE 0.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF parser-&amp;gt;num_errors( ) NE 0.&lt;/P&gt;&lt;P&gt;    count = 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 = parser-&amp;gt;get_error( index = index ).&lt;/P&gt;&lt;P&gt;      position = parseerror-&amp;gt;get_line( ).&lt;/P&gt;&lt;P&gt;      WRITE: 'line: ', position.&lt;/P&gt;&lt;P&gt;      position = parseerror-&amp;gt;get_column( ).&lt;/P&gt;&lt;P&gt;      WRITE: 'column: ', position.&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*-- just clear the stream&lt;/P&gt;&lt;P&gt;  CALL METHOD istream-&amp;gt;close( ).&lt;/P&gt;&lt;P&gt;  CLEAR istream.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  element = document-&amp;gt;get_root_element( ).&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; pnode = document.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM print_node USING pnode.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; WRITE:/ sy-uline.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " upload_parse&lt;/P&gt;&lt;P&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 print_node                                               *&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;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;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM print_node USING value(pnode) TYPE REF TO if_ixml_node.&lt;/P&gt;&lt;P&gt;  DATA: indent      TYPE i.&lt;/P&gt;&lt;P&gt;  DATA: ptext       TYPE REF TO if_ixml_text,&lt;/P&gt;&lt;P&gt;        attributes  TYPE REF TO if_ixml_named_node_map.&lt;/P&gt;&lt;P&gt;  DATA: node_string      TYPE string,&lt;/P&gt;&lt;P&gt;        child       TYPE REF TO if_ixml_node,&lt;/P&gt;&lt;P&gt;        att_count   TYPE i,&lt;/P&gt;&lt;P&gt;        att_name    TYPE string,&lt;/P&gt;&lt;P&gt;        att_value   TYPE string,&lt;/P&gt;&lt;P&gt;        att_index   TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  indent  = pnode-&amp;gt;get_height( ) * 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE pnode-&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;*-- get the node name&lt;/P&gt;&lt;P&gt;      node_string = pnode-&amp;gt;get_name( ).&lt;/P&gt;&lt;P&gt;      CASE node_string.&lt;/P&gt;&lt;P&gt;        WHEN 'Title' OR 'TargetAudience' OR 'Prerequisites' OR&lt;/P&gt;&lt;P&gt;              'RequiredKnowledge' OR 'Goals' OR 'KTPContent' OR 'Notes'.&lt;/P&gt;&lt;P&gt;          WRITE: AT /indent node_string, ':'.&lt;/P&gt;&lt;P&gt;*-- Get the KTPDescription attribute names and values..&lt;/P&gt;&lt;P&gt;        WHEN 'KTPDescription'.&lt;/P&gt;&lt;P&gt;          attributes = element-&amp;gt;get_attributes( ).&lt;/P&gt;&lt;P&gt;          IF NOT attributes IS INITIAL.&lt;/P&gt;&lt;P&gt;            att_count = attributes-&amp;gt;get_length( ).&lt;/P&gt;&lt;P&gt;            DO att_count TIMES.&lt;/P&gt;&lt;P&gt;              att_index  = sy-index - 1.&lt;/P&gt;&lt;P&gt;              child   = attributes-&amp;gt;get_item( att_index ).&lt;/P&gt;&lt;P&gt;              att_name   = child-&amp;gt;get_name( ).&lt;/P&gt;&lt;P&gt;              att_value  = child-&amp;gt;get_value( ).&lt;/P&gt;&lt;P&gt;              WRITE: / att_name,':', att_value.&lt;/P&gt;&lt;P&gt;              IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;              ENDIF.&lt;/P&gt;&lt;P&gt;            ENDDO.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;*-- Get node values&lt;/P&gt;&lt;P&gt;    WHEN if_ixml_node=&amp;gt;co_node_text.&lt;/P&gt;&lt;P&gt;      ptext ?= pnode-&amp;gt;query_interface( ixml_iid_text ).&lt;/P&gt;&lt;P&gt;      IF ptext-&amp;gt;ws_only( ) IS INITIAL.&lt;/P&gt;&lt;P&gt;        node_string = pnode-&amp;gt;get_value( ).&lt;/P&gt;&lt;P&gt;        REPLACE '-Auml-' WITH 'Ä' INTO node_string.&lt;/P&gt;&lt;P&gt;        REPLACE '-auml-' WITH 'ä' INTO node_string.&lt;/P&gt;&lt;P&gt;        REPLACE '-Ouml-' WITH 'Ö' INTO node_string.&lt;/P&gt;&lt;P&gt;        REPLACE '-ouml-' WITH 'ö' INTO node_string.&lt;/P&gt;&lt;P&gt;        REPLACE '-Uuml-' WITH 'Ü' INTO node_string.&lt;/P&gt;&lt;P&gt;        REPLACE '-uuml-' WITH 'ü' INTO node_string.&lt;/P&gt;&lt;P&gt;        REPLACE '-szlig-' WITH 'ß' INTO node_string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WRITE: AT /indent node_string.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  pnode = pnode-&amp;gt;get_first_child( ).&lt;/P&gt;&lt;P&gt;  WHILE NOT pnode IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   PERFORM print_node USING pnode.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   pnode = pnode-&amp;gt;get_next( ).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDWHILE.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "print_node&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 04 Nov 2006 14:05:11 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2006-11-04T14:05:11Z</dc:date>
    <item>
      <title>upload mass data from file during testing the function module</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/upload-mass-data-from-file-during-testing-the-function-module/m-p/1661322#M293085</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi everyone,&lt;/P&gt;&lt;P&gt;i need to upload the data in XML format during testing of my customer(z) functin module,&lt;/P&gt;&lt;P&gt;please anyone help me out in solving this problem ASAP as this is a very urgent requirement .&lt;/P&gt;&lt;P&gt;Thanks in Advance!!&lt;/P&gt;&lt;P&gt;Munish&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 04 Nov 2006 11:11:48 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/upload-mass-data-from-file-during-testing-the-function-module/m-p/1661322#M293085</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-11-04T11:11:48Z</dc:date>
    </item>
    <item>
      <title>Re: upload mass data from file during testing the function module</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/upload-mass-data-from-file-during-testing-the-function-module/m-p/1661323#M293086</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi Munish,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;the following code is used to get the large records from XML file, and print the collected data on to a list.. (a test program!!!) .&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;hope this would be helpful...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS: ixml.&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt; CLASS cl_ixml DEFINITION LOAD.&lt;/P&gt;&lt;P&gt;*-- Folder selection Declarations&lt;/P&gt;&lt;P&gt;  PARAMETER: ofile TYPE file_table-filename OBLIGATORY.&lt;/P&gt;&lt;P&gt;  DATA: directory     TYPE string.&lt;/P&gt;&lt;P&gt;  DATA: window_title  TYPE string.&lt;/P&gt;&lt;P&gt;  DATA: sel_folder    TYPE string.&lt;/P&gt;&lt;P&gt;  DATA: file_path     LIKE rlgrap-filename.&lt;/P&gt;&lt;P&gt;  DATA: wa_file_name  TYPE file_name.&lt;/P&gt;&lt;P&gt;  DATA: file_table    TYPE STANDARD TABLE OF file_name.&lt;/P&gt;&lt;P&gt;  DATA: count_files   TYPE i.&lt;/P&gt;&lt;P&gt;*-- iXML Declarations&lt;/P&gt;&lt;P&gt;  DATA: element         TYPE REF TO if_ixml_element.&lt;/P&gt;&lt;P&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; selection-screen - value reques for filename&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;AT SELECTION-SCREEN ON VALUE-REQUEST FOR ofile.&lt;/P&gt;&lt;P&gt;  MOVE 'Destination Data File'(002) TO window_title.&lt;/P&gt;&lt;P&gt;  CALL METHOD cl_gui_frontend_services=&amp;gt;directory_browse&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      window_title    = window_title&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     INITIAL_FOLDER  =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      selected_folder = sel_folder&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;     CNTL_ERROR      = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     ERROR_NO_GUI    = 2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     others          = 3          .&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  directory = sel_folder.&lt;/P&gt;&lt;P&gt;  ofile = sel_folder.&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;  directory = ofile.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    CALL METHOD cl_gui_frontend_services=&amp;gt;directory_list_files&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        directory                   = directory&lt;/P&gt;&lt;P&gt;        filter                      = '*.xml'&lt;/P&gt;&lt;P&gt;        files_only                  = 'X'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DIRECTORIES_ONLY            =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CHANGING&lt;/P&gt;&lt;P&gt;        file_table                  = file_table&lt;/P&gt;&lt;P&gt;        count                       = count_files .&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    LOOP AT file_table INTO wa_file_name.&lt;/P&gt;&lt;P&gt;      CONCATENATE directory  '' wa_file_name INTO file_path.&lt;/P&gt;&lt;P&gt;      PERFORM upload_parse USING file_path.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  upload_parse&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/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_FILE_PATH  text&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;FORM upload_parse USING    p_file_path LIKE rlgrap-filename.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: g_ixml          TYPE REF TO if_ixml.&lt;/P&gt;&lt;P&gt;  DATA: streamfactory   TYPE REF TO if_ixml_stream_factory.&lt;/P&gt;&lt;P&gt;  DATA: document        TYPE REF TO if_ixml_document.&lt;/P&gt;&lt;P&gt;  DATA: pnode           TYPE REF TO if_ixml_node.&lt;/P&gt;&lt;P&gt;  DATA: parser          TYPE REF TO if_ixml_parser.&lt;/P&gt;&lt;P&gt;  DATA: xml_doc         TYPE string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TYPES : BEGIN OF xml_line,&lt;/P&gt;&lt;P&gt;              data(256) TYPE x,&lt;/P&gt;&lt;P&gt;          END OF xml_line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: xml_table      TYPE TABLE OF xml_line,&lt;/P&gt;&lt;P&gt;        istream        TYPE REF TO if_ixml_istream,&lt;/P&gt;&lt;P&gt;        xml_table_size TYPE i.&lt;/P&gt;&lt;P&gt;&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;        position   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;HR originaltext="-----------------------------------" /&gt;&lt;P&gt;  DATA:    event           TYPE REF TO if_ixml_event,&lt;/P&gt;&lt;P&gt;           type            TYPE i,&lt;/P&gt;&lt;P&gt;           node            TYPE REF TO if_ixml_node,&lt;/P&gt;&lt;P&gt;           value           TYPE string,&lt;/P&gt;&lt;P&gt;           name            TYPE string,&lt;/P&gt;&lt;P&gt;           indent          TYPE i.&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;HR originaltext="-----------------------------------" /&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 FUNCTION 'WS_UPLOAD'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            filename   = p_file_path&lt;/P&gt;&lt;P&gt;            filetype   = 'BIN'&lt;/P&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;            filelength = xml_table_size&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            data_tab   = xml_table&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            OTHERS     = 11.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- create the main factory&lt;/P&gt;&lt;P&gt;  g_ixml = cl_ixml=&amp;gt;create( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- create the initial document&lt;/P&gt;&lt;P&gt;  document = g_ixml-&amp;gt;create_document( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- create the stream factory&lt;/P&gt;&lt;P&gt;  streamfactory = g_ixml-&amp;gt;create_stream_factory( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- create an input stream for the table&lt;/P&gt;&lt;P&gt;  istream = streamfactory-&amp;gt;create_istream_itable(&lt;/P&gt;&lt;P&gt;                           table = xml_table&lt;/P&gt;&lt;P&gt;                           size = xml_table_size ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- create the parser&lt;/P&gt;&lt;P&gt;  parser = g_ixml-&amp;gt;create_parser( stream_factory = streamfactory&lt;/P&gt;&lt;P&gt;                                  istream        = istream&lt;/P&gt;&lt;P&gt;                                  document       = document ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*!! subscribe events&lt;/P&gt;&lt;P&gt;*!!&lt;/P&gt;&lt;P&gt;  DATA: events TYPE i.&lt;/P&gt;&lt;P&gt;  ADD if_ixml_event=&amp;gt;co_event_element_pre    TO events.&lt;/P&gt;&lt;P&gt;  ADD if_ixml_event=&amp;gt;co_event_attribute_post TO events.&lt;/P&gt;&lt;P&gt;  ADD if_ixml_event=&amp;gt;co_event_text_post      TO events.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;... other events&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; parser-&amp;gt;set_event_subscription( events = events ).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD parser-&amp;gt;set_event_subscription&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      events = events&lt;/P&gt;&lt;P&gt;      .&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: /' EVENTS'.&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;*!! event based parsing&lt;/P&gt;&lt;P&gt;  DO.&lt;/P&gt;&lt;P&gt;*! read next event&lt;/P&gt;&lt;P&gt;    event = parser-&amp;gt;parse_event( ).&lt;/P&gt;&lt;P&gt;    IF event IS INITIAL. EXIT. ENDIF.&lt;/P&gt;&lt;P&gt;*! get event type&lt;/P&gt;&lt;P&gt;    type   = event-&amp;gt;get_type( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    node   = event-&amp;gt;get_node( ).&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;*! evaluate event type&lt;/P&gt;&lt;P&gt;    CASE type.&lt;/P&gt;&lt;P&gt;      WHEN if_ixml_event=&amp;gt;co_event_element_pre.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    element event&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        name    = node-&amp;gt;get_name( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CASE name.&lt;/P&gt;&lt;P&gt;          WHEN 'Title' OR 'TargetAudience' OR 'Prerequisites' OR&lt;/P&gt;&lt;P&gt;              'RequiredKnowledge' OR 'Goals' OR 'KTPContent' OR 'Notes'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            WRITE: / 'ELEMENT PRE :'.&lt;/P&gt;&lt;P&gt;            WRITE: AT indent name COLOR COL_POSITIVE INVERSE.&lt;/P&gt;&lt;P&gt;        ENDCASE.&lt;/P&gt;&lt;P&gt;      WHEN if_ixml_event=&amp;gt;co_event_attribute_post.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    attr event&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        name   = node-&amp;gt;get_name( ).&lt;/P&gt;&lt;P&gt;        value  = node-&amp;gt;get_value( ).&lt;/P&gt;&lt;P&gt;        WRITE: / 'ATTR    POST:'.&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;      WHEN if_ixml_event=&amp;gt;co_event_text_post OR&lt;/P&gt;&lt;P&gt;           if_ixml_event=&amp;gt;co_event_cdata_section_post.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    text event&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        value  = node-&amp;gt;get_value( ).&lt;/P&gt;&lt;P&gt;          WRITE: / 'TEXT    POST:'.&lt;/P&gt;&lt;P&gt;          WRITE: AT indent value COLOR COL_GROUP INVERSE.&lt;/P&gt;&lt;P&gt;      WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    other event&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        WRITE: / 'EVENT-TYPE    :'.&lt;/P&gt;&lt;P&gt;        WRITE: AT indent type COLOR COL_NORMAL INVERSE.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;  ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- parse the stream&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; IF parser-&amp;gt;parse( ) NE 0.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF parser-&amp;gt;num_errors( ) NE 0.&lt;/P&gt;&lt;P&gt;    count = 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 = parser-&amp;gt;get_error( index = index ).&lt;/P&gt;&lt;P&gt;      position = parseerror-&amp;gt;get_line( ).&lt;/P&gt;&lt;P&gt;      WRITE: 'line: ', position.&lt;/P&gt;&lt;P&gt;      position = parseerror-&amp;gt;get_column( ).&lt;/P&gt;&lt;P&gt;      WRITE: 'column: ', position.&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*-- just clear the stream&lt;/P&gt;&lt;P&gt;  CALL METHOD istream-&amp;gt;close( ).&lt;/P&gt;&lt;P&gt;  CLEAR istream.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  element = document-&amp;gt;get_root_element( ).&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; pnode = document.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM print_node USING pnode.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; WRITE:/ sy-uline.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " upload_parse&lt;/P&gt;&lt;P&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 print_node                                               *&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;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;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM print_node USING value(pnode) TYPE REF TO if_ixml_node.&lt;/P&gt;&lt;P&gt;  DATA: indent      TYPE i.&lt;/P&gt;&lt;P&gt;  DATA: ptext       TYPE REF TO if_ixml_text,&lt;/P&gt;&lt;P&gt;        attributes  TYPE REF TO if_ixml_named_node_map.&lt;/P&gt;&lt;P&gt;  DATA: node_string      TYPE string,&lt;/P&gt;&lt;P&gt;        child       TYPE REF TO if_ixml_node,&lt;/P&gt;&lt;P&gt;        att_count   TYPE i,&lt;/P&gt;&lt;P&gt;        att_name    TYPE string,&lt;/P&gt;&lt;P&gt;        att_value   TYPE string,&lt;/P&gt;&lt;P&gt;        att_index   TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  indent  = pnode-&amp;gt;get_height( ) * 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE pnode-&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;*-- get the node name&lt;/P&gt;&lt;P&gt;      node_string = pnode-&amp;gt;get_name( ).&lt;/P&gt;&lt;P&gt;      CASE node_string.&lt;/P&gt;&lt;P&gt;        WHEN 'Title' OR 'TargetAudience' OR 'Prerequisites' OR&lt;/P&gt;&lt;P&gt;              'RequiredKnowledge' OR 'Goals' OR 'KTPContent' OR 'Notes'.&lt;/P&gt;&lt;P&gt;          WRITE: AT /indent node_string, ':'.&lt;/P&gt;&lt;P&gt;*-- Get the KTPDescription attribute names and values..&lt;/P&gt;&lt;P&gt;        WHEN 'KTPDescription'.&lt;/P&gt;&lt;P&gt;          attributes = element-&amp;gt;get_attributes( ).&lt;/P&gt;&lt;P&gt;          IF NOT attributes IS INITIAL.&lt;/P&gt;&lt;P&gt;            att_count = attributes-&amp;gt;get_length( ).&lt;/P&gt;&lt;P&gt;            DO att_count TIMES.&lt;/P&gt;&lt;P&gt;              att_index  = sy-index - 1.&lt;/P&gt;&lt;P&gt;              child   = attributes-&amp;gt;get_item( att_index ).&lt;/P&gt;&lt;P&gt;              att_name   = child-&amp;gt;get_name( ).&lt;/P&gt;&lt;P&gt;              att_value  = child-&amp;gt;get_value( ).&lt;/P&gt;&lt;P&gt;              WRITE: / att_name,':', att_value.&lt;/P&gt;&lt;P&gt;              IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;              ENDIF.&lt;/P&gt;&lt;P&gt;            ENDDO.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;*-- Get node values&lt;/P&gt;&lt;P&gt;    WHEN if_ixml_node=&amp;gt;co_node_text.&lt;/P&gt;&lt;P&gt;      ptext ?= pnode-&amp;gt;query_interface( ixml_iid_text ).&lt;/P&gt;&lt;P&gt;      IF ptext-&amp;gt;ws_only( ) IS INITIAL.&lt;/P&gt;&lt;P&gt;        node_string = pnode-&amp;gt;get_value( ).&lt;/P&gt;&lt;P&gt;        REPLACE '-Auml-' WITH 'Ä' INTO node_string.&lt;/P&gt;&lt;P&gt;        REPLACE '-auml-' WITH 'ä' INTO node_string.&lt;/P&gt;&lt;P&gt;        REPLACE '-Ouml-' WITH 'Ö' INTO node_string.&lt;/P&gt;&lt;P&gt;        REPLACE '-ouml-' WITH 'ö' INTO node_string.&lt;/P&gt;&lt;P&gt;        REPLACE '-Uuml-' WITH 'Ü' INTO node_string.&lt;/P&gt;&lt;P&gt;        REPLACE '-uuml-' WITH 'ü' INTO node_string.&lt;/P&gt;&lt;P&gt;        REPLACE '-szlig-' WITH 'ß' INTO node_string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WRITE: AT /indent node_string.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  pnode = pnode-&amp;gt;get_first_child( ).&lt;/P&gt;&lt;P&gt;  WHILE NOT pnode IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   PERFORM print_node USING pnode.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   pnode = pnode-&amp;gt;get_next( ).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDWHILE.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "print_node&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 04 Nov 2006 14:05:11 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/upload-mass-data-from-file-during-testing-the-function-module/m-p/1661323#M293086</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-11-04T14:05:11Z</dc:date>
    </item>
  </channel>
</rss>

