!--a11y-->
プログラム式バインド 
バインド指示でプログラム式バインドを使用することができます。プログラム式バインドを使用して、以下のような、より複雑な割当を登録することができます。
● 割当前にコンテナエレメントで計算またはチェックを実行
● 割当前に 2 つ以上のコンテナエレメントを組合せる
バインドエディタで各行に対してプログラム式バインドを定義することができます。
プログラム式バインドを ABAP クラスまたは汎用モジュールとして導入することができます。
ABAP クラスを使用して、コンテナ → コンテナとデータ型 → データ型バインドを実装することができます。
ABAP クラスとして実装されているバインドが、拡張としてバインド命令の一覧に表示され、すべてのワークフローでも表示されます。そのため、この型の ABAP クラスは、全社的な拡張の作成に特に適しています。
このような拡張はバインドエディタで完全に統合されています。クラスに対する独自のチェックを導入し、バインドエディタで拡張の表示に使用される名称およびシンボルを選択します。
汎用モジュールを使用して、コンテナ → コンテナバインドを実装することができます。
汎用モジュールは、BOR コンテナインタフェースまたはコンテナインタフェースを使用することができます。

BOR コンテナインタフェースは互換性のためにサポートしています。そのため、以下の理由により、新規汎用モジュール用コンテナインタフェースを使用することをお奨めします。
● コンテナにはデータ型に関する制限がありません。BOR コンテナでは、REF TO、STRING、XSTRING、255 文字を超える項目といったデータ型はサポートされません。
● コンテナインタフェースにデータ型規則は必要ありません。これにより、パフォーマンスが向上します。
プログラム式バインドの ABAP クラスには、以下のインタフェースを実装する必要があります。
● データ型 → データ型バインド: IF_SWF_IFS_BIND_TRANSFORM
● コンテナ → コンテナバインド: IF_SWF_IFS_BIND_TRANSFORM_CONT
両方のインタフェースには以下のメソッドが含まれています。
インタフェースメソッド
メソッド |
内容説明 |
CHECK |
互換性チェック。データソースのデータ型をチェックすることができます。 クラスを選択すると、バインドエディタによってアクセスされます。 チェックが必要でない場合、エントリなしで実装することができます。 |
TRANSFORM |
ユーザ定義バインド指示。 実行時に呼び出されます。 |
GET_SUPPORTED_OPTIONS |
サポート対象オプションの一覧。表示する標準オプションを設定します。 バインドエディタによってアクセスされます。 |
静的CHECK および TRANSFORM メソッドが実装され、クラスが有効化されている場合、クラスは、(拡張の) バインド指示の一覧項目で選択として利用可能になります。
インタフェースによってソースデータ型および対象データ型が設定され、ユーザ定義クラスsource_element およびtarget_element へ転送されます。クラスによって、CHECK メソッドでソースデータ型および対象データ型のデータ型を設定することができます。
ソースデータ型を対象データ型へ追加する CL_SWF_BND_TRANS_ADD_TO デモクラスは、このタイプのバインドの一例です。ソースデータ型をテーブルにすることができます。
コンテナ → コンテナバインドは、対象コンテナでのみ変更を行うことができます。ソースコンテナでの変更は許可されていません。
インタフェースによってソースデータ型および対象データ型が設定され、ユーザ定義クラス source_container および target_container へ転送されます。
また、インタフェースによってバインドイベンド dataflow_event が CHECK および TRANSFORM メソッドへ転送されます。つまり、インポートイベントまたはエクスポートイベントのアクセスに対して異なる応答ができます。ワークフロー間のバインドに対して以下が適用されます。
● エクスポートイベントに関しては、ワークフローコンテナがソースコンテナに、タスクコンテナが対象コンテナになります。
● インポートイベントに関しては、タスクコンテナがソースコンテナに、ワークフローコンテナが対象コンテナになります。
CHECK メソッドで妥当性チェックを実行することができます。特定のエレメントがソースコンテナと対象コンテナのどちらで定義されているかチェックすることができます。
クラスは、IF_SWF_IFS_BIND_PRESENTATION インタフェースを実装することもできます。インタフェースは、クラスの名称、言語依存内容説明、およびアイコンを提供します。この情報は、バインド指示の一覧項目でクラスを選択した場合にのみ表示されます。
インタフェースメソッド
メソッド |
内容説明 |
GET_ICON |
クラス用に表示されるアイコン。 |
GET_NAME |
クラスに固有の言語依存の内容説明。"Add to" など。 |
GET_DESCRIPTION |
言語依存の内容説明。"Add to" など。 このバインドは、以下の場所で表示されます。 ● 拡張の一覧項目で ● クイックインフォとして ● 項目名として |
以下のメソッドは現在使用されていません。これらは実装する必要がありますが、空白のままにすることができます。
● GET_SYMBOL
● GET_TEXT_KEY
● TO_HTML
● TO_STRING
ワークフローの基本データで指定した汎用グループで、プログラム式バインド用の汎用モジュールを登録します。この汎用グループには、このワークフロー用に登録されたすべてのオブジェクトを含めてください。バインドエディタを使用して汎用モジュールを登録した場合、その汎用モジュールは、自動的に汎用グループに保存されます。ワークフローの基本データで汎用グループが指定されていない場合、自動的に 1 つの汎用グループが登録されます。
登録された新規汎用モジュールは、以下の汎用モジュールをベースにしています。
● BOR コンテナ: SWA_TEMPLATE_EXECUTE_DATAFLOW
● コンテナインタフェース: SWA_BINDING_TEMPLATE
インタフェースの内容説明およびプログラミングに関するノートは、汎用モジュール文書で閲覧することができます。