Skip to content

ABAP Keyword Documentation →  ABAP - Reference →  Data Interfaces and Communication Interfaces →  ABAP and XML →  Transformations for XML →  XSL Transformations →  Identity Transformation 

Identity Transformation to the asXML Format

This example demonstrates the serialization of ABAP data to the asXML format.

Other versions: 7.31 | 7.40 | 7.54

Source Code

    DATA: oref   TYPE REF TO object,
          dref1  LIKE REF TO oref,
          xmlstr TYPE string,
          date   TYPE d,
          time   TYPE t,
          dref2  LIKE dref1.

    CREATE DATA dref1 LIKE oref.
    CREATE OBJECT dref1->* TYPE c2.

    CALL TRANSFORMATION id
                        SOURCE xmldat = sy-datum
                               xmltim = sy-uzeit
                               ref  = dref1
                        RESULT XML xmlstr.
    EXPORT obj = xmlstr TO DATABASE demo_indx_table(xm)
                        ID 'OBJECT'.

    cl_demo_output=>display_xml( xmlstr ).

    IMPORT obj = xmlstr FROM DATABASE demo_indx_table(xm) ID 'OBJECT'.
    CALL TRANSFORMATION id
                        SOURCE XML xmlstr
                        RESULT xmldat = date
                               xmltim = time
                               ref = dref2.

Description

Serialization of Data Objects to a String xmlstr Using the Identical Transformation ID A date field date, a time field time, and a data reference variable dref1 are serialized. The data reference variable points to an anonymous object reference variable, which in turn points to an object of the class c2. Objects serialized in this way can be stored persistently, for example in a data cluster. After the objects are imported from where they are stored, they are deserialized to further data objects. Following deserialization, dref2 points to another anonymous reference variable, such as dref1. This anonymous data object and the instance of the class c2 to which it points are generated during the deserialization.

The XML document generated in the serialization is in asXML format. It is displayed in a browser and has approximately the content described below. In this description, line breaks and indents have been added. The element values contains the asXML representations of the three passed data objects. In the names X-MLDAT and X-MLTIM, "xml" is replaced by "X-ML". The attribute href of the element REF uses the key "d1" to refer to the representation of the associated anonymous data object in the element heap. This uses the key "o3" to refer to the representation of the instance of the class c2, which is also in the element heap. This representation is divided into the object parts for the classes c1 and c2. The object part for c1 contains the representation of the double-row structured internal table carriers. The object part for c2 contains the representation for the output parameter count of the method SERIALIZE_HELPER.

<?xml version="1.0" encoding="iso-8859-1" ?>
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
  <asx:values>
    <X-MLDAT>2003-04-15</X-MLDAT>
    <X-MLTIM>14:57:53</X-MLTIM>
    <REF href="#d1" />
  </asx:values>
  <asx:heap
       xmlns:xsd="http://www.w3.org/2001/XMLSchema"
       xmlns:abap="http://www.sap.com/abapxml/types/built-in"
       xmlns:cls="http://www.sap.com/abapxml/classes/global"
       xmlns:dic="http://www.sap.com/abapxml/types/dictionary">
    <abap:refObject href="#o3" id="d1" />
    <prg:C2
      xmlns:prg="http://www.sap.com/abapxml/classes/program/XMLTST"
      id="o3">
      <local.C1>
        <CARRIERS>
          <SCARR>
            <MANDT>000</MANDT>
            <CARRID>AA</CARRID>
            <CARRNAME>American Airlines</CARRNAME>
            <CURRCODE>USD</CURRCODE>
            <URL>http://www.aa.com</URL>
          </SCARR>
          <SCARR>
            <MANDT>000</MANDT>
            <CARRID>AB</CARRID>
            <CARRNAME>Air Berlin</CARRNAME>
            <CURRCODE>DEM</CURRCODE>
            <URL>http://www.airberlin.de</URL>
          </SCARR>
        </CARRIERS>
      </local.C1>
      <local.C2>
        <COUNT>2</COUNT>
      </local.C2>
    </prg:C2>
  </asx:heap>
</asx:abap>


For further examples, see asXML, Examples of Mappings