!--a11y-->
BIND 
ABAP データオブジェクトへの参照を JavaScript コンテキストに渡します。この結果 JavaScript プログラムは、これらのデータオブジェクトと直接アクセスできます。
ABAP は特定のデータ型に基いていますが、JavaScript は「緩やかな型定義」を使用します。そこではフィールドはユニークなデータ型を持たず、データ型はコンテンツおよびコンテキストにしたがって解釈されます。こうして ABAP タイプ階層内の多数の異なるタイプが、JavaScript タイプおよびオブジェクトに以下のようにマップされます。
ABAP の基本データ型は、JavaScript の基本データ型にマップされます。他の ABAP の複合データ型 ( 構造体、内部テーブル、参照) は、JavaScript の特別オブジェクトにマップされる必要があります。このためマップされた ABAP のそれぞれの複合データ型について、JavaScript の実行時環境では別のプロキシクラスが導入されます。ABAP の複合データオブジェクトを JavaScript コンテキストにバインドする場合、対応するプロキシクラスのオブジェクトが作成されます。JavaScript ではこのオブジェクトは、プロキシオブジェクトへの参照として動作します。
ABAP の複合データオブジェクトを JavaScript コンテキストにバインドする際は、プロキシオブジェクトのサイズが動的であることに注意してください。バインドの間に ABAP データオブジェクトが JavaScript または ABAP の中で変更される場合、システムはプロキシオブジェクトを再生成する必要があります。BIND メソッドは、単に指定された名前の JavaScript を ABAP データオブジェクトと静的にバインドしますが、その間にあるプロキシオブジェクトは交換することができます。後者はユーザに表示されません。
|
ABAP データ型 |
JavaScript でのマッピング |
|
I 、F |
Double |
|
C 、D 、N 、P T 、X 、STRING 、XSTRING |
String |
|
構造体 (struct) キ 構造体のコンポーネント (struct-comp) |
プロキシクラス: SAPAbapStructClass
キ
プロキシオブジェクトの同一名の属性
(
プロパティ、proxy.comp) |
|
内部標準テーブル (itab) テーブル (itab[] INDEX idx) 内のレコード |
プロキシクラス: SAPAbapStructClass キ プロキシオブジェクトにアクセスする配列 (proxy[idx]) |
|
データ参照 (dref) キ 参照解除されたデータ参照 (dref->*) キ 参照解除されたデータ参照のコンポーネント (dref->*-comp or dref ->comp) |
プロキシクラス: SAPAbapDrefClass キ プロキシオブジェクトの「データ」属性 ( プロパティ、proxy.data) キ プロキシオブジェクトの同一名の属性 ( プロパティ、proxy.data.comp) |
|
オブジェクト参照変数 (oref) キ ABAP オブジェクト (oref->attr) 内のオブジェクトのパブリックインスタンス属性 キ ABAP オブジェクト (oref->attr) 内のオブジェクトのパブリックインスタンスメソッド |
プロキシクラス: SAPAbapOrefClass キ プロキシオブジェクトの同一名の属性 ( プロパティ、proxy.attr) キ プロキシオブジェクトの呼び出されたメソッド (proxy.invoke) |
|
クラス (class) キ ABAP オブジェクト内のクラスの静的パブリック属性 (class=>attr) キ ABAP オブジェクト内のクラスの静的パブリックメソッド (class=>attr) |
プロキシクラス: SAPAbapOrefClass のプロパティクラス用の SAPAbapCrefClass キ プロキシオブジェクトの同一名の属性 ( プロパティ、proxy.Class.attr) キ プロキシオブジェクトの呼び出されたメソッド (proxy.Class.invoke) |
現在、その他の ABAP データオブジェクトはサポートされていません。しかし、ABAP では構造体のコンポーネントとしての標準テーブルなど、上で指定されたデータ型すべての組み合わせが可能です。
JavaScript プログラム内でバインドされたデータオブジェクトの変更は、直接 ABAP データオブジェクトの値の意味の変更になります。ただしこの方法では、基本データオブジェクトまたは複合/ 下位データオブジェクトの基本コンポーネントのみ変更できます。つまり、テーブルまたはオブジェクト属性中のレコードの基本部分です。データオブジェクトは、プロキシオブジェクトをポイントする JavaScript 参照に割り当てることはできません。たとえば、値を JavaScript 内のトップレベルのバインドオブジェクトに割り当てようとすると、そのスクリプトは終了します。さらに、プロキシオブジェクトのプロパティを追加または削除できません。
JavaScript 内のバインドデータオブジェクトが基本データオブジェクトまたは基本コンポーネントの場合、そのバインドデータオブジェクトは、他のJavaScript 変数にのみ割り当てることができます。
ABAP データオブジェクトをポイントする JavaScript 参照を別の JavaScript 変数に割り当てるには、参照機能を使用する必要があります。つまり割り当てた後、JavaScript 内の対象の変数は、ソース変数として ABAP 内の同一データオブジェクトをポイントします。内部テーブルが再組織されるか、ABAP 内でガーベッジコレクタが実行されると、バインド対象の変数は失なわれます。この種類の ABAP オブジェクトのコンテンツがメモリ内で変更されると、JavaScript 内で新規プロキシオブジェクトが生成されます。ソース変数は自動的に新規プロキシオブジェクトにバインドされますが、対象変数は依然として以前のプロキシオブジェクトをポイントしています。対象変数にアクセスしようとすると、一般にJavaScript は処理を停止するか、ABAP 実行時エラーが発生します。

JavaScript 対象変数 ( およびポイントされているプロキシオブジェクト) は、割り当て中の ABAP オブジェクトの状態のスナップショットを表わします。JavaScript と ABAP で交互に作業している場合、ABAP を終了した後に続いてこのスナップショットで作業しないようにします。
現在、ABAP_DESTRUCTOR メソッドを使用して関連する JavaScript コンテキストを削除することにより、BIND のみを使用してバインドセットを削除できます。
JavaScript オブジェクトの名称。この名称には最大 256 個の ABAP データオブジェクトをプロパティとしてバインドできます ( トップレベルのバインド) 。コンテキストでは、任意の数のトップレベルバインドを作成できます。空文字列を渡すと、ABAP データオブジェクトはルートオブジェクト ( たとえばグローバル変数) のプロパティにバインドされます。( これはルートレベルのバインドと呼ばれていますが、お奨めできません) 。
トップレベルバインドオブジェクトまたはルートオブジェクトのプロパティの名称。JavaScript コンテキスト内では、そのオブジェクトの下の ABAP データオブジェクトにアクセスが行われます。複合 ABAP データオブジェクトでは、これらのプロパティ名は、関連するプロキシオブジェクトのオブジェクトへの参照です。
ABAP データオブジェクトの名称。