!--a11y-->

GUI
ステータスは ABAP
プログラムの独立したコンポーネントです。GUI
ステータスの作成は、
ABAP
ワークベンチ
で
メニューペインタを使って行います。関連する文書で、GUI
ステータスとそのエレメントの作成に関する包括的な情報を提供しています。そのうち最も重要な詳細について、以下に説明します。
GUI ステータスの機能はユーザに Dynpro 上の広範な機能を提供することです。各機能には機能コードが関連付けられており、ユーザが機能を選択すると、PAI イベントがトリガされます。各PAI イベントでは、機能コードは空白の場合を除いてシステム項目 SYST-UCOMM (SY-UCOMM) に取り込まれ、OK_CODE 項目に割り当てられます。空白の機能コードは SY-UCOMM 項目にも OK_CODE 項目にも取り込まれません。OK_CODE 項目を処理するためには、事前にスクリーンペインタでそれに名称を割り当てる必要があります。追加情報については、機能コードの読込を参照してください。
ABAP プログラムの機能コードは、Dynpro 上で単に押ボタンに割り当てられるものを除いて、すべてメニューペインタで定義および管理されます。
メニューペインタで機能コードを定義するときには、メニューバーのメニューエントリと、必要に応じてキーボード上の任意割当機能キーに機能コードを割り当てます。機能キーに割り当てた機能コードは、標準ツールバーのアイコンまたはアプリケーションツールバーの押ボタンにも割り当てることができます。GUI
ステータスは、メニューバー、標準ツールバー、アプリケーションツールバー、および機能キーの設定で構成されています。各機能コードについて、静的機能テキストと
動的機能テキストがあります。動的機能テキストでは、ABAP
プログラムでコンテキスト依存テキストを使用することができます。
ユーザインタフェースは使用可能なすべての機能を視覚化したものであり、プログラムを使いやすくする目的で使用されます。技術的な観点からいえば、コマンドフィールドに機能コードを入力し、Enter を押して PAI イベントをトリガするだけのことですが、GUI ステータスにはメニューエントリとしてすべての機能コードを組み込みます。特に重要な機能は機能キーにも割り当てます。さらに、そのなかでも特に重要な機能は標準ツールバーやアプリケーションツールバーのアイコンにも割り当てます。
メニューペインタで、機能を標準ツールバーのアイコンに割り当てる場合は、特定の機能キーにもその機能を割り当てる必要があります。機能キーは自由に割り当てることはできません。機能キーをアイコンに割り当てると、対応する機能キーにその機能キーが自動で割り当てられます。前画面
(F3)
、終了
(Shift+F3)
、および取消
(F12)
機能の少なくともいずれか 1
つを常に有効に設定し、ユーザが通常の方法でいつでも Dypro
を終了できるようにします。アプリケーションツールバーの押ボタンへの機能キーの割当は固定されていません。
インタフェースエレメントに機能キーを割り当てるときには、
SAP
スタイルガイド
の人間工学のガイドラインを参照してください。メニューペインタでは、表示標準機能および対応するチェックを使用できるため、この面に関するヘルプを利用できます。
PAI イベントをトリガする通常のアプリケーション機能の機能コードだけでなく、別のトランザクションの呼出やシステム機能のトリガなどの他の機能の機能コードについても、メニューペインタで作成することができます。Dynpro 上の押ボタンの特殊な機能コードも作成できますが、その場合はメニューメインタまたはスクリーンペインタで機能コードに別の機能タイプを割り当てる必要があります。
また、メニューペインタでは分野メニューも作成することができます。分野メニューは ABAP プログラムに属さないユーザインタフェースなので、分野メニューでは PAI イベントはトリガされません。分野メニューにはトランザクションまたはシステム機能を呼び出す機能コードが組み込まれます。分野メニューの例として、R/3 システムの第一画面 (S000) や ABAP ワークベンチの第一画面 (S001) などがあります。
一部のキーや機能コードには特殊な機能があります。このセクションでは Dynpro 上の特殊な機能について説明します。また、一覧に適用される特殊機能もあります。
以下の機能キーは PAI イベントをトリガするものではなく、他の機能で予約されています。
キ F1 では、項目ヘルプが呼び出されます。
キ F4 では、入力ヘルプが呼び出されます。
キ F10 では、メニューバーにカーソルが設定されます。
以下の機能キーは標準ツールバーのアイコンに固定割当されています。割り当てる機能コードと、対応する ABAP コーディングにはアイコンの意味が反映されていなければなりません。
|
機能キー |
アイコン |
目的 |
|
Ctrl+S または F11 |
|
|
|
F3 |
|
前画面 |
|
Shift+F3 |
|
|
|
Esc または F12 |
|
取消 |
|
Ctrl+P |
|
印刷 |
|
Ctrl+F |
|
検索 |
|
Ctrl+G |
|
検索続行 |
|
Ctrl+PgUp |
|
第 1 ページ |
|
PgUp |
|
前ペー ジ |
|
PgDn |
|
次ペー ジ |
|
Ctrl+PgDn |
|
Enter
キーは標準ツールバーの
アイコンに属し、GUI
ステータスでこのキーに何の機能も割り当てられていない場合や、GUI
ステータス自体がまったく設定させていない場合でも、常に有効です。ユーザが Enter
キーを選択すると、必ず PAI
イベントがトリガされます。以下の機能コードを SY-UCOMM
または OK_CODE
項目に渡すことができます。
キ ユーザが Enter キーを押したときのコマンドフィールドの任意の入力内容。
キ コマンドフィールドに何も入力されていない場合は、メニューペインタで Enter キーに割り当てられた任意の機能コード。
キ コマンドフィールドに何も入力されておらず、メニューペインタでどの機能コードも Enter キーに割り当てられていない場合は、機能コードは空白になるため、SY-UCOMM 項目と OK_CODE 項目のどちらにも渡されません。
F2 キーはマウスのダブルクリックに常にリンクされます。GUI ステータスの機能コードが F2 キーに割り当てられている場合は、ユーザが F2 キーを選択するか、または Dynpro エレメントをダブルクリックするのに合わせて、PAI イベントをトリガすることができます。どちらの場合も、対応する機能コードが SY-UCOMM 項目と OK_CODE 項目に渡されます。カーソルの位置によって次の動作を制御する場合は、GET CURSOR 命令を使ってカーソルの位置を検出する必要があります。
Dynpro に GUI ステータスを割り当てるには、次に ABAP 命令を使用します。
SET PF-STATUS <stat> [OF PROGRAM
<prog>]
[EXCLUDING <f>|<itab>].
この命令では、Dynpro 順序の後続のすべてのDynpro のユーザインタフェースが定義されます。このインタフェースは新しい SET PF-STATUS 命令で別のインタフェースが設定されるまで、後続のすべての Dynpro に適用されます。GUI ステータス <stat> には、現在の ABAP プログラムのコンポーネントを指定する必要があります。ただし、SET PF-STATUS 命令に OF PROGRAM オプションを付加した場合は、別のプログラム <prog> の GUI ステータスも設定することができます。
EXCLUDING 機能では、GUI ステータスの外観と機能を動的に変更することができます。これは、さまざまな Dynpro の個々のユーザインタフェースが非常に類似している場合に便利です。この場合、グローバルステータスを 1 つ定義しておき、その後 EXCLUDING を使って、不要な機能を無効化するだけですみます。ここで<f> と指定すると、項目 <f> に保管されている機能コードが無効化されます。<itab> と指定すると、内部テーブル <itab> に保管されているすべての機能コードが無効化されます。項目<f> とテーブル行 <itab> は、型が C で長さが 20 のものでなければなりません。
PBO イベントでは個々の Dynpro の GUI ステータスを設定します。Dynpro の GUI ステータスを指定しないと、その Dynpro は前の Dynpro のインタフェースを使って表示されます。プログラムの最初の Dynpro の GUI ステータスを指定しないと、その Dynpro はユーザインタフェースを持たなくなり、ユーザはその Dynpro を終了できなくなる場合があります。
ユーザインタフェースには、GUI ステータスのほかに、GUI 表題も組み込まれます。GUI 表題の作成もメニューペインタで行います。Dynpro に GUI ステータスを割り当てるには、次にABAP 命令を使用します。
SET TITLEBAR <title> [OF PROGRAM
<prog>]
[WITH <g1 >...<g9>].
この命令では、Dynpro 順序の後続のすべてのDynpro のユーザインタフェースの表題が定義されます。この表題は新しい SET TITLEBAR 命令で別の表題が設定されるまで、後続のすべての Dynpro に適用されます。GUI 表題 <title> には、現在の ABAP プログラムのコンポーネントを指定する必要があります。ただし、SET TITLEBAR 命令に OF PROGRAM オプションを付加した場合は、別のプログラム<prog> の GUI ステータスも設定することができます。
個々の GUI 表題には、プレースホルダを9 個 (&1 ... &9) まで組み込むことができます。これらのプレースホルダは、WITH オプションの対応する項目 <g1> ... <g9> の内容と置き換えることができます。連続する '&' プレースホルダも、それぞれ対応する <g i> パラメータの内容と置換されます。表題内でアンパサンド文字 ‘&’ を表示する場合は、‘&&’ のように、2 つ続けて使用します。
PBO イベントでは個々の Dynpro の GUI 表題を設定します。

