使用する
ステートメントsap:external-functionを使用すると、XPath内からABAP呼び出しの関数を宣言することができます。sap:call-externalとは対照的に、メソッド呼び出しに指定できる戻り値は1つだけです。この目的のために、呼び出されるメソッドは、XSLTプログラムのトップレベルで外部関数として宣言する必要があります。この方法で宣言された関数は、XPath式のメソッド呼び出しに使用できます。
インターフェイスメソッドを呼び出すときは、インターフェイスの名前の後にインターフェイスコンポーネントセレクター(intf〜)を付けて指定する必要があります。
宣言構文
たとえば、メソッド:
クラスメソッドの場合:
コンストラクターの場合:
説明
コンストラクタ宣言を除いて、属性メソッドは呼び出されるABAPメソッドの名前を出力します。さらに、属性kindは、インスタンスまたはクラスメソッド、あるいはコンストラクターがあるかどうかを定義します。クラスメソッドおよびコンストラクタの場合、ABAPクラスの名前は属性クラスを使用して出力されます。
関数の引数のリストは、サブステートメントsap:argumentを使用して宣言されます(シーケンスを考慮して)。対応するABAPパラメータの名前は、属性paramを使用して指定されます。
インスタンスおよびクラスメソッドの呼び出しでは、サブステートメントsap:resultを使用して戻り値を定義できます。戻りパラメーターの名前は、属性paramを介して指定されます。オプションで、属性タイプを使用して、特定のXSLTタイプ(文字列、数値、ブール値、ノードセット、または外部)を結果に割り当てることができます。
XPath式での呼び出しの構文
宣言された関数は、ABAP呼び出しのXPath式で使用できます。インスタンスメソッドでは、最初の関数引数はABAPオブジェクトを使用して識別される必要があります。
例:
<xsl:value-of select = “prefix:f1($ x、99、’abc’)” />
与えられた例では、prefix:f1という名前の関数は、入力パラメータとして2つの値99と’abc’を渡すインスタンスメソッドを使用してABAP呼び出しを定義します。最初の関数引数$xは、必要なABAPオブジェクトを識別します。
適切な宣言されたコンストラクター関数を使用している場合、この呼び出しは次のように代替的に記述することもできます。
<xsl:value-of select = “prefix:f1(prefix:new(’xyz’)、99、’abc’)” />