このステップでは、切り替え履歴を使用して、エンドユーザーが切り替えを行った元の部門ビジネス・オブジェクトに戻れるようにします。
define field(#ff_objnme) TYPE(*CHAR) LENGTH(32) DESC('Object Name')
define field(#ff_cmdnme) TYPE(*CHAR) LENGTH(32) DESC('Command Name')
* Determine the business object name to switch to
#avFrameworkManager.avrestorevalue WithID1(SWITCH_HISTORY) WithID2(#com_owner.Avobjecttype) WithID3(#com_owner.Avcommandtype) WithID4(OBJECT_NAME) ToAValue(#ff_objnme)
* Determine which command within the business object to switch to
#avFrameworkManager.avrestorevalue WithID1(SWITCH_HISTORY) WithID2(#com_owner.Avobjecttype) WithID3(#com_owner.Avcommandtype) WithID4(COMMAND_NAME) ToAValue(#ff_cmdnme)
* Perform the switch
#avframeworkmanager.avSwitch To(BUSINESSOBJECT) NAMED(#ff_objnme) EXECUTE(#ff_cmdnme) Caller(#com_owner)
ユーザーを切り替えを行った元のコンポーネントに戻す場合は、仮想クリップボードで切り替え履歴を参照する必要があります。 戻り先となるビジネス・オブジェクトとコマンドの両方を取得する必要があります。 このためには、仮想クリプボードから 2 つの値を取得する必要があります。
コードで、まず OBJECT_NAME (ビジネス・オブジェクトの値) を、次に COMMAND_NAME (コマンドの値) を取得します。
コンポ―ネント名はハード・コーディングしないようにしてください。avobjecttype (ビジネス・オブジェジェクト名) および avcommandtype (コマンド名) が WithID2 パラメータと WithID3 パラメータに対する値として使用されているのはこのためです。
これら 2 つの値を取得している場合は、もう 1 度切り替えを実行して以前のコンポーネントに戻ることができます。
上記のコードでは、取得されたビジネス・オブジェクトは #ff_objnme フィールドに、取得されたコマンドは #ff_cmdnme フィールドに入りました。 これで、以前に学習したものと同じテクニックを使用するだけで、ビジネス・オブジェクトに切り替え、コマンドを実行できるようになりました。
コードは、以下のようになります。