Hello,
I am using the following in 4.7 Enterprise as well as in ECC 6.0:
CALL TRANSFORMATION yabap_to_xml
SOURCE (gt_source_itab)
RESULT XML gt_itab.
<xsl:output encoding="ISO-8859-1"
From 4.7 Enterprise I am getting the output where as from ECC 6.0 I am getting the error as:
The XML page cannot be displayed
Cannot view XML input using style sheet. Please correct the error and then click the Refresh button, or try again later.
-
Invalid at the top level of the document. Error processing resource 'file:///L:/UCB/DE1 ABAP to XML.xml'. Line 1, Position...
#<?xml version="1.0" encoding="utf-16"?>
Below is the Code:
REPORT yabap_to_xml.
ABAP Language Type-Pool
TYPE-POOLS: abap.
CONSTANTS gv_file
TYPE string
VALUE 'L:\UCB\ABAP to XML.xml'.
This is the structure for the data to go into the XML file
TYPES: BEGIN OF ts_person,
cust_id(4) TYPE n,
firstname(20) TYPE c,
lastname(20) TYPE c,
END OF ts_person.
Table for the XML content
DATA: gt_itab TYPE STANDARD TABLE OF char2048.
Table and work area for the data to fill the XML file with
DATA: gt_person TYPE STANDARD TABLE OF ts_person,
gs_person TYPE ts_person.
*Source table that contains references of the internal tables that go
*into the XML file
DATA: gt_source_itab TYPE abap_trans_srcbind_tab,
gs_source_wa TYPE abap_trans_resbind.
For error handling
DATA: gs_rif_ex TYPE REF TO cx_root,
gs_var_text TYPE string.
START-OF-SELECTION.
Fill the internal table
gs_person-cust_id = '3'.
gs_person-firstname = 'Bill'.
gs_person-lastname = 'Gates'.
APPEND gs_person TO gt_person.
gs_person-cust_id = '4'.
gs_person-firstname = 'Frodo'.
gs_person-lastname = 'Baggins'.
APPEND gs_person TO gt_person.
Fill the source table with a reference to the data table.
Within the XSLT stylesheet, the data table can be accessed with
"IPERSON".
GET REFERENCE OF gt_person INTO gs_source_wa-value.
gs_source_wa-name = 'IPERSON'.
APPEND gs_source_wa TO gt_source_itab.
Perform the XSLT stylesheet
TRY.
CALL TRANSFORMATION yabap_to_xml
SOURCE (gt_source_itab)
RESULT XML gt_itab.
CATCH cx_root INTO gs_rif_ex.
gs_var_text = gs_rif_ex->get_text( ).
MESSAGE gs_var_text TYPE 'E'.
ENDTRY.
Download the XML file to your client
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
filename = gv_file
CHANGING
data_tab = gt_itab
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
not_supported_by_gui = 22
error_no_gui = 23
OTHERS = 24.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output encoding="ISO-8859-1" indent="yes" method="xml" version="1.0"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<CUSTOMERS>
<xsl:apply-templates select="//IPERSON/item"/>
</CUSTOMERS>
</xsl:template>
<xsl:template match="IPERSON/item">
<item>
<customer_id>
<xsl:value-of select="CUST_ID"/>
</customer_id>
<first_name>
<xsl:value-of select="FIRSTNAME"/>
</first_name>
<last_name>
<xsl:value-of select="LASTNAME"/>
</last_name>
</item>
</xsl:template>
</xsl:transform>