ステップ5. 切り替え履歴を使用して元のビジネス・オブジェクトに戻る
このステップでは、切り替え履歴を使用してエンド・ユーザーが切り替えを開始したSectionsビジネス・オブジェクトに戻れるようにします。
1. Employeesの詳細コマンド・ハンドラーiiiCOM03を開きます。
2. [お気に入り]タブの[共通の制御]タブを表示し、プッシュ・ボタンを[保存]ボタンの下にドラッグします。
3. ボタンのキャプションを[戻る]にします。
4. ボタン名をBACK_BTNにします。
5. ボタンにクリック・イベントを追加します。
6. クリック・イベントに、次のコードを追加し、ユーザーがボタンをクリックしたときに元のビジネス・オブジェクトに戻されるようにします。
EVTROUTINE HANDLING(#BACK_BTN.Click)
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)
ENDROUTINE
· ユーザーを切り替えを開始したコンポーネントに戻す場合は、仮想クリップボードで切り替え履歴を参照する必要があります。戻り先となるビジネス・オブジェクトとコマンドの両方を取得する必要があります。それには、仮想クリプボードから2つの値を取得する必要があります。
· コードで、まずOBJECT_NAME(ビジネス・オブジェクトの値)を、次にCOMMAND_NAME(コマンドの値)を取得します。
· コンポ―ネント名はハード・コーディングしません。そのため、avobjecttype (ビジネス・オブジェジェクト名)およびavcommandtype (コマンド名)がWithID2パラメータとWithID3パラメータに対する値として使用されました。
· これら2つの値を取得している場合は、もう1度切り替えを実行して以前のコンポーネントに戻ることができます。
· 上記のコードでは、取得されたビジネス・オブジェクトは#ff_objnmeフィールドに、取得されたコマンドは#ff_cmdnmeフィールドに入りました。これで、以前に学習したものと同じテクニックを使用するだけで、ビジネス・オブジェクトに切り替え、コマンドを実行できるようになりました。
コードは、次のようになります。
7. コマンド・ハンドラーをコンパイルします。
これで、切り替え履歴をテストする準備が整いました。
8. フレームワークで、Department Sectionsビジネス・オブジェクトから課を選択します。
9. Sectionsの詳細コマンド・ハンドラーで社員を選択します。
10. [詳細]ボタンをクリックして、選択した社員の詳細を表示します。
11. Employeesビジネス・オブジェクトの詳細コマンド・ハンドラーで、[戻る]ボタンをクリックしてSectionsビジネス・オブジェクトに戻ります。