コンテンツフレーム起動

動的属性設定 文書を SAP ライブラリストラクチャに組み込む

Dynpro の各項目には属性のセットがあり、スクリーンペインタで Dynpro を定義する際に固定されます。ABAP プログラムでシステムテーブル SCREEN を操作することで、各 Dynpro 項目の属性を制御することができます。

SCREEN テーブル

SCREEN は、ヘッダ行がある内部テーブルのようなものです。ただし、プログラムで宣言する必要はありません。デバッガで照会することができないため、ヘッダ行以外の作業領域を使用してテーブルを処理することはできません。SCREEN テーブルの構造は次のとおりです。

コンポーネント

長さ

データ型

意味

属性

NAME

132

C

Dynpro 項目の名称

名称

GROUP1

3

C

修正グループ 1

グループ 1

GROUP2

3

C

修正グループ 2

グループ 2

GROUP3

3

C

修正グループ 3

グループ 3

GROUP4

3

C

修正グループ 4

グループ 4

REQUIRED

1

C

項目入力は必須です。

必須項目

INPUT

1

C

項目は入力可能です。

入力

OUTPUT

1

C

項目は表示専用です。

出力

INTENSIFIED

1

C

項目は強調表示されます。

強調

INVISIBLE

1

C

項目は表示されません。

非表示

LENGTH

1

X

項目長

表示長

ACTIVE

1

C

項目は有効です。

入力/ 出力/ 非表示

DISPLAY_3D

1

C

3 次元ボックス

2 次元

VALUE_HELP

1

C

入力ヘルプボタンの表示

入力ヘルプ

REQUEST

1

C

入力があります。

-

最後の列には、スクリーンペインタの Dynpro 項目の該当する属性が記載されています。

Dynpro PBO イベント時に ABAP プログラムで SCREEN を変更することができます。その内容によって、1 回の Dynpro 呼出について Dynpro 項目の静的属性が上書きされます。SCREEN とともに使用することができるのは、以下の命令のみです。

LOOP AT SCREEN.
...
MODIFY SCREEN.

...
ENDLOOP.

LOOP AT SCREEN 命令で他のオプションを使用することはできません。

コンポーネント NAME には、Dynpro 項目の名称が格納されます。コンポーネント GROUP1 から GROUP4 には、3 文字のコードを格納することができます。これらのコードを使用すると、Dynpro 項目を最大で 4 つの修正グループに含めることができます。Dynpro 項目は、異なる修正グループに属することができます。修正グループはテーブル SCREEN の追加キー項目のようなもので、これを使用して、グループ内のすべてのエレメントの属性を同時に変更することができます。スクリーンペインタではエレメントを修正グループに静的に割り当てますが、プログラムで動的に上書きすることができます。

残りのコンポーネントは、Dynpro 項目の表示属性を変更したり、有効化/ 無効化したりするために使用されます。LENGTH 以外のすべてのコンポーネントについて、1 は有効を表し、0 は無効を表します。

ACTIVEINPUTOUTPUT 、および INVISIBLE

コンポーネント ACTIVEINPUTOUTPUT 、および INVISIBLE の間には、独特の階層化されたルールがあります。また、それぞれの静的設定によって異なる影響があります。

ACTIVE コンポーネントには、対応するエレメント属性はありません。代わりに、このコンポーネントによって、コンポーネント INPUTOUTPUT 、および INVISIBLE が変更されます。

PBO の開始時には、属性の静的設定に関係なく、ACTIVE は常に 1 に設定されます。ACTIVE 0 に設定すると、自動的に INPUT = 0OUTPUT = 0 、およびINVISIBLE = 1 と設定されます。同じテーブル行の INPUTOUTPUT 、および INVISIBLE の設定への変更は無視されます。逆に、INPUT = 0OUTPUT = 0 、および INVISIBLE = 1 と設定すると ACTIVE 0 に設定され、同じテーブル行の ACTIVE への割当は無視されます。設定 ACTIVE = 1 には、属性への他の影響はありません。ACTIVE コンポーネントの唯一の目的は、1 つの割当によって Dynpro 項目を無効化することです。Dynpro 制御ロジックで FIELD 命令にリンクされているモジュールコールは、該当する項目が SCREEN-ACTIVE = 0 の場合でも、必ず実行されることに特に注意してください。無効な項目についてモジュールが処理されないようにするには、FIELD 命令と MODULE 命令を別個に指定する必要があります。

ACTIVEINPUTOUTPUT 、および INVISIBLE には 8 とおりの組合せがあり、Dynpro 項目にそれぞれ以下の影響を及ぼします。

ACTIVE

INPUT

OUTPUT

INVISIBLE

影響

1

1

1

0

非表示 が静的に設定されていても、Dynpro 項目は表示されます。

項目内容が表示されます。

入力 が静的に設定されていなくても、入力可能です。ただし、出力専用が静的に設定されている場合は、書込不可です。

1

1

0

0

非表示 が静的に設定されていても、Dynpro 項目は表示されます。ただし、出力専用が静的に設定されている場合は除きます。

項目内容は表示されません。

入力 が静的に設定されていなくても、入力可能です。

1

0

1

0

非表示 が静的に設定されていても、Dynpro 項目は表示されます。

項目内容が表示されます。

入力 が静的に設定されていても、書込不可です。

