269.5. RFC のメッセージボディー
要求および応答オブジェクト リンクのコピーリンクがクリップボードにコピーされました!
SAP エンドポイントは、SAP リクエストオブジェクトを含むメッセージボディーを持つメッセージを受信し、SAP 応答オブジェクトが含まれるメッセージのボディーが含まれるメッセージを返します。SAP リクエストと応答は、名前付きフィールドを含む名前付きフィールドを含むデータ構造を、事前定義したデータタイプを持つ固定です。
SAP リクエストと応答の名前付きフィールドは SAP エンドポイントに固有のもので、SAP リクエストのパラメーターを定義するエンドポイントごとに、受け入れる応答があります。SAP エンドポイントは、それに固有のリクエストおよび応答オブジェクトを作成するためのファクトリーメソッドを提供します。
構造オブジェクト リンクのコピーリンクがクリップボードにコピーされました!
SAP リクエストおよび応答オブジェクトはいずれも、org.fusesource.camel.component.sap.model.rfc.Structure インターフェースをサポートする構造オブジェクトとして Java で表されます。このインターフェースは、java.util.Map インターフェースと org.eclipse.emf.ecore.EObject インターフェースの両方を拡張します。
構造オブジェクトのフィールド値は、マップインターフェースのフィールドの 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 | 説明 |
|
|
| 1 から 65535 | 1 から 65535 | - | ABAP Type 'C': サイズ化された文字文字列を修正 |
|
|
| 8 | 16 | - | ABAP タイプ 'D': 日付(形式: YYYYMMDD) |
|
|
| 1 から 16 | 1 から 16 | 0 から 14 | ABAP Type 'P': Packed BCD 番号。BCD 番号には、1 バイトあたり 2 桁の数字が含まれます。 |
|
|
| 6 | 12 | - | ABAP タイプ 'T': 時間(形式: HHMMSS) |
|
|
| 1 から 65535 | 1 から 65535 | - | ABAP Type 'X':Fixed sized byte array |
|
|
| 1 から 65535 | 1 から 65535 | - | ABAP Type 'N': サイズ化された数値文字列の修正 |
|
|
| 8 | 8 | 0 から 15 | ABAP Type 'F': Floating Point number |
|
|
| 4 | 4 | - | ABAP Type 'I': 4 バイト整数 |
|
|
| 2 | 2 | - | ABAP Type 'S': 2 バイト整数 |
|
|
| 1 | 1 | - | ABAP Type 'B': 1 バイト整数 |
|
|
| 8 | 8 | 16 | ABAP Type 'decfloat16': 8 -byte Decimal Floating Point Number |
|
|
| 16 | 16 | 34 | ABAP Type 'decfloat34': 16 バイトデクリアル浮動小数点数 |
|
|
| 8 | 8 | - | ABAP Type 'G': 変数の長さの文字列 |
|
|
| 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フィールドは、関連付けられたバイト長およびプロパティーでフィールドの長さを宣言します。unicodeByteLengthBCDフィールドの場合、これらのプロパティーは 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フィールドは、関連するバイト長およびプロパティーでフィールドの長さを宣言します。unicodeByteLengthBYTEフィールドの場合、これらのプロパティーの値は 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 | 説明 |
|
|
| 個別のフィールドバイト長の合計 | 個別のフィールド Unicode バイトの長さの合計 | - | ABAP Type 'u' & 'v': 異種構造 |
|
|
| 行構造のバイト長 | 行構造の 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 インターフェースの両方を拡張します。
テーブルオブジェクトの行のリストは、リストインターフェースで定義された標準のメソッドを使用してアクセスおよび管理されます。テーブルインターフェース以外に、構造オブジェクトを行リストに追加する 2 つのファクトリーメソッドが提供されます。
テーブルオブジェクトは、Eclipse Modeling Framework(EMF)を使用してコンポーネントランタイムに実装され、そのフレームワークの EObject インターフェースをサポートします。テーブルオブジェクトのインスタンスには、提供される行の構造と内容を定義して制限する meta-data がアタッチされています。このメタデータには、EMF が提供する標準メソッドを使用してアクセスし、イントロスペクションすることができます。詳細は、EMF ドキュメントを参照してください。
誤ったタイプの行構造の値を追加または設定しようとすると、例外が発生します。