GUI ステータスと Dynpro
PROGRAM DEMO_DYNPRO_GUI_STATUS.
DATA: OK_CODE LIKE SY-UCOMM,
SAVE_OK LIKE OK_CODE,
OUTPUT LIKE OK_CODE.
CALL SCREEN 100.
MODULE INIT_SCREEN_0100 OUTPUT.
SET
PF-STATUS 'STATUS_100'.
SET
TITLEBAR '100'.
ENDMODULE.
MODULE USER_COMMAND_0100 INPUT.
SAVE_OK =
OK_CODE.
CLEAR
OK_CODE.
CASE
SAVE_OK.
WHEN 'BACK'
OR 'EXIT' OR 'CANCEL'.
LEAVE
PROGRAM.
WHEN
OTHERS.
OUTPUT =
SAVE_OK.
ENDCASE.
ENDMODULE.
Dynpro 100 の次画面 ( 静的定義) は同じ Dynpro です。このレイアウトは次のようなものです。

エレメント一覧内の Dynpro 項目に関連する部分は、次のとおりです。
|
名称 |
型 |
書式 |
|
OUTPUT |
入出力 |
CHAR |
|
OK_CODE |
OK |
OK |
Dynpro 項目 OUTPUT の入力オプションは、スクリーンペインタでオフに設定されています。
この Dynpro 制御ロジックは次のとおりです。
PROCESS BEFORE OUTPUT.
MODULE
INIT_SCREEN_0100.
PROCESS AFTER INPUT.
MODULE
USER_COMMAND_0100.
PBO モジュールINIT_SCREEN_100 では、GUI ステータス STATUS_100 と表題 100 が設定されます。この GUI ステータスはメニューペインタを使って次のように作成されました。
メニューバー
メニューデモ:
|
機能コード |
テキスト |
|
SAVE |
保存 |
|
|
印刷 |
|
DELETE |
削除 |
|
EXIT |
終了 |
メニュー編集:
|
機能コード |
テキスト |
|
MARK |
選択 ( マーク) |
|
SELE |
選択 |
|
SEARCH |
検索 |
|
SEARCH+ |
検索続行 |
|
TOP |
第 1 ページ |
|
PAGE_UP |
前ペー ジ |
|
PAGE_DOWN |
次ペー ジ |
|
BOTTOM |
最終ページ |
|
CANCEL |
取消 |
メニュージャンプ:
|
機能コード |
テキスト |
|
BACK |
前画面 |
メニュー補足:
|
機能コード |
テキスト |
|
FUNCT_F5 |
機能 1 |
|
FUNCT_F6 |
機能 2 |
|
FUNCT_F7 |
機能 3 |
|
FUNCT_F8 |
機能 4 |
メニュー関連処理:
|
機能コード |
テキスト |
|
MENU_1 |
メニュー 1 |
|
MENU_2 |
メニュー 2 |
|
MENU_3 |
メニュー 3 |
標準ツールバー
|
アイコン |
機能コード |
テキスト |
|
|
|
|
|
|
SAVE |
|
|
|
BACK |
前画面 |
|
|
EXIT |
|
|
|
CANCEL |
取消 |
|
|
|
印刷 |
|
|
SEARCH |
検索 |
|
|
SEARCH+ |
検索続行 |
|
|
PAGE_UP |
前ペー ジ |
|
|
PAGE_DOWN |
次ペー ジ |
|
|
BOTTOM |
最終ページ |
|
|
CANCEL |
アプリケーションツールバー
|
ポジション |
機能コード |
テキスト |
|
1 |
SELE |
|
|
2 |
MARK |
|
|
3 |
DELETE |
|
|
4 |
FUNCT_F5 |
機能 1 |
|
5 |
FUNCT_F6 |
機能 2 |
機能キー
|
キー |
機能コード |
テキスト |
アイコン |
|
F2 |
SELE |
選択 |
|
|
F9 |
MARK |
選択 ( マーク) |
|
|
Shift+F2 |
DELETE |
削除 |
|
|
F5 |
FUNCT_F5 |
機能 1 |
|
|
F6 |
FUNCT_F6 |
機能 2 |
|
|
F7 |
FUNCT_F7 |
機能 3 |
|
|
F8 |
FUNCT_F8 |
機能 4 |
|
機能コードはすべてメニューエントリとして存在しますが、機能キーに割り当てられるものは一部のみです。標準ツールバーの機能コードではアイコンが有効化され、各機能コードはそれぞれの機能キーに自動で割り当てられます。追加機能キーの一部はアプリケーションツールバーに割り当てられます。
モジュール USER_COMMAND_100 では、OK_CODE 項目の内容が補助変数 SAVE_OK コードにコピーされ、OK_CODE が初期化されます。これは必ず行うようにします。このように PBO イベントの前に Dynpro 項目 OK_CODE を必ず初期化することによって、この項目に不適切な値が誤って残っていないようにすることができます。ユーザが選択した機能の機能コードは、その後、OUTPUT 項目に割り当てられ、対応する Dynpro 項目に表示されます ( ただし、ユーザが BACK 、EXIT 、または CANCEL を選択した場合はこれは行われず、プログラムが終了します) 。
機能コード SELE は、ユーザの以下の操作に対応して ABAP プログラムに渡すことができます。
キ 編集 メニューの選択を選択する
キ
アプリケーションツールバーの
押ボタンを選択する
キ キーボードの F2 キーを選択する
キ マウスの右ボタンをクリックして選択を選択する
キ Dynpro 項目 OUTPUT をダブルクリックする
キ コマンドフィールドに SELE と入力して Enter キーを押す
他の機能コードもそれぞれの定義にもとづいて渡されます。ただし、ダブルクリック機能は適用されません。