1

0

0

0

非表示 が静的に設定されていても、Dynpro 項目は表示されます。ただし、出力専用が静的に設定されている場合は除きます。

項目内容は表示されません。

入力 が静的に設定されていても、書込不可です。

1

1

1

1

非表示 が静的に設定されていても、Dynpro 項目は表示されます。ただし、出力専用が静的に設定されている場合は除きます。

項目内容は表示されません。

入力 が静的に設定されていなくても、入力可能です。ユーザ入力は、アスタリスク (*) によってマスキングされます。

1

1

0

1

非表示 が静的に設定されていても、Dynpro 項目は表示されます。ただし、出力専用が静的に設定されている場合は除きます。

出力は、アスタリスク (*) によってマスキングされます。

入力 が静的に設定されていなくても、入力可能です。ユーザ入力は、アスタリスク (*) によってマスキングされます。

1

0

1

1

Dynpro 項目は無効です。

静的属性に関係なく、Dynpro 項目は表示されません。

0

0

0

1

Dynpro 項目は無効です。

静的属性に関係なく、Dynpro 項目は表示されません。

項目が出力専用として静的に定義されている場合、設定 INPUT = 1 による影響はありません。これらの項目については、常に INPUT 0 です。アスタリスクによるユーザ入力のマスキングは、ユーザパスワードを入力するために使用することができます。

項目を非表示にすると行全体が非表示になる場合、自動的に画面が小さくなります。ただし、静的 Dynpro 属性の実行時圧縮のスイッチオフを選択することで、この属性を切り替えることができます。

REQUIRED

REQUIRED = 1 と設定すると、入力可能項目が入力必須になります。ユーザは、すべての必須項目に入力した場合にのみ画面を終了することができます。例外: タイプ E の機能コード、および AT EXIT-COMMAND オプションを含むモジュールによる操作

DISPLAY_3D

DISPLAY_3D = 0 と設定すると、入出力項目の 3 次元フレームが削除されます。DISPLAY_3D = 1 を使用して、出力専用属性が設定されているテキスト項目や Dynpro 項目に 3 次元効果を生成することはできません。

VALUE_HELP

VALUE_HELP 0 または 1 に設定すると、入力ヘルプボタンがそれぞれオフまたはオンに切り替わります。

INTENSIFIED

INTENSIFIED = 1 と設定すると、入力項目の項目内容が黒から赤に変わります。出力項目の内容は、黒から青に変わります。

LENGTH

LENGTH コンポーネントは、入出力項目および出力専用項目に静的に定義された出力長 ( 表示長) より短い値に設定することができます。このコンポーネントを使用すると、これらの項目の出力長を短くすることができます。他の Dynpro エレメントを短くすることはできません。また、どの Dynpro エレメントも長くすることはできません。

REQUEST

入力可能 項目に REQUEST = 1 と設定した場合、PAI イベントにおける影響はユーザが項目内容を変更した場合と同じです。つまり、ユーザが実際に項目を変更したかどうかに関係なく、ON REQUEST または ON CHAIN-REQUEST を使用した条件モジュールコールが実行されます。REQUEST は、自動的に 0 にリセットされます。

この例では、簡単な画面モディフィケーションについて説明します。プログラムDEMO_DYNPRO_MODIFY_SCREEN によって、可能なモディフィケーションすべてのデモンストレーションが行われます。

例

動的画面モディフィケーション

REPORT demo_dynpro_modify_simple.

DATA: ok_code TYPE sy-ucomm,
      save_ok TYPE sy-ucomm.

DATA flag(1) TYPE c.

CALL SCREEN 100.

MODULE status_0100 OUTPUT.
   SET PF-STATUS 'SCREEN_100'.
LOOP AT SCREEN.
     IF screen-group1 = 'MOD'.
       IF flag = ' '.
         screen-input = '0'.
       ELSEIF flag = 'X'.
         screen-input = '1'.
ENDIF.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDMODULE.

MODULE cancel.
   LEAVE PROGRAM.
ENDMODULE.

MODULE user_command_0100 INPUT.
   save_ok = ok_code.
   CLEAR ok_code.
  CASE save_ok.
     WHEN 'TOGGLE'.
       IF flag = ' '.
         flag = 'X'.
       ELSEIF flag = 'X'.
         flag = ' '.
ENDIF.
ENDCASE.
ENDMODULE.

Dynpro 100 の次画面 ( 静的に定義) はそれ自体です。この Dynpro のレイアウトは次のとおりです。

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

入出力項目は、ABAP ディクショナリの構造 DEMO_CONN からコピーされています。下部の 4 つの入出力項目は、修正グループ MOD に割り当てられています。

Dynpro 制御ロジックは次のとおりです。

PROCESS BEFORE OUTPUT.
   MODULE status_0100.

PROCESS AFTER INPUT.
   MODULE cancel AT EXIT-COMMAND.
   MODULE user_command_0100.

GUI ステータス SCREEN_100 で、機能コード TOGGLE が押ボタンとリンクされます。

プログラムが呼び出された際に、下部の 4 つの入出力項目は入力可能として表示されません。これは、最初に FLAG 変数にスペースが格納されているためです。ユーザは、入力可能ステータスを切り替えることができます。

 

 

 

コンテンツフレーム終了