289.2. 設定

SAP コンポーネントは、宛先データ、サーバーデータ、およびリポジトリーデータを格納する 3 つのマップを維持します。宛先データストアサーバーデータストア は、特別な設定オブジェクト SapConnectionConfiguration で設定され、SAP コンポーネントに (Blueprint XML 設定または Spring XML 設定ファイルのコンテキストで) 自動的に挿入されます。リポジトリーデータストア は、関連する SAP コンポーネントで直接設定する必要があります。

289.2.1. 設定の概要

概要

SAP コンポーネントは、宛先データ、サーバーデータ、およびリポジトリーデータを格納する 3 つのマップを維持します。コンポーネントのプロパティー destinationDataStore は宛先名をキーとする宛先データを格納し、プロパティー serverDataStore はサーバー名をキーとするサーバーデータを格納し、プロパティー repositoryDataStore はリポジトリー名をキーとするリポジトリーデータを格納します。これらの設定は、初期化中にコンポーネントに渡す必要があります。

次の例は、ブループリント XML ファイルでサンプルの宛先データストアとサンプルサーバーデータストアを設定する方法を示しています。sap-configuration Bean (タイプ SapConnectionConfiguration) は、この XML ファイルで使用されるすべての SAP コンポーネントに自動的に挿入されます。

<?xml version="1.0" encoding="UTF-8"?>
<blueprint ... >
    ...
    <!-- Configures the Inbound and Outbound SAP Connections -->
    <bean id="sap-configuration"
        class="org.fusesource.camel.component.sap.SapConnectionConfiguration">
        <property name="destinationDataStore">
            <map>
                <entry key="quickstartDest" value-ref="quickstartDestinationData" />
            </map>
        </property>
        <property name="serverDataStore">
            <map>
                <entry key="quickstartServer" value-ref="quickstartServerData" />
            </map>
        </property>
    </bean>

    <!-- Configures an Outbound SAP Connection -->
    <!-- *** Please enter the connection property values for your environment *** -->
    <bean id="quickstartDestinationData"
        class="org.fusesource.camel.component.sap.model.rfc.impl.DestinationDataImpl">
        <property name="ashost" value="example.com" />
        <property name="sysnr" value="00" />
        <property name="client" value="000" />
        <property name="user" value="username" />
        <property name="passwd" value="passowrd" />
        <property name="lang" value="en" />
    </bean>

    <!-- Configures an Inbound SAP Connection -->
    <!-- *** Please enter the connection property values for your environment ** -->
    <bean id="quickstartServerData"
        class="org.fusesource.camel.component.sap.model.rfc.impl.ServerDataImpl">
        <property name="gwhost" value="example.com" />
        <property name="gwserv" value="3300" />
        <!-- The following property values should not be changed -->
        <property name="progid" value="QUICKSTART" />
        <property name="repositoryDestination" value="quickstartDest" />
        <property name="connectionCount" value="2" />
    </bean>
</blueprint>

289.2.2. 宛先設定

概要

宛先の設定は、SAP コンポーネントの destinationDataStore プロパティーで維持されます。このマップの各エントリーは、SAP インスタンスへの個別のアウトバウンド接続を設定します。各エントリーのキーはアウトバウンド接続の名前であり、URI 形式のセクションで説明されているように、宛先エンドポイント URI の destinationName コンポーネントで使用されます。

各エントリーの値は、アウトバウンド SAP 接続の設定を指定する宛先データ設定オブジェクト (org.fusesource.camel.component.sap.model.rfc.impl.DestinationDataImpl) です。

サンプル宛先設定

次の Blueprint XML コードは、サンプルの宛先を quickstartDest という名前で設定する方法を示しています。

