ABAPサブスクリーンチュートリアル:サブスクリーンの呼び出し SAP
このチュートリアルを読む前に、ダイアログ プログラムとは何かを確認してください。
通話サブ画面
- サブ画面は、別の(「メイン」)画面の領域に表示される独立した画面です。
- サブ画面を使用すると、実行時に XNUMX つの画面を別の画面に埋め込むことができます。 メイン画面上に複数のサブ画面を含めることができます。
- サブ画面という用語は、埋め込む画面と、それを配置するメイン画面上の領域の両方に適用されます。 このチュートリアルはサブスクリーン領域に関するものです。 SE51 トランザクションを通じて作成される実際の画面を、画面属性で定義されている場合は従属画面と呼びます。
- サブ画面を使用すると、埋め込まれた画面のフロー ロジックもメイン画面のフロー ロジックに埋め込まれます。したがって、画面上でサブ画面を使用することは、 ABAPプログラム.
サブ画面を使用するには、XNUMX つの簡単な手順に従う必要があります。
- 画面上のサブ画面領域を定義します。
- 適切な従属画面を定義する
- 従属画面領域に従属画面を含めます。
また、サブ画面とメイン画面のフレームを調整する必要があります。 フィールド名フィールドに名前を付ける必要があります。
さらに、サブ画面内のフィールドをメイン画面に表示されるように調整する必要もあります。 サブ画面がメイン画面の利用可能な領域より大きく定義されている場合、利用可能な領域に収まるサブ画面の一部のみが表示されます。 面積は常に画面の左上隅から測定されます。 したがって、サブ画面領域を定義し、サブ画面を作成するときは、十分な注意が必要です。
実施例
たとえばここでは、メイン画面上に XNUMX つのサブ画面領域を定義し、XNUMX つの異なるサブ画面を対応する領域に接続しています。 メイン画面が呼び出されるたびに、メイン画面の PBO が呼び出されます。 ただし、表示前に、メイン画面上のサブ画面領域に接続された各画面の PBO も呼び出されます。
メイン画面のフロー ロジックで CALL SUBSCREEN ステートメントを使用して、サブ画面画面を含めることができます。
メイン画面のサブ画面領域にサブ画面画面を含め、その PBO フロー ロジックを呼び出すには、メイン画面の PBO イベントで次のステートメントを使用します。
PROCESS BEFORE OUTPUT. CALL SUBSCREEN <area> INCLUDING [<prog>] <dynp>.
このステートメントは、従属画面に番号を割り当てます。 というサブスクリーン領域に。 従属画面が定義されているプログラムを指定することもできます (オプション)。 プログラムを明示的に指定しない場合、システムはメインプログラムと同じ ABAP プログラム内で従属画面を検索します。 対応する従属画面が見つからない場合は、実行時エラーが発生します。 従属画面の PBO フロー ロジックも同じポイントに含まれます。 これにより、従属画面が定義されている ABAP プログラムの PBO モジュールを呼び出すことができます。 従属画面 PBO の最後に、プログラムのグローバル項目が従属画面内の同じ名前の画面項目に渡されます。 従属画面画面の PBO フロー ロジック自体に、さらに従属画面を含めることができます。
名前従属画面領域の値は、逆カンマを使用せずに直接入力する必要があります。 名前を指定できますそしてリテラルまたは変数として。 変数を使用する場合は、ABAP プログラム内で同じ名前の変数を宣言して設定する必要があります。 画面番号長さは 4 文字である必要があります。 従属画面をエリアに割り当てない場合、そのエリアは空のままになります。
サブ画面の PAI フロー ロジックを呼び出すには、メイン画面の PAI フロー ロジックで次のステートメントを使用します。
PROCESS AFTER INPUT. CALL SUBSCREEN <area>.
このステートメントには、従属画面領域に含まれる従属画面の PAI フロー ロジックが含まれます。 PBOイベントにて。 これにより、従属画面が定義されている ABAP プログラムの PAI モジュールを呼び出すことができます。 データは、PAI イベントのトリガ時、または従属画面の PAI フローロジック内の対応する FIELD ステートメントのいずれかで、従属画面画面内の同じ名前の項目と ABAP プログラムの間で転送されます。
覚えておくべきポイント
- 画面内のサブ画面の要素の名前は一意である必要があります
- サブ画面に OK_CODE または FCODE を付加しないでください。 メイン画面自体の OK_CODE がサブ画面の OK_CODE になります
- サブ画面には、SET TITLEBAR、SET PF-STATUS、SET SCREEN、LEAVE SCREEN、または LEAVE TO SCREEN を含むダイアログ モジュールを含めることはできません。 これにより実行時エラーが発生します。
- メイン画面のフロー ロジック (PBO と PAI の両方) で呼び出す必要があります。
- CALL SUBSCREEN は CHAIN..ENDCHAIN および LOOP ENDLOOP ステートメントでは使用できません。
- AT EXIT-COMMAND モジュールは使用できません
- 使用するフィールドはグローバル フィールドです。 これらは先頭のインクルードで宣言する必要があります
- 他のサブ画面を使用する場合 ダイアログプログラム 特定のコードを追加しない限り、データ転送は行われません。