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-destination
や sap-qrfc-destination
など) にとって非常に重要であり、アウトバウンドトランザクション RFC 通信を適切に管理するには、Camel ランタイムにインストールする必要があります。ストラテジーが実行時に見つからない場合、Destination RFC Transaction Handlers は Camel ログに警告を発行します。この状況では、アウトバウンドトランザクション RFC 通信を適切に管理するために、Camel ランタイムを再プロビジョニングして再起動する必要があります。
ログオンと認証のオプション
次の表に、SAP 宛先データストアで宛先を設定するための ログオンオプションと認証 オプションを示します。
名前 | デフォルト値 | 説明 |
| SAP クライアント、必須ログオンパラメーター | |
| ログオンユーザー、パスワードベース認証のログオンパラメーター | |
| ログオンユーザーエイリアス。ログオンユーザーの代わりに使用できます。 | |
| ABAP AS へのログオンに使用されるユーザー ID。宛先設定が認証に SSO/アサーションチケット、証明書、現在のユーザー、または SNC 環境を使用する場合、JCo ランタイムによって使用されます。ユーザーもユーザー別名も設定されていない場合、ユーザー ID は必須です。この ID は SAP バックエンドに送信されることはなく、JCo ランタイムによってローカルで使用されます。 | |
| ログオンパスワード、パスワードベースの認証のログオンパラメーター。 | |
| ログオン言語。定義されていない場合は、デフォルトのユーザー言語が使用されます。 | |
| 指定した SAP Cookie バージョン 2 を SSO ベースの認証のログオンチケットとして使用します。 | |
| 証明書ベースの認証に指定された X509 証明書を使用します。 | |
| 最初の呼び出しまで認証を延期する - 1 (有効)。特別な場合にのみ使用されます。 | |
| 表示または非表示の SAP GUI を使用するか、SAP GUI を使用しません。 | |
| ログオンパラメーターの変換に使用されるコードページを定義する追加のログオンパラメーター。特別な場合にのみ使用 | |
| ログオン後に SSO チケットを注文します。取得したチケットは宛先属性で使用できます | |
|
|
接続オプション
次の表に、SAP 宛先データストアで宛先を設定するための 接続 オプションを示します。
名前 | デフォルト値 | 説明 |
|
SAP ルーターの背後にあるシステムに接続するための SAP ルーター文字列。SAP ルーター文字列には、一連の SAP ルーターとそのポート番号が含まれており、次の形式になっています: | |
| SAP ABAP アプリケーションサーバーのシステム番号、直接接続に必須 | |
| SAP ABAP アプリケーションサーバー、直接接続に必須。 | |
| SAP メッセージサーバー、負荷分散接続の必須プロパティー。 | |
|
SAP メッセージサーバーポート。負荷分散接続のオプションプロパティー。サービス名 sapmsXXX を解決するために、 | |
| アプリケーションサーバーへの接続を確立するために使用する具体的なゲートウェイを指定できます。指定しない場合、アプリケーションサーバーのゲートウェイが使用されます | |
| gwhost を使用する場合に設定する必要があります。そのゲートウェイで使用されるポートを指定できます。指定しない場合、アプリケーションサーバーのゲートウェイのポートが使用されます。サービス名 sapgwXXX を解決するために、etc/services のルックアップがオペレーティングシステムのネットワーク層によって実行されます。シンボリックサービス名の代わりにポート番号を使用する場合、ルックアップは実行されず、追加のエントリーは必要ありません。 | |
| SAP システムのシステム ID。負荷分散接続の必須プロパティー。 | |
| SAP アプリケーションサーバーのグループ、負荷分散接続の必須プロパティー | |
|
|
パフォーマンスを最適化するには、JCo とターゲットシステム間のネットワーク品質に応じてこの値を設定します。有効な値は |
|
|
有効な値は、 |
接続プールのオプション
次の表に、SAP 宛先データストアで宛先を設定するための 接続プール オプションを示します。
名前 | デフォルト値 | 説明 |
|
|
宛先に対して同時に作成できるアクティブなアウトバウンド接続の最大数。値が |
|
|
宛先によって開いたままのアイドル状態のアウトバウンド接続の最大数。値 |
| 宛先によって内部的に保持されている空き接続を閉じることができるまでの時間 (ミリ秒)。 | |
| 宛先が解放された接続の有効期限をチェックするまでのミリ秒単位の期間。 | |
| アプリケーションによって最大許容数の接続がすでに割り当てられている場合に、接続を待機する最大時間 (ミリ秒)。 |
安全なネットワーク接続オプション
次の表に、SAP 宛先データストアで宛先を設定するための セキュアなネットワーク オプションを示します。
名前 | デフォルト値 | 説明 |
|
セキュアなネットワーク接続 (SNC) モード、 | |
|
SNC パートナー、例: | |
|
セキュリティーの SNC レベル: | |
| 独自の SNC 名。環境設定をオーバーライドします | |
| SNC サービスを提供するライブラリーへのパス |
リポジトリーオプション
次の表に、SAP 宛先データストアで宛先を設定するための リポジトリー オプションを示します。
名前 | デフォルト値 | 説明 |
| リポジトリーとして使用する宛先を指定します。 | |
| リポジトリーの宛先が設定されておらず、このプロパティーが設定されている場合、リポジトリー呼び出しのユーザーとして使用されます。これにより、リポジトリーの検索に別のユーザーを使用できます。 | |
| リポジトリーユーザーのパスワード。リポジトリーユーザーを使用する必要がある場合は必須です。 | |
|
(オプション) この宛先に SNC が使用されている場合、このプロパティーが | |
|
プロパティーが設定されていない場合、宛先は最初にリモート呼び出しを実行して、 注記: リポジトリーがすでに初期化されている場合 (たとえば、他の宛先で使用されているため)、このプロパティーは効果がありません。通常、このプロパティーは ABAP システムに関連しており、同じ ABAP システムを指すすべての宛先で同じ値を持つ必要があります。バックエンドの前提条件については、ノート 1456826 を参照してください。 |
トレース設定オプション
次の表に、SAP 宛先データストアで宛先を設定するための トレース設定 オプションを示します。
名前 | デフォルト値 | 説明 |
|
RFC トレースを有効/無効にする ( | |
|
CPIC トレースを有効/無効にする |
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
必須オプション
サーバーデータ設定オブジェクトに必要なオプションは次のとおりです。
名前 | デフォルト値 | 説明 |
| サーバー接続を登録するゲートウェイホスト。 | |
|
登録を行うことができるポートであるゲートウェイサービス。サービス名 | |
| 登録が行われたプログラム ID。ゲートウェイおよび ABAP システムの宛先で識別子として機能します。 | |
| リモート SAP サーバーでホストされているメタデータリポジトリーからメタデータを取得するためにサーバーが使用できる宛先名を指定します。 | |
| ゲートウェイに登録する必要がある接続の数。 |
安全なネットワーク接続オプション
サーバーデータ設定オブジェクトの安全なネットワーク接続オプションは次のとおりです。
名前 | デフォルト値 | 説明 |
|
セキュアなネットワーク接続 (SNC) モード、 | |
|
セキュリティーの SNC レベル、 | |
|
サーバーの SNC 名。デフォルトの SNC 名を上書きします。通常、 | |
|
SNC サービスを提供するライブラリーへのパス。このプロパティーが指定されていない場合は、代わりに |
その他のオプション
サーバーデータ設定オブジェクトのその他のオプションは次のとおりです。
名前 | デフォルト値 | 説明 |
|
その ABAP システムのゲートウェイでサーバーを登録するときに、ファイアウォールによって保護されているため、SAProuter を介してのみアクセスできるシステムに使用する SAP ルーター文字列。一般的なルーター文字列は | |
| 失敗した場合の 2 回の起動試行間の最大時間 (秒単位)。待機時間は、起動に失敗するたびに最初の 1 秒から 2 倍になり、最大値に達するか、サーバーが正常に起動できるようになります。 | |
|
RFC トレースを有効/無効にする ( | |
|
サーバー接続で使用されるスレッドの最大数。設定されていない場合、 | |
|
サーバー接続で使用されるスレッドの最小数。設定されていない場合、 |
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 つのプロパティーリストを保持します。
プロパティー | 説明 |
|
リストフィールドメタデータオブジェクトのリスト、 |
|
リストフィールドメタデータオブジェクトのリスト、 |
|
リストフィールドメタデータオブジェクトのリスト、 |
|
リストフィールドメタデータオブジェクトのリスト、 |
|
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
は、パラメーターリスト内のフィールドの名前とタイプを指定します。基本パラメーターフィールド (CHAR
、DATE
、BCD
、TIME
、BYTE
、NUM
、FLOAT
、INT
、INT1
、INT2
、DECF16
、DECF34
、STRING
、XSTRING
) の場合、リストフィールドメタデータオブジェクトに設定できる設定プロパティーを次の表に示します。
名前 | デフォルト値 | 説明 |
| - | パラメーターフィールドの名前。 |
| - | フィールドのパラメータータイプ。 |
| - | 非 Unicode レイアウトのバイト単位のフィールド長。この値は、パラメーターのタイプによって異なります。「RFC のメッセージボディー」 を参照してください。 |
| - | Unicode レイアウトのバイト単位のフィールド長。この値は、パラメーターのタイプによって異なります。「RFC のメッセージボディー」 を参照してください。 |
|
| フィールド値の小数点以下の桁数。パラメータータイプ BCD および FLOAT にのみ必要です。「RFC のメッセージボディー」 を参照してください。 |
|
|
|
すべての基本パラメーターフィールドでは、フィールドメタデータオブジェクトで name
、type
、byteLength
、および unicodeByteLength
プロパティーを指定する必要があることに注意してください。さらに、BCD
、FLOAT
、DECF16
、および DECF34
フィールドでは、フィールドメタデータオブジェクトで decimal プロパティーを指定する必要があります。
タイプ TABLE
または STRUCTURE
の複雑なパラメーターフィールドの場合、次の表に、リストフィールドメタデータオブジェクトに設定できる設定プロパティーを示します。
名前 | デフォルト値 | 説明 |
| - | パラメーターフィールドの名前 |
| - | フィールドのパラメータータイプ |
| - |
構造またはテーブルのメタデータ。レコードメタデータオブジェクト |
|
|
|
すべての複雑なパラメーターフィールドでは、フィールドメタデータオブジェクトで name
、type
、および 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
のリストを維持します。
次の表に、レコードメタデータオブジェクトに設定できる設定プロパティーを示します。
名前 | デフォルト値 | 説明 |
| - | レコードの名前。 |
| - |
レコードフィールドメタデータオブジェクトのリスト、 |
レコードメタデータオブジェクトのすべてのプロパティーが必要です。
レコードのメタデータの例
次の例は、レコードメタデータオブジェクトを設定する方法を示しています。
<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 コールでの値の適切な転送が妨げられることに注意してください。
基本パラメーターフィールド (CHAR
、DATE
、BCD
、TIME
、BYTE
、NUM
、FLOAT
、INT
、INT1
、INT2
、DECF16
、DECF34
、STRING
、XSTRING
) の場合、レコードフィールドメタデータオブジェクトに設定できる設定プロパティーを次の表に示します。
名前 | デフォルト値 | 説明 |
| - | パラメーターフィールドの名前 |
| - | フィールドのパラメータータイプ |
| - | 非 Unicode レイアウトのバイト単位のフィールド長。この値は、パラメーターのタイプによって異なります。「RFC のメッセージボディー」 を参照してください。 |
| - | Unicode レイアウトのバイト単位のフィールド長。この値は、パラメーターのタイプによって異なります。「RFC のメッセージボディー」 を参照してください。 |
| - | 非 Unicode レイアウトのフィールドオフセット (バイト単位)。このオフセットは、囲まれている構造内のフィールドのバイト位置です。 |
| - | Unicode レイアウトのフィールドオフセット (バイト単位)。このオフセットは、囲まれている構造内のフィールドのバイト位置です。 |
|
|
フィールド値の小数点以下の桁数。パラメータータイプ |
タイプ TABLE
または STRUCTURE
の複雑なパラメーターフィールドの場合、次の表に、レコードフィールドメタデータオブジェクトに設定できる設定プロパティーを示します。
名前 | デフォルト値 | 説明 |
| - | パラメーターフィールドの名前 |
| - | フィールドのパラメータータイプ |
| - | 非 Unicode レイアウトのフィールドオフセット (バイト単位)。このオフセットは、囲まれている構造内のフィールドのバイト位置です。 |
| - | Unicode レイアウトのフィールドオフセット (バイト単位)。このオフセットは、囲んでいる構造内のフィールドのバイト位置です。 |
| - |
構造またはテーブルのメタデータ。レコードメタデータオブジェクト |
基本レコードフィールドのメタデータの例
次のメタデータ設定は、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>