<?xml version="1.0" encoding="UTF-8"?>
<blueprint ... >
    ...
    <!-- Create interceptor to support tRFC processing -->
    <bean id="currentProcessorDefinitionInterceptor"
          class="org.fusesource.camel.component.sap.CurrentProcessorDefinitionInterceptStrategy" />

    <!-- Configures the Inbound and Outbound SAP Connections -->
    <bean id="sap-configuration"
        class="org.fusesource.camel.component.sap.SapConnectionConfiguration">
        <property name="destinationDataStore">
            <map>
                <entry key="quickstartDest" value-ref="quickstartDestinationData" />
            </map>
        </property>
    </bean>

    <!-- Configures an Outbound SAP Connection -->
    <!-- *** Please enter the connection property values for your environment *** -->
    <bean id="quickstartDestinationData"
        class="org.fusesource.camel.component.sap.model.rfc.impl.DestinationDataImpl">
        <property name="ashost" value="example.com" />
        <property name="sysnr" value="00" />
        <property name="client" value="000" />
        <property name="user" value="username" />
        <property name="passwd" value="password" />
        <property name="lang" value="en" />
    </bean>

</blueprint>

たとえば、前の Blueprint XML ファイルに示されているように宛先を設定した後、次の URI を使用して、quickstartDest 宛先で BAPI_FLCUST_GETLIST リモート関数呼び出しを呼び出すことができます。

sap-srfc-destination:quickstartDest:BAPI_FLCUST_GETLIST

tRFC および qRFC 宛先のインターセプター

前のサンプル宛先設定は、CurrentProcessorDefinitionInterceptStrategy オブジェクトのインスタンス化を示しています。このオブジェクトは、Camel ランタイムにインターセプターをインストールします。これにより、Camel SAP コンポーネントは、RFC トランザクションの処理中に Camel ルート内の位置を追跡できます。詳細は、「トランザクション RFC 宛先エンドポイント」 を参照してください。

重要

このインターセプターは、トランザクション RFC 宛先エンドポイント (sap-trfc-destinationsap-qrfc-destination など) にとって非常に重要であり、アウトバウンドトランザクション RFC 通信を適切に管理するには、Camel ランタイムにインストールする必要があります。ストラテジーが実行時に見つからない場合、Destination RFC Transaction Handlers は Camel ログに警告を発行します。この状況では、アウトバウンドトランザクション RFC 通信を適切に管理するために、Camel ランタイムを再プロビジョニングして再起動する必要があります。

ログオンと認証のオプション

次の表に、SAP 宛先データストアで宛先を設定するための ログオンオプションと認証 オプションを示します。

名前

デフォルト値

説明

クライアント

 

SAP クライアント、必須ログオンパラメーター

user

 

ログオンユーザー、パスワードベース認証のログオンパラメーター

aliasUser

 

ログオンユーザーエイリアス。ログオンユーザーの代わりに使用できます。

userId

 

ABAP AS へのログオンに使用されるユーザー ID。宛先設定が認証に SSO/アサーションチケット、証明書、現在のユーザー、または SNC 環境を使用する場合、JCo ランタイムによって使用されます。ユーザーもユーザー別名も設定されていない場合、ユーザー ID は必須です。この ID は SAP バックエンドに送信されることはなく、JCo ランタイムによってローカルで使用されます。

passwd

 

ログオンパスワード、パスワードベースの認証のログオンパラメーター。

lang

 

ログオン言語。定義されていない場合は、デフォルトのユーザー言語が使用されます。

mysapsso2

 

指定した SAP Cookie バージョン 2 を SSO ベースの認証のログオンチケットとして使用します。

x509cert

 

証明書ベースの認証に指定された X509 証明書を使用します。

lcheck

 

最初の呼び出しまで認証を延期する - 1 (有効)。特別な場合にのみ使用されます。

useSapGui

 

表示または非表示の SAP GUI を使用するか、SAP GUI を使用しません。

codePage

 

ログオンパラメーターの変換に使用されるコードページを定義する追加のログオンパラメーター。特別な場合にのみ使用

getsso2

 

ログオン後に SSO チケットを注文します。取得したチケットは宛先属性で使用できます

denyInitialPassword

 

1 に設定すると、初期パスワードを使用すると例外が発生します (デフォルトは 0 です)。

接続オプション

次の表に、SAP 宛先データストアで宛先を設定するための 接続 オプションを示します。

