コンテンツフレーム起動

GUI ステータスの使用 文書を SAP ライブラリストラクチャに組み込む

コンテキストメニュー

コンテキストメニュー

GUI ステータスは ABAP プログラムの独立したコンポーネントです。GUI ステータスの作成は、ストラクチャのリンクABAP ワークベンチストラクチャのリンクメニューペインタを使って行います。関連する文書で、GUI ステータスとそのエレメントの作成に関する包括的な情報を提供しています。そのうち最も重要な詳細について、以下に説明します。

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 キー

Enter キーは標準ツールバーの このグラフィックは添付のテキストに説明されています  アイコンに属し、GUI ステータスでこのキーに何の機能も割り当てられていない場合や、GUI ステータス自体がまったく設定させていない場合でも、常に有効です。ユーザが Enter キーを選択すると、必ず PAI イベントがトリガされます。以下の機能コードを SY-UCOMM または OK_CODE 項目に渡すことができます。

        ユーザが Enter キーを押したときのコマンドフィールドの任意の入力内容。

        コマンドフィールドに何も入力されていない場合は、メニューペインタで Enter キーに割り当てられた任意の機能コード。

        コマンドフィールドに何も入力されておらず、メニューペインタでどの機能コードも Enter キーに割り当てられていない場合は、機能コードは空白になるため、SY-UCOMM 項目と OK_CODE 項目のどちらにも渡されません。 

F2 キー

F2 キーはマウスのダブルクリックに常にリンクされます。GUI ステータスの機能コードが F2 キーに割り当てられている場合は、ユーザが F2 キーを選択するか、または Dynpro エレメントをダブルクリックするのに合わせて、PAI イベントをトリガすることができます。どちらの場合も、対応する機能コードが SY-UCOMM 項目と OK_CODE 項目に渡されます。カーソルの位置によって次の動作を制御する場合は、GET CURSOR 命令を使ってカーソルの位置を検出する必要があります。

GUI ステータスの設定

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 表題も組み込まれます。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

保存

PRINT

印刷

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

取消

このグラフィックは添付のテキストに説明されています

PRINT

印刷

このグラフィックは添付のテキストに説明されています

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 項目に表示されます ( ただし、ユーザが BACKEXIT 、または CANCEL を選択した場合はこれは行われず、プログラムが終了します)

機能コード SELE は、ユーザの以下の操作に対応して ABAP プログラムに渡すことができます。

         編集 メニューの選択を選択する

         アプリケーションツールバーの このグラフィックは添付のテキストに説明されています  押ボタンを選択する

         キーボードの F2 キーを選択する

         マウスの右ボタンをクリックして選択を選択する

         Dynpro 項目 OUTPUT をダブルクリックする

         コマンドフィールドに SELE と入力して Enter キーを押す

他の機能コードもそれぞれの定義にもとづいて渡されます。ただし、ダブルクリック機能は適用されません。

 

 

 

 

コンテンツフレーム終了