140.3. RFC のメッセージボディー


要求および応答オブジェクト

SAP エンドポイントは、SAP リクエストオブジェクトが含まれるメッセージボディーを持つメッセージを受信することを想定し、SAP 応答オブジェクトが含まれるメッセージボディーを持つメッセージを返します。SAP 要求および応答は、事前定義データタイプを持つ名前付きフィールドが含まれる固定マップデータ構造です。
SAP 要求および応答の名前付きフィールドは SAP エンドポイントに固有のものであり、各エンドポイントが SAP 要求でパラメーターを定義し、応答することに注意してください。SAP エンドポイントは、要求オブジェクトおよびそれに固有の応答オブジェクトを作成するためのファクトリーメソッドを提供します。
public class SAPEndpoint ... {
    ...
    public Structure getRequest() throws Exception;

    public Structure getResponse() throws Exception;
    ...
}
Copy to Clipboard Toggle word wrap

構造オブジェクト

SAP 要求および応答オブジェクトはいずれも、org.fusesource.camel.component.sap.model.rfc.Structure インターフェイスをサポートする構造オブジェクトとして Java で表されます。このインターフェイスは、java.util.Map インターフェイスと org.eclipse.emf.ecore.EObject インターフェイスの両方を拡張します。
public interface Structure extends org.eclipse.emf.ecore.EObject,
                                        java.util.Map<String, Object> {

    <T> T get(Object key, Class<T> type);

}
Copy to Clipboard Toggle word wrap
構造オブジェクトのフィールド値には、マップインターフェイスのフィールドの getter メソッドを介してアクセスします。さらに、構造インターフェイスは、フィールド値を取得するための type-restricted メソッドを提供します。
構造オブジェクトは、Eclipse Modeling Framework (EMF)を使用してコンポーネントランタイムに実装され、そのフレームワークの EObject インターフェイスをサポートします。構造オブジェクトのインスタンスには、提供するフィールドのマッピングの構造および内容を定義し、制限するメタデータが割り当てられます。このメタデータは、EMF が提供する標準の方法を使用してアクセスおよびイントロスペクションできます。詳細は、EMF のドキュメント を参照してください。
注記
構造オブジェクトに定義されていないパラメーターの取得を試みると、null を返します。構造に定義されていないパラメーターの設定を試みると、例外が発生し、誤ったタイプのパラメーターの値の設定を試みます。
以下のセクションで説明されているように、構造化オブジェクトには、複雑なフィールドタイプ( STRUCTURE および TABLE )の値が含まれるフィールドを含めることができます。これらのタイプのインスタンスを作成し、そのインスタンスを 構造に追加する必要はありません。これらのフィールド値のインスタンスは、エンクロージング構造でアクセスする際に必要な場合にオンデマンドで作成されます。

フィールドタイプ

SAP リクエストまたは応答の構造オブジェクト内にあるフィールドは、要素的 または 複雑な のいずれかになります。elementary フィールドには単一のスカラー値が含まれ、複雑なフィールドには要素型または複合型の 1 つ以上のフィールドが含まれます。

要素のフィールドタイプ

要素のフィールドは、文字、数値、16 進数、または文字列フィールドタイプのいずれかになります。以下の表では、構造オブジェクトに存在する可能性のある要素フィールドのタイプをまとめています。
Expand
フィールドタイプ 対応する Java タイプ Byte Length Unicode バイトの長さ Number Decimals Digits 説明
CHAR java.lang.String 1 から 65535 1 から 65535 - ABAP Type 'C': Fixed sized character string
DATE java.util.Date 8 16 - ABAP Type 'D': Date (format: YYYYMMDD)
BCD java.math.BigDecimal 1 から 16 1 から 16 0 から 14 ABAP Type 'P': Packed BCD 番号。BCD 番号には、バイトごとに 2 桁の数字が含まれます。
TIME java.util.Date 6 12 - ABAP Type 'T': Time (形式:HHMMSS)
BYTE byte[] 1 から 65535 1 から 65535 - ABAP Type 'X':Fixed sized byte array
NUM java.lang.String 1 から 65535 1 から 65535 - ABAP Type 'N': Fixed sized numeric character string
FLOAT java.lang.Double 8 8 0 から 15 ABAP Type 'F': Floating point number
INT java.lang.Integer 4 4 - ABAP Type 'I': 4-byte Integer
INT2 java.lang.Integer 2 2 - ABAP Type 'S': 2-byte Integer
INT1 java.lang.Integer 1 1 - ABAP Type 'B': 1-byte Integer
DECF16 java.match.BigDecimal 8 8 16 ABAP Type 'decfloat16': 8 -byte Decimal Floating Point Number
DECF34 java.math.BigDecimal 16 16 34 ABAP Type 'decfloat34': 16-byte Decimal Floating Point Number
STRING java.lang.String 8 8 - ABAP Type 'G': Variable length character string
XSTRING byte[] 8 8 - ABAP Type 'Y': Variable length byte array

