2015年8月4日星期二

CALL TRANSFORMATION to download Excel

Code snippet to show the usage of the ABAP Call Transformation to transform the data easily into the excel format by XML and download it.

Download EXCEL using CALL TRANSFORMATION

 
DATA: t_t100 TYPE STANDARD TABLE OF t100.
DATA: lv_xml  TYPE STRING.
DATA: lo_xml_doc TYPE REF TO cl_xml_document.
 
*
SELECT *
  FROM t100
  INTO TABLE t_t100
  UP TO 100 ROWS
  WHERE SPRSL EQ sy-langu.
 
*
CALL TRANSFORMATION ID
   SOURCE data_node = t_t100
   RESULT XML lv_xml.
 
*
CREATE OBJECT lo_xml_doc.
lo_xml_doc->parse_string( lv_xml ).
lo_xml_doc->export_to_file( 'c:tempt100.xls' ).
 
Opening up the file in excel:
Excel_Open_XML_popup
Excel_Open_XML_popup_2
Excel_generated_by_XML_output
File as XML
Excel_as_XML

Remove VERSION from the File

 
DATA: t_t100 TYPE STANDARD TABLE OF t100.
DATA: lv_xml  TYPE STRING.
DATA: lo_xml_doc TYPE REF TO cl_xml_document.
 
*
SELECT *
  FROM t100
  INTO TABLE t_t100
  UP TO 100 ROWS
  WHERE SPRSL EQ sy-langu.
 
*
CALL TRANSFORMATION ID
   SOURCE data_node = t_t100
   RESULT XML lv_xml.
 
*
REPLACE FIRST OCCURRENCE OF
    '<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">'
  IN lv_xml
  WITH '<asx:abap xmlns:asx="http://www.sap.com/abapxml">'.
 
*
CREATE OBJECT lo_xml_doc.
lo_xml_doc->parse_string( lv_xml ).
lo_xml_doc->export_to_file( 'c:tempt100.xls' ).
 
No more version column:
Excel_generated_by_XML_output_no_version
Do you have a Code Snippet which you want to share, Submit Code Snippet here
Tagged in: 

Share It!

Don't miss an Update

 

Naimesh Patel{260 articles}

I'm SAP ABAP Consultant for more than a decade. I like to experiment with ABAP especially OO. I have been SDN Top Contributor.
Follow : 
Explore all of his 260 articles.

2 Comments add yours

  • Rudolf Leye
    I don’t really like a processed XML object being serialized to string, worked over with text processing and being de-serialized back again to remove an XML attribute…
    Why not use the methods the way they are designed to be used:

     
    DATA: lv_xml2 TYPE REF TO if_ixml_document.
    lv_xml2 ?= ixml_factory-&gt;create_document( ).
    CALL TRANSFORMATION ID
       SOURCE data_node = t_t100
       RESULT XML lv_xml2.
    lv_xml2-&gt;set_version( " ).
     
  • Hello Rudolf,
    I think I had tried to set the version by using the method SET_VERSION, but it sets the version of the XML document to blank, not the version within the asx:abap node.
    ?xml version=””?
    Due to this, the document wont open in excel.
    I even tried to parse the nodes from XML and tried to use the SET_VERSION column, but it actually leaves the VERSION tag as is but only replaces the value. Hence used the STRING and REplace.
    Thanks,
    Naimesh Patel

没有评论:

发表评论