ABAP Keyword Documentation → ABAP − Reference → Data Interfaces and Communication Interfaces → ABAP and XML → Transformations for XML → ST - Simple Transformations → ST - Examples
Simple Transformation, Method Call
This example demonstrates the call of a static method from a simple transformation.
Other versions: 7.31 | 7.40 | 7.54
Source Code
METHOD main.
DATA: scarr_tab TYPE SORTED TABLE OF scarr
WITH UNIQUE KEY carrid.
SELECT *
FROM scarr
INTO TABLE @scarr_tab.
IF sy-subrc <> 0.
RETURN.
ENDIF.
TRY.
CALL TRANSFORMATION demo_st_with_method_call
SOURCE scarr_tab = scarr_tab
spfli_tab = spfli_tab
RESULT XML data(xml).
cl_demo_output=>display_xml( xml ).
CATCH cx_st_call_method_error INTO data(exc).
cl_demo_output=>display_text( exc->get_text( ) ).
RETURN.
ENDTRY.
ENDMETHOD.
Description
The method MAIN of the global class CL_DEMO_CALL_FROM_ST calls an ST program DEMO_ST_WITH_METHOD_CALL and passes the static attributes SCARR_TAB and SPFLI_TAB of this class to the data roots of the transformation with the same name. The table SCARR_TAB is filled and SPFLI_TAB is passed empty. The ST program is as follows:
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
<tt:root name="SCARR_TAB"/>
<tt:root name="SPFLI_TAB"/>
<tt:variable name="carrid"/>
<tt:template>
<FlightList>
<tt:loop ref=".SCARR_TAB">
<Flights>
<tt:attribute name="Carrier" value-ref="CARRNAME"/>
<tt:assign ref="carrid" to-var="carrid"/>
<tt:call-method class="CL_DEMO_CALL_FROM_ST"
s-name="GET_FLIGHTS">
<tt:with-parameter name="CARRID" var="carrid"/>
</tt:call-method>
<tt:loop ref=".SPFLI_TAB">
<Connection>
<tt:attribute name="ID" value-ref="CONNID"/>
<From>
<tt:value ref="CITYFROM"/>
</From>
<To>
<tt:value ref="CITYTO"/>
</To>
</Connection>
</tt:loop>
</Flights>
</tt:loop>
</FlightList>
</tt:template>
</tt:transform>
In a serialization in a tt:loop
loop, it uses the data root SCARR_TAB to call the static method GET_FLIGHTS
of the global class CL_DEMO_CALL_FROM_ST. This passes the component carrid
of the internal table scarr_tab
to the input parameter of the method. In
the method, spfli_tab
is filled in a different way in each loop, in accordance with the parameters passed.