文字フィールドタイプ

文字フィールドには、基礎となる JCo ランタイムおよび ABAP ランタイムで、Unicode 文字または Unicode 文字エンコーディングのいずれかを使用できる固定サイズの文字列が含まれています。Unicode 以外の文字文字列は、バイトごとに 1 文字をエンコードします。Unicode 文字文字列は、UTF-16 エンコーディングを使用して 2 バイトでエンコードされます。文字フィールドの値は Java で java.lang.String オブジェクトとして表され、基礎となる JCo ランタイムは ABAP 表現への変換を行います。
文字フィールドは、関連付けられた byteLength および unicodeByteLength プロパティーでフィールドの長さを宣言します。これは、各エンコーディングシステムでフィールドの文字文字列の長さを決定します。
CHAR
CHAR 文字フィールドは英数字が含まれるテキストフィールドで、ABAP タイプ C に対応します。
NUM
NUM 文字フィールドは数値文字のみを含む数値テキストフィールドで、ABAP タイプ N に対応します。
DATE
DATE 文字フィールドは、年、月、および日が YYYYMMDD としてフォーマットされた 8 文字の日付フィールドで、ABAP タイプ D に対応します。
TIME
TIME 文字フィールドは、時間、分、秒が HHMMSS としてフォーマットされた 6 文字の時間フィールドで、ABAP タイプ T に対応します。

数値フィールドタイプ

数値フィールドには数字が含まれます。以下の数字フィールドタイプがサポートされます。
INT
INT numeric フィールドは、基礎となる JCo および ABAP ランタイムの 4 バイトの整数値として保存される整数フィールドで、ABAP タイプ I に対応します。INT フィールドの値は、Java で java.lang.Integer オブジェクトとして表されます。
INT2
INT2 numeric フィールドは、基礎となる JCo および ABAP ランタイムの 2 バイトの整数値として保存される整数フィールドで、ABAP タイプ S に対応します。INT2 フィールドの値は、Java で java.lang.Integer オブジェクトとして表されます。
INT1
INT1 フィールドは、基礎となる JCo および ABAP ランタイム値の 1 バイトの整数値として保存される整数フィールドで、ABAP タイプ B に対応します。INT1 フィールドの値は、Java で java.lang.Integer オブジェクトとして表されます。
FLOAT
FLOAT フィールドは、基礎となる JCo および ABAP ランタイムの 8 バイトの 2 つの値として保存されるバイナリー浮動小数点数フィールドで、ABAP タイプ F に対応します。FLOAT フィールドは、フィールドの値が関連する 10 進数のプロパティーに含まれる 10 進数の数を宣言します。FLOAT フィールドでは、この 10 進数のプロパティーの値は 1 から 15 桁の値になります。FLOAT フィールド値は Java で java.lang.Double オブジェクトとして表されます。
BCD
BCD フィールドは、基礎となる JCo および ABAP ランタイムの 1 から 16 バイトパックの数字として保存されたバイナリーコード 10 進数フィールドで、ABAP タイプ P に対応します。パックされた数字は、1 バイトに 2 桁の数字を保存します。BCD フィールドは、関連付けられた byteLength および unicodeByteLength プロパティーでフィールドの長さを宣言します。BCD フィールドの場合、これらのプロパティーの値は 1 ~ 16 バイトになり、いずれのプロパティーも同じ値になります。BCD フィールドは、関連する decimal プロパティーでフィールドの値に含まれる 10 進数の数を宣言します。BCD フィールドでは、この 10 進数のプロパティーの値は 1 から 14 桁の値になります。BCD フィールド値は Java で java.math.BigDecimal として表されます。
DECF16
DECF16 フィールドは、基礎となる JCo ランタイムおよび ABAP ランタイムの浮動小数点値 8 バイトの IEEE 754 decimal64 浮動小数点値として保存され、ABAP タイプ decfloat16 に対応します。DECF16 フィールドの値には、16 桁の数字が含まれます。DECF16 フィールドの値は Java で java.math.BigDecimal として表されます。
DECF34
DECF34 フィールドは、基礎となる JCo ランタイムおよび ABAP ランタイムの浮動小数点値 16 バイト IEEE 754 decimal128 として保存され、ABAP タイプ decfloat34 に対応します。DECF34 フィールドの値には、34 桁の数字が含まれます。DECF34 フィールドの値は Java で java.math.BigDecimal として表されます。

