検索

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

download PDF

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

SAP エンドポイントは、SAP リクエストオブジェクトを含むメッセージボディーを持つメッセージを受信し、SAP 応答オブジェクトが含まれるメッセージのボディーが含まれるメッセージを返します。SAP リクエストと応答は、名前付きフィールドを含む名前付きフィールドを含むデータ構造を、事前定義したデータタイプを持つ固定です。

SAP リクエストと応答の名前付きフィールドは SAP エンドポイントに固有のもので、SAP リクエストのパラメーターを定義するエンドポイントごとに、受け入れる応答があります。SAP エンドポイントは、それに固有のリクエストおよび応答オブジェクトを作成するためのファクトリーメソッドを提供します。

public class SAPEndpoint ... {
    ...
    public Structure getRequest() throws Exception;

    public Structure getResponse() throws Exception;
    ...
}

構造オブジェクト

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

}

構造オブジェクトのフィールド値は、マップインターフェースのフィールドの getter メソッドを介してアクセスされます。さらに、構造インターフェースは、フィールド値を取得するタイプ制限方法を提供します。

構造オブジェクトは、Eclipse Modeling Framework(EMF)を使用してコンポーネントランタイムに実装され、そのフレームワークの EObject インターフェースをサポートします。構造オブジェクトのインスタンスには、提供されるフィールドのマップの構造と内容を定義して制限する meta-data がアタッチされています。このメタデータには、EMF が提供する標準メソッドを使用してアクセスし、イントロスペクションすることができます。詳細は、EMF ドキュメントを参照してください。

注記

構造オブジェクトに定義されていないパラメーターの取得を試みると、null を返します。構造に定義されていないパラメーターの設定を試みると、例外がスローされ、間違ったタイプでパラメーターの値を設定しようとします。

以下のセクションで説明されているように、構造オブジェクトには、複雑なフィールドタイプの値( STRUCTURE および TABLE )が含まれるフィールドを含めることができます。これらのタイプのインスタンスを作成して構造に追加する必要はないことに注意してください。エンクロージング構造でアクセスする際に必要に応じて、このフィールド値のインスタンスがオンデマンドで作成されます。

フィールドタイプ

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

要素フィールドタイプ

要素フィールドには、文字、数字、16 進数、または文字列フィールドタイプを使用できます。以下の表は、構造オブジェクトに存在する可能性のある要素フィールドのタイプをまとめたものです。

フィールドタイプ

対応する Java タイプ

Byte Length

Unicode Byte Length

number Decimals Digits

説明

CHAR

java.lang.String

1 から 65535

1 から 65535

-

ABAP Type 'C': サイズ化された文字文字列を修正

DATE

java.util.Date

8

16

-

ABAP タイプ 'D': 日付(形式: YYYYMMDD)

BCD

java.math.BigDecimal

1 から 16

1 から 16

0 から 14

ABAP Type 'P': Packed BCD 番号。BCD 番号には、1 バイトあたり 2 桁の数字が含まれます。

時間

java.util.Date

6

12

-

ABAP タイプ 'T': 時間(形式: 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': サイズ化された数値文字列の修正

浮動小数点

java.lang.Double

8

8

0 から 15

ABAP Type 'F': Floating Point number

INT

java.lang.Integer

4

4

-

ABAP Type 'I': 4 バイト整数

INT2

java.lang.Integer

2

2

-

ABAP Type 'S': 2 バイト整数

INT1

java.lang.Integer

1

1

-

ABAP Type 'B': 1 バイト整数

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 バイトデクリアル浮動小数点数

STRING

java.lang.String

8

8

-

ABAP Type 'G': 変数の長さの文字列

XSTRING

byte[]

8

8

-

ABAP Type 'Y': 変数長バイト配列

文字フィールドタイプ

文字フィールドには、基礎となる JCo および ABAP ランタイムでUnicode 以外の文字エンコーディングを使用できる固定された文字文字列が含まれます。ユニコード以外の文字文字列は、1 バイトごとに 1 文字エンコードされます。Unicode 文字文字列は、UTF-16 エンコーディングを使用して 2 つのバイトでエンコードされます。文字フィールドの値は Java で java.lang.String オブジェクトとして表され、基礎となる JCo ランタイムは ABAP 表現への変換を行います。

文字フィールドは、関連付けられた バイト長と unicodeByteLength プロパティーでフィールドの長さを宣言します。これは、各エンコーディングシステムのフィールドの文字文字列の長さを決定します。

CHAR
CHAR 文字フィールドは、英数字を含むテキストフィールドで、ABAP タイプ C に対応します。
NUM
NUM 文字フィールドは数字のみが含まれる数値テキストフィールドで、ABAP タイプ N に対応します。
DATE
DATE 文字フィールドは 8 文字の日付フィールドで、YYYYMMDD としてフォーマットされた月、日付け、および ABAP タイプ D に対応します。
時間
TIME 文字フィールドは、時間、分、秒が HHMMSS としてフォーマットされ、ABAP タイプ T に対応する 6 文字の時間フィールドです。

数値フィールドタイプ

数値フィールドには数字が含まれます。以下の数値フィールドタイプがサポートされます。

INT
INT 数値フィールドは、基礎となる JCo および ABAP ランタイムの 4 バイトの整数値として保存される整数値で、ABAP タイプ I に対応します。INT フィールドの値は、Java で java.lang.Integer オブジェクトとして表します。
INT2
INT2 数値フィールドは、基礎となる JCo および ABAP ランタイムの 2 バイトの整数値として保存される整数値で、ABAP タイプ S に対応します。INT2 フィールドの値は、Java で java.lang.Integer オブジェクトとして表します。
INT1
INT1 フィールドは、基礎となる JCo および ABAP ランタイム値の 1 バイトの整数値として保存される整数値で、BAAP タイプ B に対応します。INT1 フィールドの値は、Java で java.lang.Integer オブジェクトとして表します。
浮動小数点
FLOAT フィールドは、基礎となる JCo および ABAP ランタイムの 8 バイトの二重値として保存されるバイナリー浮動小数点数フィールドで、ABAP タイプ F に対応します。FLOAT フィールドは、フィールドの値が関連する 10 進数プロパティーに含まれる 10 進数の数字を宣言します。FLOAT フィールドの場合、この 10 進数プロパティーには 1 桁から 15 桁の数字の値を指定できます。FLOAT フィールドの値は、Java で java.lang.Double オブジェクトとして表されます。
BCD
BCD フィールドは、基礎となる JCo および ABAP ランタイムの 1 から 16 バイトパック番号として保存されたバイナリーコード 10 進数フィールドで、ABAP タイプ P に対応します。パック番号は、1 バイトあたり 10 進数のデータを格納します。BCD フィールドは、関連付けられた バイト長および unicodeByteLength プロパティーでフィールドの長さを宣言します。BCD フィールドの場合、これらのプロパティーは 1 バイトから 16 バイトの間に値を持ち、両方のプロパティーに同じ値が設定されます。BCD フィールドは、フィールドの値が関連付けられた 10 進数プロパティーに含まれる 10 進数の数を宣言します。BCD フィールドの場合、この 10 進数プロパティーには 1 桁から 14 桁の値を使用できます。BCD フィールドの値は、Java で java.math.BigDecimal として表されます。
DECF16
DECF16 フィールドは 10 進数の浮動小数点として、基礎となる JCo および ABAP ランタイムの 8 バイトの IEEE 754 浮動小数点として保存され、ABAP タイプの decfloat16 に対応します。DECF16 フィールドの値には 16 桁の数字があります。DECF16 フィールドの値は、Java では java.math.BigDecimal として表されます。
DECF34
DECF34 フィールドは 10 進数の浮動小数点として、基礎となる JCo および ABAP ランタイムの 16 バイトの IEEE 754 浮動小数点として保存され、ABAP タイプの decfloat34 に対応します。DECF34 フィールドの値には、34 桁の数字があります。DECF34 フィールドの値は、Java では java.math.BigDecimal として表されます。

16 進数のフィールドタイプ

16 進数フィールドには raw バイナリーデータが含まれます。以下の 16 進数のフィールドタイプがサポートされます。

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

string field types

文字列フィールドは変数長の文字列値を参照します。その文字列値の長さは、ランタイムまで固定されません。文字列値のストレージは、基礎となる JCo および ABAP ランタイムに動的に作成されます。文字列フィールド自体のストレージが修正され、文字列ヘッダーのみが含まれます。

STRING
STRING フィールドは文字文字列を参照し、基盤となる JCo および ABAP ランタイムに 8 バイトの値として保存されます。これは ABAP タイプ G に対応します。STRING フィールドの値は Java で java.lang.String オブジェクトとして表されます。
XSTRING
XSTRING フィールドはバイト文字列を参照し、基盤となる JCo および ABAP ランタイムに 8 バイトの値として保存されます。これは ABAP タイプ Y に対応します。STRING フィールドの値は Java で byte[] オブジェクトとして表されます。

複雑なフィールドタイプ

複雑なフィールドは structure または table フィールドタイプのいずれかになります。以下の表では、これらの複雑なフィールドタイプをまとめています。

フィールドタイプ

対応する Java タイプ

Byte Length

Unicode Byte Length

number Decimals Digits

説明

構造

org.fusesource.camel.component.sap.model.rfc.Structure

個別のフィールドバイト長の合計

個別のフィールド Unicode バイトの長さの合計

-

ABAP Type 'u' & 'v': 異種構造

テーブル

org.fusesource.camel.component.sap.model.rfc.Table

行構造のバイト長

行構造の Unicode バイト長

-

ABAP Type 'h': Table

構造のフィールド型

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

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

TABLE フィールドには、テーブルオブジェクトが含まれており、BAAP 内部テーブルとして基礎となる JCo および 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);

}

テーブルオブジェクトの行のリストは、リストインターフェースで定義された標準のメソッドを使用してアクセスおよび管理されます。テーブルインターフェース以外に、構造オブジェクトを行リストに追加する 2 つのファクトリーメソッドが提供されます。

テーブルオブジェクトは、Eclipse Modeling Framework(EMF)を使用してコンポーネントランタイムに実装され、そのフレームワークの EObject インターフェースをサポートします。テーブルオブジェクトのインスタンスには、提供される行の構造と内容を定義して制限する meta-data がアタッチされています。このメタデータには、EMF が提供する標準メソッドを使用してアクセスし、イントロスペクションすることができます。詳細は、EMF ドキュメントを参照してください。

注記

誤ったタイプの行構造の値を追加または設定しようとすると、例外が発生します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.