!--a11y-->

ユーザにとって、アプリケーションプログラムは、順に表示される一連の画面であるということができます。実行可能プログラムとダイアログプログラムのプログラムフローの大きな違いは、ダイアログプログラムにおいては、画面を任意の順序で表示するようプログラムできることです。実行可能プログラムにおいては、画面順序は、固定順序で発生するイベントにより制御されます。ダイアログプログラムでは、プログラマは自由に画面順序をプログラムすることができ、ユーザはユーザアクションによりプログラムフローに影響を与えることができます。ただし、実行可能プログラム内で自由定義の画面順序を呼び出して、ダイアログプログラムのフォームに分岐することも可能です。
画面は常に 1 つの ABAP プログラムに属します。ABAP プログラム内のダイアログモジュールの呼出は、同一プログラムの画面からのみ可能です。システム項目SY-DYNNR には常に、現在の画面の番号が含まれています。単一のプログラムの画面から、任意の数の複雑な画面順序を登録することができます。たとえば、同一プログラムの 1 つの画面から別の画面へナビゲートしたり、1 つの順序の一部分を任意の回数だけ繰り返したりできます。
画面順序を開始するには、第一画面を呼び出す必要があります。そのためには、トランザクションを開始するか ( 第一画面はトランザクション定義に含まれています) 、または ABAP プログラムの CALL SCREEN 命令を使用します。CALL SCREEN 命令を使用して画面順序を呼び出すときには、その時点ですでに実行されている画面順序内でネストします。
実際の画面順序は、チェーン内の各画面に対して次画面を設定することにより定義されます。スクリーンペインタの 各画面の属性には、静的に定義された次画面が含まれています。これにより、静的画面順序が形成されます。ただし、ABAP では、処理ブロック内の静的に定義された次画面を上書きして、動的画面順序を定義することができます。これはプログラムとのユーザインタラクションに依存することがあります。
また、すべての画面を表示することなく、画面順序を実行することもできます。SUPPRESS DIALOG 命令を使用すれば、画面を非表示にすることができます。対象の画面の PBO モジュールにこの命令を挿入します。SUPPRESS DIALOG を使用すると、画面自体は表示されませんが、PBO および PAI ロジック全体が処理されます。画面順序内で一覧を表示する必要のある場合、画面を非表示にすることは有用です ( 画面と一覧の切替を参照してください) 。
画面順序は、次画面番号ゼロに到達すると、必ず終了します。そのため、番号 0 の画面を登録することはできません。番号 0 を使用するのは、画面順序を終了させるときにしてください。画面順序が終了すると、順序内の第一画面が呼び出されたポイントに戻ります。トランザクションコードを使用して画面順序を開始した場合には、これがトランザクションを開始したポイントとなります。CALL SCREEN を使用して画面順序を開始した場合には、これは ABAP プログラム内の命令が発生したポイントです。
以下のセクションで画面順序の定義方法の詳細を説明しています。