16 進数フィールドタイプ

16 進数フィールドには raw バイナリーデータが含まれます。以下の 16 進数フィールドタイプがサポートされます。
BYTE
BYTE フィールドは、基礎となる JCo および ABAP ランタイムのバイト配列として保存される固定サイズのバイト文字列で、ABAP タイプ X に対応します。BYTE フィールドは関連する byteLength および unicodeByteLength プロパティーでフィールドの長さを宣言します。BYTE フィールドの場合、これらのプロパティーの値は 1 ~ 65535 バイトになり、両方のプロパティーの値が同じになります。BYTE フィールドの値は、Java で byte[] オブジェクトとして表されます。

文字列フィールドタイプ

文字列フィールドは、変数長の文字列値を参照します。この文字列値の長さは、ランタイムまで固定されません。文字列値のストレージは、基礎となる JCo および ABAP ランタイムに動的に作成されます。文字列フィールド自体のストレージが修正され、文字列ヘッダーのみが含まれます。
STRING
STRING フィールドは文字文字列を参照し、基礎となる JCo および ABAP ランタイムを 8 バイトの値として格納されます。ABAP タイプ G に対応します。STRING フィールドの値は Java で java.lang.String オブジェクトとして表されます。
XSTRING
XSTRING フィールドはバイト文字列を参照し、基礎となる JCo および ABAP ランタイムを 8 バイトの値として格納されます。ABAP タイプ Y に対応します。STRING フィールドの値は Java で byte[] オブジェクトとして表されます。

複雑なフィールドタイプ

複雑なフィールドは、構造フィールドまたはテーブルフィールドタイプのいずれかになります。以下の表では、これらの複雑なフィールドタイプをまとめています。
Expand
フィールドタイプ 対応する Java タイプ Byte Length Unicode バイトの長さ Number Decimals Digits 説明
STRUCTURE org.fusesource.camel.component.sap.model.rfc.Structure 個々のフィールドバイト長の合計 個々のフィールド Unicode バイト長の合計 - ABAP Type 'u' & 'v': Heterogeneous Structure
TABLE org.fusesource.camel.component.sap.model.rfc.Table 行構造のバイト長 Unicode バイト長の行構造 - ABAP タイプ 'h': テーブル

構造化フィールドタイプ

STRUCTURE フィールドには構造オブジェクトが含まれ、下層の JCo および ABAP ランタイムに ABAP 構造レコードとして保存されます。ABAP タイプ u または v に対応します。STRUCTURE フィールドの値は、Java でインターフェイス org.fusesource.camel.component.sap.model.rfc.Structure を持つ構造オブジェクトとして表されます。

テーブルフィールドタイプ

TABLE フィールドにはテーブルオブジェクトが含まれ、下層の JCo および ABAP ランタイムに ABAP 内部テーブルとして保存されます。ABAP タイプ h に対応します。フィールドの値は、インターフェイス org.fusesource.camel.component.sap.model.rfc.Table のあるテーブルオブジェクトによって Java で表されます。

テーブルオブジェクト

テーブルオブジェクトは、同じ構造を持つ構造オブジェクトの行を含む同種のデータ構造です。このインターフェイスは、java.util.List インターフェイスと org.eclipse.emf.ecore.EObject インターフェイスの両方を拡張します。
public interface Table<S extends Structure> 
    extends org.eclipse.emf.ecore.EObject,
    java.util.List<S> {

    /**
     * Creates and adds table row at end of row list
     */
    S add();

    /**
     * Creates and adds table row at index in row list
     */
    S add(int index);

}
Copy to Clipboard Toggle word wrap
テーブルオブジェクトの行一覧は、リストインターフェイスで定義された標準の方法を使用してアクセスおよび管理されます。また、テーブルインターフェイスは、構造オブジェクトを作成および行リストに追加する 2 つのファクトリーメソッドを提供します。
テーブルオブジェクトは、Eclipse Modeling Framework (EMF)を使用してコンポーネントランタイムに実装され、そのフレームワークの EObject インターフェイスをサポートします。テーブルオブジェクトのインスタンスには、提供する行の構造と内容を定義し、制限するメタデータがアタッチされます。このメタデータは、EMF が提供する標準の方法を使用してアクセスおよびイントロスペクションできます。詳細は、EMF のドキュメント を参照してください。
注記
間違ったタイプの行構造値を追加または設定しようとすると、例外が発生します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat