検索

269.2.4. リポジトリーの設定

download PDF

概要

リポジトリーの設定は、SAP コンポーネントの repositoryDataStore プロパティーで維持されます。このマップの各エントリーは、個別のリポジトリーを設定します。各エントリーのキーはリポジトリーの名前であり、このキーはこのリポジトリーが接続されるサーバー名にも対応します。

各エントリーの値は、メタデータリポジトリーの内容を定義するリポジトリーデータ設定オブジェクト org.fusesource.camel.component.sap.model.rfc.impl.RepositoryDataImpl です。リポジトリーデータオブジェクトは、関数テンプレート設定オブジェクト org.fuesource.camel.component.sap.model.rfc.impl.FunctionTemplateImpl のマップです。このマップの各エントリーは、関数モジュールのインターフェースを指定し、各エントリーのキーは指定された function モジュールの名前です。

リポジトリーデータの例

以下のコードは、meta-data リポジトリーを設定する簡単な例を示しています。

<?xml version="1.0" encoding="UTF-8"?>
<blueprint ... >
    ...
    <!-- Configures the sap-srfc-server component -->
    <bean id="sap-configuration"
        class="org.fusesource.camel.component.sap.SapConnectionConfiguration">
        <property name="repositoryDataStore">
            <map>
                <entry key="nplServer" value-ref="nplRepositoryData" />
            </map>
        </property>
    </bean>

    <!-- Configures a Meta-Data Repository -->
    <bean id="nplRepositoryData"
        class="org.fusesource.camel.component.sap.model.rfc.impl.RepositoryDataImpl">
        <property name="functionTemplates">
            <map>
                <entry key="BOOK_FLIGHT" value-ref="bookFlightFunctionTemplate" />
            </map>
        </property>
    </bean>
    ...
</blueprint>

関数テンプレートプロパティー

関数モジュールのインターフェースは、RFC 呼び出しの function モジュールにデータを転送する 4 つのパラメーターリストで構成されます。各パラメーター一覧は 1 つ以上のフィールドで構成されており、各フィールドは RFC 呼び出しで転送される名前付きパラメーターです。以下のパラメーター list および 例外の一覧がサポートされます。

  • import パラメーター一覧 には、RFC 呼び出しの function モジュールに送信されるパラメーター値が含まれます。
  • export パラメーターリスト には、RFC 呼び出しの関数モジュールによって返されるパラメーター値が含まれます。
  • 変更パラメーターリスト には、RFC 呼び出しの function モジュールに送信され、返されるパラメーター値が含まれます。
  • table パラメーターリスト には、RFC 呼び出しの function モジュールに送信され、返される内部テーブル値が含まれます。
  • 関数モジュールのインターフェースは、RFC 呼び出しでモジュールが呼び出されると発生する ABAP 例外の例外リスト も含まれています。

関数テンプレートは、関数インターフェースの各パラメーター一覧のパラメーターおよびタイプ、および関数によってスローされた ABAP 例外を記述します。関数テンプレートオブジェクトは、以下の表で説明されているように、メタデータオブジェクトの 5 つのプロパティー一覧を維持します。

プロパティー

説明

importParameterList

リストフィールドメタデータオブジェクト( org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMeataDataImpl )の一覧。RFC 呼び出しで関数モジュールに送信されるパラメーターを指定します。

changingParameterList

リストフィールドメタデータオブジェクト( org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMeataDataImpl )の一覧。関数モジュールとの間で RFC 呼び出しで送受信されるパラメーターを指定します。

exportParameterList

リストフィールドメタデータオブジェクト( org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMeataDataImpl )の一覧。関数モジュールから RFC 呼び出しで返されるパラメーターを指定します。

tableParameterList

リストフィールドメタデータオブジェクト( org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMeataDataImpl )の一覧。関数モジュールとの間で RFC 呼び出しで送受信されるテーブルパラメーターを指定します。

exceptionList

ABAP 例外メタデータオブジェクト( org.fusesource.camel.component.sap.model.rfc.impl.AbapExceptionImpl )の一覧。関数モジュールの RFC 呼び出しで発生する可能性がある ABAP 例外を指定します。

関数テンプレートの例

以下の例は、関数テンプレートの設定方法の概要を示しています。

<bean id="bookFlightFunctionTemplate"
    class="org.fusesource.camel.component.sap.model.rfc.impl.FunctionTemplateImpl">
    <property name="importParameterList">
        <list>
            ...
        </list>
    </property>
    <property name="changingParameterList">
        <list>
            ...
        </list>
    </property>
    <property name="exportParameterList">
        <list>
            ...
        </list>
    </property>
    <property name="tableParameterList">
        <list>
            ...
        </list>
    </property>
    <property name="exceptionList">
        <list>
            ...
        </list>
    </property>
</bean>

フィールドメタデータプロパティーの一覧を表示します。

リストフィールドの meta-data オブジェクト( org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMeataDataImpl )は、パラメーター一覧のフィールドの名前とタイプを指定します。要素的なパラメーターフィールド(CHARDATEBCDTIME TIME、BYTENUMFLOATINT、INT1、INT1INT2DECF16DECF34、文字列)の場合、以下の表は、リストフィールドメタデータオブジェクトに設定できる設定プロパティーを一覧表示しています。

Name

デフォルト値

説明

name

-

パラメーターフィールドの名前。

type

-

フィールドのパラメータータイプ。

byteLength

-

非Unicodeレイアウトのフィールドの長さ(バイト単位)。この値は、パラメーターのタイプによって異なります。「RFC のメッセージボディー」 を参照してください。

unicodeByteLength

-

Unicode レイアウトのフィールドの長さ(バイト単位)。この値は、パラメーターのタイプによって異なります。「RFC のメッセージボディー」 を参照してください。

decimals

0

フィールド値の 10 進数の数。パラメータータイプ BCD および FLOAT にのみ必要です。「RFC のメッセージボディー」 を参照してください。

任意

false

true の場合、このフィールドはオプションで、RFC 呼び出しで設定する必要はありません。

すべての要素的なパラメーターフィールドでは、フィールドの meta-data オブジェクトで 名前タイプバイト長、および unicodeByteLength プロパティーを指定する必要があることに注意してください。さらに、BCDFLOATDECF16、および DECF34 の各フィールドでは、10 進数のプロパティーをフィールド meta-data オブジェクトで指定する必要があります。

TABLE または STRUCTURE タイプの複雑なパラメーターフィールドの場合、以下の表は、リストフィールドメタデータオブジェクトに設定できる設定プロパティーを示しています。

Name

デフォルト値

説明

name

-

パラメーターフィールドの名前

type

-

フィールドのパラメータータイプ

recordMetaData

-

構造またはテーブルのメタデータ。レコードメタデータオブジェクト org.fusesource.camel.component.sap.model.rfc.impl.RecordMetaDataImpl を渡して、構造またはテーブル行にフィールドを指定します。

任意

false

true の場合、このフィールドはオプションで、RFC 呼び出しで設定する必要はありません。

すべての複雑なパラメーターフィールドでは、名前type、および recordMetaData プロパティーをフィールド meta-data オブジェクトで指定する必要があります。recordMetaData プロパティーの値は、ネスト化された構造の構造を指定するレコードフィールド meta-data オブジェクトの org.fusesource.camel.component.sap.model.rfc.impl.RecordMetaDataImpl です。

要素リストフィールドメタデータの例

以下のメタデータ設定は、TICKET_PRICE という名前の 2 進数の場所で、24 桁のパッシングされた BCD 番号パラメーターを指定します。

<bean    class="org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMetaDataImpl">
    <property name="name" value="TICKET_PRICE" />
    <property name="type" value="BCD" />
    <property name="byteLength" value="12" />
    <property name="unicodeByteLength" value="24" />
    <property name="decimals" value="2" />
    <property name="optional" value="true" />
</bean>

複合リストフィールドメタデータの例

以下の meta-data 設定は、connectionInfo レコードのメタデータオブジェクトで指定される行構造を持つ CONNINFO という名前の必要な TABLE パラメーターを指定します。

<bean    class="org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMetaDataImpl">
    <property name="name" value="CONNINFO" />
    <property name="type" value="TABLE" />
    <property name="recordMetaData" ref="connectionInfo" />
</bean>

レコードメタデータプロパティー

レコードメタデータオブジェクト org.fusesource.camel.component.sap.model.rfc.impl.RecordMetaDataImpl は、ネスト化された STRUCTURE または TABLE パラメーターの名前および内容を指定します。レコードメタデータオブジェクトは、ネスト化された構造またはテーブル行にあるパラメーターを指定するレコードフィールドメタデータデータオブジェクト( org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl )の一覧を維持します。

以下の表は、レコードメタデータオブジェクトに設定できる設定プロパティーの一覧です。

Name

デフォルト値

説明

name

-

レコードの名前。

recordFieldMetaData

-

レコードフィールドメタデータオブジェクト( org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl )の一覧。構造に含まれるフィールドを指定します。

注記

record meta-data オブジェクトのすべてのプロパティーが必要です。

レコードメタデータの例

