Showing posts with label XML READ. Show all posts
Showing posts with label XML READ. Show all posts

Saturday, 23 July 2016

UPLOAD XML FILE AND READ DATA THROUGH INTERNAL TABLES .




UPLOAD   DATA FROM XML FILE  AND  READ  THROUGH INTERNAL TABLES .

UPLOAD DATA FROM A XML FILE AND READ THE XML DATA USING INTERNAL TABLES .
HERE THE LOGIC OF DISPLAYING OR SAVING THE DATA TO INTERNAL TABLES MAY BE DIFFERENT ACCORDING TO YOUR CONDITION .

[ TEST WORK DONE BY : SANJEEV SINGH ]

XML- FILE . :

********&--------------------------------------------------------------------
REPORT ZREAD_XML.
*****&---------------------------------------------------------------------*
*****&      Data Declaration
*****&---------------------------------------------------------------------*
DATA: filename   TYPE string.
data: xmldata type xstring .
data: begin of xml_tab occurs 0,
           raw 
type x,
        
end   of xml_tab .
data: size type i .
data: result_xml type standard table of smum_xmltb WITH HEADER LINE.
data: return type standard table of bapiret2 .
types : BEGIN OF ty_st ,
        
id type i,
        name 
TYPE string ,
        place 
type string,
        
END OF ty_st .

 
data : itab TYPE TABLE OF ty_st,
        wa 
TYPE ty_st  .

FILENAME 
= 'D:\TEST.XML'.

call function 'GUI_UPLOAD'
    
exporting
      filename            
= filename
      filetype            
= 'BIN'
      has_field_separator 
= ' '
      header_length       
= 0
    
importing
      filelength          
= size
    
tables
      data_tab            
= xml_tab
    
exceptions
      
others              = 1.

call function 'SCMS_BINARY_TO_XSTRING'
  
exporting
    input_length       
= size
*   FIRST_LINE         = 0
*   LAST_LINE          = 0
 
importing
   
buffer             = xmldata
  
tables
    binary_tab         
= xml_tab
 
exceptions
   failed             
= 1
   
others             = 2
          
.
if sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
CALL FUNCTION 'SMUM_XML_PARSE'
  
EXPORTING
    xml_input       
= xmldata
  
TABLES
    xml_table       
= result_xml
    
return          = return .



loop at result_xml.

IF RESULT_XML-TYPE = 'A' .
  
if result_xml-cname = 'ID'.
    WA
-id = result_xml-cvalue.
     
CONTINUE.
   
ENDIF.
 
ENDIF.
  
IF  RESULT_XML-TYPE = 'V'   .
  
IF result_xml-cname = 'NAME'.
    WA
-name = result_xml-cvalue.
    
CONTINUE.
   
ENDIF.
   
ENDIF.
  
IF RESULT_XML-TYPE = 'V' .
  
IF result_xml-cname = 'PLACE'.
    WA
-place = result_xml-cvalue.

  
endif.
  
ENDIF.
  
IF WA-PLACE IS NOT INITIAL .
  
APPEND WA TO  ITAB .
  
CLEAR WA .
  
ENDIF.
ENDLOOP.

LOOP AT ITAB INTO WA.
  
WRITE :/  WA-ID , WA-NAME , WA-PLACE.
ENDLOOP.