さまざまなタイプのBOPFエンティティはさまざまなインターフェイスを実装する必要がありますが、ビジネスロジックを実装するための共通のパターンと手法があります。この章では、これらの一般的なパターンについて説明します。
ビジネスオブジェクトの消費
ビジネスオブジェクトにアクセスする方法は、サービスレイヤーパターンに従います。つまり、ビジネス・オブジェクトは、そのコンシューマーが実行できる一連の一般的な操作(RETRIEVE、EXECUTE_ACTIONなど)によって抽象化されます。BOPFは、内部消費と外部消費を区別し、この目的のために2種類のAPIを定義します。
- BO内部アクセス用の内部アクセスAPI
- 外部BOにアクセスするためのServiceManagerAPI
内部BOアクセス
- IO_READ:ビジネスオブジェクトのインスタンスへの読み取りアクセスを提供するオブジェクト。このオブジェクトの最も一般的な使用法は、RETRIEVEメソッドを使用してデータを読み取るか、RETRIEVE_BY_ASSOCIATIONメソッドを使用して関連付けにナビゲートすることです。
- IO_MODIFY:ビジネスオブジェクトのインスタンスへの変更アクセスを提供するオブジェクト。これには、CREATE、UPDATE、およびDELETEメソッドによる直接変更だけでなく、EXECUTE_ACTIONメソッドによる間接変更も含まれます。
外部BOアクセス
いわゆるServiceManagerAPIは、外部ビジネスオブジェクトのサービスを利用するために使用されます。
定数インターフェイス
APIは、任意のビジネスオブジェクトによって実装される共通の操作を定義するため、これらの操作のシグネチャは一般的に入力され、コンシューマーは実際の操作によってアドレス指定される実際のBOエンティティを指定する必要があります。たとえば、RETRIEVE操作の署名では、ユーザーは読み取る実際のノードを指定する必要があります。または、EXECUTE_ACTIONを呼び出す場合、ユーザーは、呼び出されるアクションと、このアクションが割り当てられている対応するノードを指定する必要があります。特別な定数インターフェースは、ビジネス・オブジェクトの実際の部分を指定する際に中心的な役割を果たします。定数インターフェースは、ノード、アクション、ノード属性などのビジネス・オブジェクトのすべての部分の定数を定義します。各単一定数は、内部フレームワーク処理用のGUIDで表されます。
データの読み取り
BOデータの読み取りは、ビジネスロジックの主要なタスクの1つです。対応する操作(たとえば、RETRIEVE)には、読み取られたデータを受信するためのET_DATAというエクスポートパラメーターがあります。このパラメーターは一般的に型指定されているため、コンシューマーが読み取りデータに適合する実装で正しく型指定された変数を使用していることが重要です。正しく入力されているということは、対応するノードの結合テーブルタイプを使用する必要があることを意味します。
データの書き込み
アクションや決定などの一部のBOPFエンティティは、データを変更できます。BO内部変更の場合、実装はIAO IO_MODIFYで操作CREATE、UPDATE、またはDELETEを呼び出します。CHANGEおよびUPDATEには、ノードインスタンスの新しい値を引き継ぐために、一般的に型指定されたIS_DATAパラメーターがあります。この場合、CombinedStructureノードのデータ参照を操作する必要があります。
メッセージ
BOPFは、メッセージを返すことを目的としたエンティティに新しいメッセージコンテナEO_MESSAGEを提供します。最も顕著なエンティティは検証です。メッセージの概念は、ABAPクラスベースのメッセージに基づいています。メッセージをスローする必要があるエンティティは、/ BOBF / CM_FRWから継承するクラスに基づいてメッセージオブジェクトをインスタンス化し、最後にメッセージインスタンスをメッセージコンテナEO_MESSAGEに追加します。BOPFは、メッセージがサービスコンシューマーに返されるように注意します。エンティティの実行時にEO_MESSAGEがすでに初期化されていることを信頼できないことに注意してください。したがって、メソッド/ BOBF / CL_FRW_FACTORY => GET_MESSAGE()を使用する必要があります。
メッセージオブジェクトをインスタンス化するときは、エラーテキストの重大度と、エラーの場所に関する特定の情報を提供できる元の場所を指定する必要があります。たとえば、一貫性のない属性値の場合、UIは一貫性のない属性を指すことができます。BOPFメッセージオブジェクトには、ここで説明するコンストラクター内の他のパラメーターがいくつかあります。