Skip to content

ABAP Keyword Documentation →  ABAP - Reference →  Data Interfaces and Communication Interfaces →  ABAP and XML →  Transformations for XML →  ST - Simple Transformations →  ST - Access to ABAP Objects from ST 

ST - tt:call-method, Calling Instance Methods

Other versions: 7.31 | 7.40 | 7.54

Syntax


<tt:call-method var="oref" [s-|d-]name="meth" 
                           [writer = "writer_para"]
                           [reader = "reader_para"] >
  [<tt:with-parameter [s-|d-]name="para1"
                      [ref="node1"|val="val1"|var="var1"] />
   <tt:with-parameter [s-|d-]name="para2"
                      [ref="node2"|val="val2"|var="var2"] />
   ...]
</tt:call-method>

Effect

Using this variant of the tt:call-method statement, you can call an instance method of a global ABAP Objects class in an ST program as follows: You can use var to declare a variable or a parameter of the ST program. The ref-type addition must have been used to create the variable or parameter as a class reference variable or interface reference variable. When called, the variable or parameter must point to the object of a class. The object can have been generated either in the ST program using tt:create-object, or it is referred to a corresponding ABAP reference variable.

You can use meth to declare a visible method that exists in the static type of the reference variable, that is, in the class or interface. The declaration of the method is not case-sensitive.

Method execution, parameter passing, and optional attributes are subject to the same conditions as static method calls.


Example

The following transformation calls an instance method convert in an object that is referenced by the parameter OPAR. This is transferred to the input parameter input of the method, and its return code result is assigned to a variable with the same name. The variable result is then serialized using tt:write. Note that no data root can be assigned to the return code of the method during serialization.

<tt:transform
  xmlns:tt="http://www.sap.com/transformation-templates">
  <tt:root name="ROOT"/>
  <tt:parameter name="OPAR" ref-type="cls"/>
  <tt:variable name="result"/>
  <tt:template>
    <tt:call-method s-name="convert" var="OPAR">
      <tt:with-parameter name="input" ref="ROOT"/>
      <tt:with-parameter name="result" var="result"/>
    </tt:call-method>
    <Result>
      <tt:write var="result"/>
    </Result>
  </tt:template>
</tt:transform>

The following is an example of a calling ABAP program:

DATA xml_string TYPE string.
DATA oref TYPE REF TO cls.
DATA text       TYPE string VALUE '1 2 3'.
DATA exc        TYPE REF TO cx_st_call_method_error.

CREATE OBJECT oref.

TRY.
    CALL TRANSFORMATION ...
      SOURCE root = text
      PARAMETERS opar = oref
      RESULT XML xml_string.
      cl_abap_browser=>show_xml( xml_string = xml_string ).
  CATCH cx_st_call_method_error INTO exc.
    ...
ENDTRY.

A reference to an object of the required class is transferred with the addition PARAMETERS.

The method convert of the class cls is defined as follows:

METHOD convert.
  result  = input.
  REPLACE ALL OCCURRENCES OF ` ` IN result WITH `-`.
ENDMETHOD.

The result of the transformation is as follows:

<Result>1-2-3</Result>