名前

デフォルト値

説明

saprouter

 

SAP ルーターの背後にあるシステムに接続するための SAP ルーター文字列。SAP ルーター文字列には、一連の SAP ルーターとそのポート番号が含まれており、次の形式になっています: (/H/<host>[/S/<port>])+

sysnr

 

SAP ABAP アプリケーションサーバーのシステム番号、直接接続に必須

ashost

 

SAP ABAP アプリケーションサーバー、直接接続に必須。

mshost

 

SAP メッセージサーバー、負荷分散接続の必須プロパティー。

msserv

 

SAP メッセージサーバーポート。負荷分散接続のオプションプロパティー。サービス名 sapmsXXX を解決するために、etc/services のルックアップがオペレーティングシステムのネットワーク層によって実行されます。シンボリックサービス名の代わりにポート番号を使用する場合、ルックアップは実行されず、追加のエントリーは必要ありません。

gwhost

 

アプリケーションサーバーへの接続を確立するために使用する具体的なゲートウェイを指定できます。指定しない場合、アプリケーションサーバーのゲートウェイが使用されます

gwserv

 

gwhost を使用する場合に設定する必要があります。そのゲートウェイで使用されるポートを指定できます。指定しない場合、アプリケーションサーバーのゲートウェイのポートが使用されます。サービス名 sapgwXXX を解決するために、etc/services のルックアップがオペレーティングシステムのネットワーク層によって実行されます。シンボリックサービス名の代わりにポート番号を使用する場合、ルックアップは実行されず、追加のエントリーは必要ありません。

r3name

 

SAP システムのシステム ID。負荷分散接続の必須プロパティー。

group

 

SAP アプリケーションサーバーのグループ、負荷分散接続の必須プロパティー

network

LAN

パフォーマンスを最適化するには、JCo とターゲットシステム間のネットワーク品質に応じてこの値を設定します。有効な値は LAN または WAN です (これは高速シリアル化にのみ関連します)。network 設定オプションを WAN に設定すると、速度は遅くなりますがより効率的な圧縮アルゴリズムが使用され、データはさらに圧縮オプションを得るために分析されます。network 設定を LAN に設定すると、非常に高速な圧縮アルゴリズムが使用され、データ分析は非常に基本的なレベルでのみ実行されます。LAN オプションを設定すると、圧縮率はそれほど効率的ではありませんが、ネットワーク転送時間はそれほど重要ではないと見なされます。デフォルト設定は LAN です。

serializationFormat

rowBased

有効な値は、rowBased または columnBased です。シリアル化を高速化するには、columnBased を設定する必要があります。デフォルトのシリアル化設定は rowBased です。

接続プールのオプション

次の表に、SAP 宛先データストアで宛先を設定するための 接続プール オプションを示します。

名前

デフォルト値

説明

peakLimit

0

宛先に対して同時に作成できるアクティブなアウトバウンド接続の最大数。値が 0 の場合、アクティブな接続の数に制限はありません。それ以外の場合、値が jpoolCapacity の値よりも小さい場合は、この値に自動的に増加します。デフォルト設定は poolCapacity の値です。または、poolCapacity も指定されていない場合、デフォルトは 0 (無制限) です。

poolCapacity

1

宛先によって開いたままのアイドル状態のアウトバウンド接続の最大数。値 0 は、接続プーリングがないという効果があります (デフォルトは 1 です)。

expirationTime

 

宛先によって内部的に保持されている空き接続を閉じることができるまでの時間 (ミリ秒)。

expirationPeriod

 

宛先が解放された接続の有効期限をチェックするまでのミリ秒単位の期間。

maxGetTime

 

アプリケーションによって最大許容数の接続がすでに割り当てられている場合に、接続を待機する最大時間 (ミリ秒)。

安全なネットワーク接続オプション

次の表に、SAP 宛先データストアで宛先を設定するための セキュアなネットワーク オプションを示します。

名前

デフォルト値

説明

sncMode

 

セキュアなネットワーク接続 (SNC) モード、0 (オフ) または 1 (オン)

