Conversion of ABAP Data To XML
Conversion of ABAP Data To XML
Format
Applies To:
This code sample applies to SAP R/3 Enterprise version and above.
Summary
XML format is becoming more critical to the exchange of data between different systems. This document will
help to map the ABAP data into an XML format.
Table of Contents
Create XSLT.....................................................................................................................................2
Author Bio.......................................................................................................................................14
Create XSLT
In transaction SE80 browse menu Workbench -> Edit Object. In the popup window enter XSLT Program
name (e.g. ZXSLT) and click on create button.
<xsl:template match="D2CXML">
<PurchaseOrders>
<xsl:apply-templates/>
</PurchaseOrders>
</xsl:template>
<xsl:template match="item">
<PONO>
<xsl:attribute name="no">
<xsl:value-of select="EBELN"/>
</xsl:attribute>
<PORDNO>
<xsl:apply-templates select="EBELN"/>
</PORDNO>
<Vendor>
<xsl:apply-templates select="LIFNR"/>
</Vendor>
<PurchaseOrg>
<xsl:apply-templates select="EKORG"/>
</PurchaseOrg>
<PurchaseGrp>
<xsl:apply-templates select="EKGRP"/>
</PurchaseGrp>
<xsl:apply-templates select="X-MLSTRUCT"/>
</PONO>
</xsl:template>
<xsl:template match="X-MLSTRUCT">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="X-MLSTRUCT/item">
<Product>
<ItemNo>
<xsl:apply-templates select="EBELP"/>
</ItemNo>
<Material>
<xsl:apply-templates select="MATNR"/>
</Material>
<Qty>
<xsl:apply-templates select="MENGE"/>
</Qty>
<Price>
<xsl:apply-templates select="NETPR"/>
</Price>
</Product>
</xsl:template>
</xsl:transform>
Create a report program using ABAP Workbench and the code of the extracting program will be as follows.
*--------------------------------------------------------------------*
* Program : ZXML_EXTRACTION *
* Type : Online *
*--------------------------------------------------------------------*
REPORT ZXML_EXTRACTION .
*--------------------------------------------------------------------*
*--------------------------------------------------------------------*
TYPE-POOLS: ABAP.
END OF TY_XML.
END OF TY_FINAL_XML.
END OF TY_EKPO.
G_LEN TYPE I.
* Work Area
END OF WA_FINAL_XML.
*--------------------------------------------------------------------*
* INTERNAL TABLES
*--------------------------------------------------------------------*
*--------------------------------------------------------------------*
* - - - - - - - - - - SELECTION-SCREEN - - - - - - - - - - - - - - *
*--------------------------------------------------------------------*
*-----Select options/Parameters--------------------------------------*
AT SELECTION-SCREEN.
P_FILE IS INITIAL.
ENDIF.
IF P_FILE+G_LEN(4) NE '.XML'.
ENDIF.
ENDIF.
EXPORTING
WINDOW_TITLE = G_TITLE
FILE_FILTER = '*.XML'
CHANGING
FILENAME = G_FILENAME
PATH = G_PATH
FULLPATH = G_FULLPATH.
IF SY-SUBRC = 0.
P_FILE = G_FULLPATH.
ENDIF.
*--------------------------------------------------------------------*
* - - - - - - - - - - LOGIC SECTION - - - - - - - - - - - - *
*-------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM CLEAR_VARIABLES.
PERFORM START_SELECTION.
END-OF-SELECTION.
* WA_FINAL_XML-XMLSTRUCT[] = T_XML[].
PERFORM CREATE_XML.
PERFORM DOWNLOAD_FILE.
ENDIF.
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
FORM START_SELECTION .
ON H~EBELN = I~EBELN.
WA_EKPO1 = WA_EKPO.
AT NEW EBELN.
REFRESH T_XML.
CLEAR WA_XML.
WA_FINAL_XML-EBELN = WA_EKPO-EBELN.
WA_FINAL_XML-LIFNR = WA_EKPO1-LIFNR.
WA_FINAL_XML-EKORG = WA_EKPO1-EKORG.
WA_FINAL_XML-EKGRP = WA_EKPO1-EKGRP.
ENDAT.
AT END OF EBELN.
WA_FINAL_XML-XMLSTRUCT[] = T_XML[].
ENDAT.
ENDLOOP.
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
* Create XML
*----------------------------------------------------------------------*
FORM CREATE_XML .
WA_SOURCE-NAME = 'D2CXML'.
CLEAR G_XML_STRING.
SOURCE (T_SOURCE)
IF SY-SUBRC <> 0.
ELSE.
G_XML_STRING1 = G_XML_STRING.
ENDIF.
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
FORM DOWNLOAD_FILE .
* Local Data
TRY.
CATCH CX_XSLT_EXCEPTION.
ENDTRY.
G_IXML = CL_IXML=>CREATE( ).
G_STREAM_FACTORY = G_IXML->CREATE_STREAM_FACTORY( ).
G_SRCSTR = G_STREAM_FACTORY->CREATE_ISTREAM_CSTRING(
STRING = G_XML_STRING1 ).
EXPORTING
STREAM = G_SRCSTR.
EXPORTING
TABLE = T_SRCTAB.
* RUN
TRY.
EXPORTING
PROGNAME = G_PROGNAME.
G_XML_STRING = G_GEN_EX->GET_TEXT( ).
ENDTRY.
L_FILENAME = P_FILE.
EXPORTING
FILENAME = L_FILENAME
FILETYPE = 'BIN'
TABLES
DATA_TAB = T_SRCTAB.
IF SY-SUBRC = 0.
ELSE.
ENDIF.
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
FORM CLEAR_VARIABLES .
CLEAR: G_TITLE,
G_FILENAME,
G_PATH,
G_FULLPATH,
G_LEN,
G_SRCSTR,
* Work Areas
WA_SOURCE,
WA_XML,
WA_FINAL_XML.
REFRESH: T_XML,
T_SOURCE,
T_SRCTAB,
T_FINAL_XML.
Author Bio
Mandar S. Shete is a senior developer in Tata Technologies.
SAP will not be held liable for any damages caused by using or misusing the information, code or methods
suggested in this document, and anyone using these methods does so at his/her own risk.
SAP offers no guarantees and assumes no responsibility or liability of any type with respect to the content of
this technical article or code sample, including any liability resulting from incompatibility between the content
within this document and the materials and services offered by SAP. You agree that you will not hold, or seek
to hold, SAP responsible or liable with respect to the content of this document.