Quantcast
Channel: SCN : Popular Discussions - ABAP Connectivity
Viewing all articles
Browse latest Browse all 898

ABAP to XML Transformation

$
0
0

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>


Viewing all articles
Browse latest Browse all 898

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>