sncPartnername

 

SNC パートナー、例: p:CN=R3, O=XYZ-INC, C=EN

sncQop

 

セキュリティーの SNC レベル: 1 ~ 9

sncMyname

 

独自の SNC 名。環境設定をオーバーライドします

sncLibrary

 

SNC サービスを提供するライブラリーへのパス

リポジトリーオプション

次の表に、SAP 宛先データストアで宛先を設定するための リポジトリー オプションを示します。

名前

デフォルト値

説明

repositoryDest

 

リポジトリーとして使用する宛先を指定します。

repositoryUser

 

リポジトリーの宛先が設定されておらず、このプロパティーが設定されている場合、リポジトリー呼び出しのユーザーとして使用されます。これにより、リポジトリーの検索に別のユーザーを使用できます。

repositoryPasswd

 

リポジトリーユーザーのパスワード。リポジトリーユーザーを使用する必要がある場合は必須です。

repositorySnc

 

(オプション) この宛先に SNC が使用されている場合、このプロパティーが 0 に設定されていれば、リポジトリー接続に対して SNC をオフにすることができます。デフォルト設定は jco.client.snc_mode の値です。特殊な場合のみ。

repositoryRoundtripOptimization

 

RFC_METADATA_GET API を有効にすると、リポジトリーデータが 1 回の往復で提供されます。

1
ABAP システムで RFC_METADATA_GET の使用を有効にします。
0
ABAP システムで RFC_METADATA_GET を無効化します。

プロパティーが設定されていない場合、宛先は最初にリモート呼び出しを実行して、RFC_METADATA_GET が使用可能かどうかを確認します。利用可能な場合、宛先はそれを使用します。

注記: リポジトリーがすでに初期化されている場合 (たとえば、他の宛先で使用されているため)、このプロパティーは効果がありません。通常、このプロパティーは ABAP システムに関連しており、同じ ABAP システムを指すすべての宛先で同じ値を持つ必要があります。バックエンドの前提条件については、ノート 1456826 を参照してください。

トレース設定オプション

次の表に、SAP 宛先データストアで宛先を設定するための トレース設定 オプションを示します。

名前

デフォルト値

説明

trace

 

RFC トレースを有効/無効にする (0 または 1)

cpicTrace

 

CPIC トレースを有効/無効にする [0..3]

289.2.3. サーバー設定

概要

サーバーの設定は、SAP コンポーネントの serverDataStore プロパティーで維持されます。このマップの各エントリーは、SAP インスタンスからの個別のインバウンド接続を設定します。各エントリーのキーはアウトバウンド接続の名前であり、URI 形式のセクションで説明されているように、サーバーエンドポイント URI の serverName コンポーネントで使用されます。

各エントリーの値は、インバウンド SAP 接続の設定を定義する サーバーデータ設定オブジェクトorg.fusesource.camel.component.sap.model.rfc.impl.ServerDataImpl です。

例: サーバー設定

次の Blueprint XML コードは、名前が quickstartServer のサンプルサーバー設定を作成する方法を示しています。

<?xml version="1.0" encoding="UTF-8"?>
<blueprint ... >
    ...
    <!-- Configures the Inbound and Outbound SAP Connections -->
    <bean id="sap-configuration"
        class="org.fusesource.camel.component.sap.SapConnectionConfiguration">
        <property name="destinationDataStore">
            <map>
                <entry key="quickstartDest" value-ref="quickstartDestinationData" />
            </map>
        </property>
        <property name="serverDataStore">
            <map>
                <entry key="quickstartServer" value-ref="quickstartServerData" />
            </map>
        </property>
    </bean>

    <!-- Configures an Outbound SAP Connection -->
    <!-- *** Please enter the connection property values for your environment *** -->
    <bean id="quickstartDestinationData"
        class="org.fusesource.camel.component.sap.model.rfc.impl.DestinationDataImpl">
        <property name="ashost" value="example.com" />
        <property name="sysnr" value="00" />
        <property name="client" value="000" />
        <property name="user" value="username" />
        <property name="passwd" value="passowrd" />
        <property name="lang" value="en" />
    </bean>

    <!-- Configures an Inbound SAP Connection -->
    <!-- *** Please enter the connection property values for your environment ** -->
    <bean id="quickstartServerData"
        class="org.fusesource.camel.component.sap.model.rfc.impl.ServerDataImpl">
        <property name="gwhost" value="example.com" />
        <property name="gwserv" value="3300" />
        <!-- The following property values should not be changed -->
        <property name="progid" value="QUICKSTART" />
        <property name="repositoryDestination" value="quickstartDest" />
        <property name="connectionCount" value="2" />
    </bean>