以下の例は、レコードメタデータオブジェクトの設定方法を示しています。

<bean    id="connectionInfo"
        class="org.fusesource.camel.component.sap.model.rfc.impl.RecordMetaDataImpl">
    <property name="name" value="CONNECTION_INFO" />
    <property name="recordFieldMetaData">
        <list>
            ...
        </list>
    </property>
</bean>

レコードフィールドメタデータプロパティー

レコードフィールドの meta-data オブジェクト org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl は、構造を持つパラメーターフィールドの名前およびタイプを指定します。

レコードフィールドメタデータオブジェクトはパラメーターフィールドの meta-data オブジェクトと似ていますが、ネストされた構造やテーブル行内の個々のフィールドの場所のオフセットは追加で指定する必要があります。個々のフィールドのユニコード以外のオフセットと Unicode オフセットは、構造または行の前のフィールドの非Unicodeおよび Unicode バイト長の合計から計算して指定する必要があります。ネストされた構造でフィールドのオフセットを適切に指定できず、テーブル行により、基礎となる JCo および ABAP ランタイムのパラメーターのフィールドストレージが重複し、RFC 呼び出しの値が適切に転送されないことに注意してください。

CHAR,DATE,BCD,TIME,BYTE,NUM,FLOAT, INTINT1 INT1 INT2INT 2 DECF16,DECF34,STRING,XSTRING)の場合、以下の表は、レコードフィールドメタデータオブジェクトに設定できる設定プロパティーを一覧表示しています。

Name

デフォルト値

説明

name

-

パラメーターフィールドの名前

type

-

フィールドのパラメータータイプ

byteLength

-

非Unicodeレイアウトのフィールドの長さ(バイト単位)。この値は、パラメーターのタイプによって異なります。「RFC のメッセージボディー」 を参照してください。

unicodeByteLength

-

Unicode レイアウトのフィールドの長さ(バイト単位)。この値は、パラメーターのタイプによって異なります。「RFC のメッセージボディー」 を参照してください。

byteOffset

-

非Unicodeレイアウトのバイト単位のフィールドオフセット。このオフセットは、エンクロージング構造内のフィールドのバイトロケーションです。

unicodeByteOffset

-

Unicode レイアウトのフィールドオフセット(バイト単位)。このオフセットは、エンクロージング構造内のフィールドのバイトロケーションです。

decimals

0

フィールド値の 10 進数の数。パラメータータイプ BCD および FLOAT にのみ必要です。「RFC のメッセージボディー」 を参照してください。

TABLE または STRUCTURE タイプの複雑なパラメーターフィールドの場合、以下の表は、レコードフィールドメタデータオブジェクトに設定できる設定プロパティーを示しています。

Name

デフォルト値

説明

name

-

パラメーターフィールドの名前

type

-

フィールドのパラメータータイプ

byteOffset

-

非Unicodeレイアウトのバイト単位のフィールドオフセット。このオフセットは、エンクロージング構造内のフィールドのバイトロケーションです。

unicodeByteOffset

-

Unicode レイアウトのフィールドオフセット(バイト単位)。このオフセットは、エンクロージング構造内のフィールドのバイトロケーションです。

recordMetaData

-

構造またはテーブルのメタデータ。レコードメタデータオブジェクト org.fusesource.camel.component.sap.model.rfc.impl.RecordMetaDataImpl を渡して、構造またはテーブル行にフィールドを指定します。

要素レコードフィールドメタデータの例

以下のメタデータ構成は、ARR DATE という名前の DATE フィールドパラメーターが、Unicode 以外のレイアウトの場合は 85 バイトをエンクロージング構造に指定し、Unicode レイアウトの場合の囲み構造に 170 バイトを指定します。

<bean    class="org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl">
    <property name="name" value="ARRDATE" />
    <property name="type" value="DATE" />
    <property name="byteLength" value="8" />
    <property name="unicodeByteLength" value="16" />
    <property name="byteOffset" value="85" />
    <property name="unicodeByteOffset" value="170" />
</bean>

複雑なレコードフィールドメタデータの例

以下の meta-data 設定は、flightInfo record meta-data オブジェクトで指定された構造を持つ FLTINFO という名前の STRUCTURE フィールドパラメーターを指定します。パラメーターは、非Unicode レイアウトと Unicode レイアウトの両方で、囲み構造の先頭に置かれます。

<bean    class="org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl">
    <property name="name" value="FLTINFO" />
    <property name="type" value="STRUCTURE" />
    <property name="byteOffset" value="0" />
    <property name="unicodeByteOffset" value="0" />
    <property name="recordMetaData" ref="flightInfo" />
</bean>
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.