</blueprint>

この例では、サーバーがリモート SAP インスタンスからメタデータを取得するために使用する宛先接続である quickstartDest も設定する方法に注目してください。この宛先は、repositoryDestination オプションを介してサーバーデータで設定されます。このオプションを設定しない場合は、代わりにローカルメタデータリポジトリーを作成する必要があります (「リポジトリーの設定」)。

たとえば、前述の Blueprint XML ファイルに示されているように宛先を設定した後、次の URI を使用して、呼び出し元のクライアントからの BAPI_FLCUST_GETLIST リモート関数呼び出しを処理できます。

sap-srfc-server:quickstartServer:BAPI_FLCUST_GETLIST

必須オプション

サーバーデータ設定オブジェクトに必要なオプションは次のとおりです。

名前

デフォルト値

説明

gwhost

 

サーバー接続を登録するゲートウェイホスト。

gwserv

 

登録を行うことができるポートであるゲートウェイサービス。サービス名 sapgwXXX を解決するために、etc/services のルックアップがオペレーティングシステムのネットワーク層によって実行されます。シンボリックサービス名の代わりにポート番号を使用する場合、ルックアップは実行されず、追加のエントリーは必要ありません。

progid

 

登録が行われたプログラム ID。ゲートウェイおよび ABAP システムの宛先で識別子として機能します。

repositoryDestination

 

リモート SAP サーバーでホストされているメタデータリポジトリーからメタデータを取得するためにサーバーが使用できる宛先名を指定します。

connectionCount

 

ゲートウェイに登録する必要がある接続の数。

安全なネットワーク接続オプション

サーバーデータ設定オブジェクトの安全なネットワーク接続オプションは次のとおりです。

名前

デフォルト値

説明

sncMode

 

セキュアなネットワーク接続 (SNC) モード、0 (オフ) または 1 (オン)

sncQop

 

セキュリティーの SNC レベル、1 ~ 9

sncMyname

 

サーバーの SNC 名。デフォルトの SNC 名を上書きします。通常、p:CN=JCoServer, O=ACompany, C=EN のようなものです。

sncLib

 

SNC サービスを提供するライブラリーへのパス。このプロパティーが指定されていない場合は、代わりに jco.middleware.snc_lib プロパティーの値が使用されます。

その他のオプション

サーバーデータ設定オブジェクトのその他のオプションは次のとおりです。

名前

デフォルト値

説明

saprouter

 

その ABAP システムのゲートウェイでサーバーを登録するときに、ファイアウォールによって保護されているため、SAProuter を介してのみアクセスできるシステムに使用する SAP ルーター文字列。一般的なルーター文字列は /H/firewall.hostname/H/ です。

maxStartupDelay

 

失敗した場合の 2 回の起動試行間の最大時間 (秒単位)。待機時間は、起動に失敗するたびに最初の 1 秒から 2 倍になり、最大値に達するか、サーバーが正常に起動できるようになります。

trace

 

RFC トレースを有効/無効にする (0 または 1)

workerThreadCount

 

サーバー接続で使用されるスレッドの最大数。設定されていない場合、connectionCount の値が workerThreadCount として使用されます。スレッドの最大数は 99 を超えることはできません。

workerThreadMinCount

 

サーバー接続で使用されるスレッドの最小数。設定されていない場合、connectionCount の値が workerThreadMinCount として使用されます。

289.2.4. リポジトリーの設定

概要

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

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

リポジトリーデータの例

次のコードは、メタデータリポジトリーを設定する簡単な例を示しています。

<?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 コールでデータが汎用モジュールとの間でやり取りされる 4 つのパラメーターリストで設定されています。各パラメーターリストは 1 つ以上のフィールドで設定され、それぞれが RFC コールで転送される名前付きパラメーターです。次のパラメーターリストと例外リストがサポートされています。

  • インポートパラメーターリスト には、RFC コールで汎用モジュールに送信されるパラメーター値が含まれています。
  • エクスポートパラメーターリスト には、RFC コールで汎用モジュールによって返されるパラメーター値が含まれています。
  • 変更パラメーター一覧 には、RFC コールで汎用モジュールとの間で送受信されるパラメーター値が含まれています。
  • テーブルパラメーター一覧 には、RFC コールで汎用モジュールとの間で送受信される内部テーブル値が含まれています。
  • 汎用モジュールのインタフェースは、モジュールが 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>

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

リストフィールドメタデータオブジェクト org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMeataDataImpl は、パラメーターリスト内のフィールドの名前とタイプを指定します。基本パラメーターフィールド (CHARDATEBCDTIMEBYTENUMFLOATINTINT1INT2DECF16DECF34STRINGXSTRING) の場合、リストフィールドメタデータオブジェクトに設定できる設定プロパティーを次の表に示します。

名前

デフォルト値

説明

name

-

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

type

-

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

byteLength

-

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

unicodeByteLength

-

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

decimals

0

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

任意

false

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

すべての基本パラメーターフィールドでは、フィールドメタデータオブジェクトで nametypebyteLength、および unicodeByteLength プロパティーを指定する必要があることに注意してください。さらに、BCDFLOATDECF16、および DECF34 フィールドでは、フィールドメタデータオブジェクトで decimal プロパティーを指定する必要があります。

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

名前

デフォルト値

説明

name

-

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

type

-

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

recordMetaData

-

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

任意

false

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

すべての複雑なパラメーターフィールドでは、フィールドメタデータオブジェクトで nametype、および recordMetaData プロパティーを指定する必要があることに注意してください。recordMetaData プロパティーの値は、レコードフィールドメタデータオブジェクト 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>

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

次のメタデータ設定では、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

-

レコードの名前。

recordFieldMetaData

-

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

注記

レコードメタデータオブジェクトのすべてのプロパティーが必要です。

レコードのメタデータの例

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

<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>

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

レコードフィールドメタデータオブジェクト org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl は、構造体でパラメーターフィールドの名前とタイプを指定します。

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

基本パラメーターフィールド (CHARDATEBCDTIMEBYTENUMFLOATINTINT1INT2DECF16DECF34STRINGXSTRING) の場合、レコードフィールドメタデータオブジェクトに設定できる設定プロパティーを次の表に示します。

名前

デフォルト値

説明

name

-

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

type

-

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

byteLength

-

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

unicodeByteLength

-

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

byteOffset

-

非 Unicode レイアウトのフィールドオフセット (バイト単位)。このオフセットは、囲まれている構造内のフィールドのバイト位置です。

unicodeByteOffset

-

Unicode レイアウトのフィールドオフセット (バイト単位)。このオフセットは、囲まれている構造内のフィールドのバイト位置です。

decimals

0

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

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

名前

デフォルト値

説明

name

-

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

type

-

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

byteOffset

-

非 Unicode レイアウトのフィールドオフセット (バイト単位)。このオフセットは、囲まれている構造内のフィールドのバイト位置です。

unicodeByteOffset

-

Unicode レイアウトのフィールドオフセット (バイト単位)。このオフセットは、囲んでいる構造内のフィールドのバイト位置です。

recordMetaData

-

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

基本レコードフィールドのメタデータの例

次のメタデータ設定は、ARRDATE という名前の 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>

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

次のメタデータ設定は、flightInfo レコードメタデータオブジェクトによって指定された構造を持つ 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>