用法

主に、画面の属性を変更させるために使用する。

照会モードでは入力不可とするが入力可能モードでは入力可能とする、ラジオボタンAが選択された場合はラジオボタンBに関連する項目は非表示とするなど。

 

サンプル

LOOP AT SCREEN INTO WA_SCREEN.
IF ( WA_SCREEN-NAME = 'RAD_A' ) AND ( RAD_A = 'X' ).
WA_SCREEN-INPUT = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

属性を変更する場合は、値を代入の上MODIFY SCREENで変更すること。

SCREENの構造と項目

過去のバージョンではデータ型グループで定義されていたようだが、現在は構造SCREENで定義されている。

コンポーネント 長さ プロパティ 内容説明
NAME 132 C Name 名称
GROUP1 3 C Group1 修正グループ
GROUP2 3 C Group2 修正グループ
GROUP3 3 C Group3 修正グループ
GROUP4 3 C Group4 修正グループ
REQUIRED 1 C Required-entry field 必須項目
INPUT 1 C Input 入力可能項目
OUTPUT 1 C Output 表示項目
INTENSIFIED 1 C Intensified 強調項目
INVISIBLE 1 C Invisible 非表示エレメント
LENGTH 1 X visLength 項目長
ACTIVE 1 C Input/Output/Invisible 有効項目
DISPLAY_3D 1 C Two-dimensional ボックス
VALUE_HELP 1 C Input help 入力ヘルプキー
REQUEST 1 C - 入力あり
VALUES_IN_COMBO 1 C Dropdown listbox 値ヘルプあり

これらの属性を取り扱うことはできるが、あまり込み入ったことをするとヤヤコシイことになるので、入力可否の制御くらいにしておいた方が無難かと思う。

----------------------------------------------------------------------------------------------------------------

属性の動的設定

画面の各項目には属性のセットがあり、スクリーンペインタでDynpro を定義する際に固定されます。ABAP プログラムの実行時に、特定の命令を使用して、各画面項目の属性の一部を事前定義された構造 screen に読み込むことができます。その後、これらの属性で画面項目を変更することができます。

構造 'screen'

プログラムでこの構造を宣言する必要はありません。ダイアログモジュールでの画面処理中に、screen にアクセスすることができます。

コンポーネント

長さ

データ型

意味

属性

surname

132

C

画面項目の名称

名称

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 のPBO イベント時に ABAP プログラムで構造 screen を変更し、ABAP プログラムの画面エレメントを変更することができます。変更されたエレメントにより、1 回の画面呼出について画面項目の静的属性が上書きされます。screen とともに使用することができるのは、以下の命令のみです。

  LOOP AT SCREEN.
...
MODIFY SCREEN.
...
ENDLOOP.

LOOP AT SCREEN は独立した命令です。内部テーブルでのループと混同しないでください。

コンポーネント NAME には、画面項目の名称が指定されます。コンポーネント GROUP1 から GROUP4 には、3 文字のコードを指定することができます。これらのコードを使用すると、画面項目を最大で 4 つのモディフィケーショングループに含めることができます。1 つの画面項目は、複数の異なるモディフィケーショングループに属することができます。モディフィケーショングループは構造 screen の追加キー項目のようなもので、これを使用して、グループ内のすべてのエレメントの属性を同時に変更することができます。スクリーンペインタでエレメントをモディフィケーショングループに静的に割り当てますが、これはプログラムで動的に上書きすることができます。

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

ACTIVE、INPUT、OUTPUT、および INVISIBLE

コンポーネント ACTIVE、INPUT、OUTPUT、およびINVISIBLE の間には、特定の階層化されたルールがあります。また、それぞれの静的設定に応じて異なる影響をもたらします。

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

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

ACTIVE、INPUT、OUTPUT、およびINVISIBLE には 8 とおりの組合せがあります。各組合せは、それぞれ以下のような影響を画面項目に及ぼします。

ACTIVE

入力

OUTPUT

INVISIBLE

動作

1

1

1

0

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

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

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

1

1

0

0

出力専用が静的に設定されている場合を除き、非表示が静的に設定されていても画面項目が表示されます。

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

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

1

0

1

0

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

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

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

1

0

0

0

出力専用が静的に設定されている場合を除き、非表示が静的に設定されていても画面項目が表示されます。

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

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

1

1

1

1

出力専用が静的に設定されている場合を除き、非表示が静的に設定されていても画面項目が表示されます。

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

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

1

1

0

1

出力専用が静的に設定されている場合を除き、非表示が静的に設定されていても画面項目が表示されます。

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

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

1

0

1

1

画面項目は無効です。

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

0

0

0

1

画面項目は無効です。

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

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

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

REQUIRED

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

DISPLAY_3D

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

VALUE_HELP

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

INTENSIFIED

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

LENGTH

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

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 は 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 に空白が含まれているためです。TOGGLE を使用して、入力可能ステータスのオン/オフを切り替えることができます。

LOOP AT SCREEN的更多相关文章

  1. 屏幕字段结构SCREEN的字段含义

    在SAP屏幕中,一个字段就像.NET中的一个控件,这个字段对应一个SCREEN结构,就像控件的多个属性. SE11可以查看SCREEN结构中的字段,只是没有备注. 名称 长度 说明 NAME 屏幕字段 ...

  2. ABAP modify screen:修改屏幕,实现隐藏、禁止输入字段

    Loop at screen会loop处理屏幕上的每一个组件,并对其做相应的处理. SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME.PARAMETERS  ...

  3. 选择屏幕(Selection Screen)

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. sap screen design

    定义屏幕:     SAP 系统中的屏幕包含:         标准屏幕:         选择屏幕:         列表输出屏幕: 1. 标准屏幕必须隶属于一个类型为 L, M 或 F 的ABAP ...

  5. ABAP screen

    Instance One : SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-100. SELECTION-SCREEN BEGIN ...

  6. ABAP 订单-交货单-发货过账自动完成 案例

    *&---------------------------------------------------------------------* *& Report  ZSDR006 ...

  7. SAP 直营验单

    *&---------------------------------------------------------------------* *& Report  ZSDR005 ...

  8. 生产排产表DL-ZPPR002

    *&---------------------------------------------------------------------* *& Report ZPPR002 * ...

  9. ABAP屏幕设计

    转自 http://www.cnblogs.com/aBaoRong/archive/2012/06/05/2536591.html abap 屏幕控制 ******************** 屏幕 ...

随机推荐

  1. 用AutoHotkey重置Excel的Ctrl+Alt+方向键选择的范围

    当前选择是蓝色单元格,原来的Ctrl+Alt+方向键,是选中[蓝色]到[红色]单元格的区域, 经过脚本修改后,则是[蓝色]到[黄色]的区域,应该更符合日常使用, 特别是表格比较大的时候,一直按住鼠标滚 ...

  2. js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版

    网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offset ...

  3. June 06th 2017 Week 23rd Tuesday

    At the touch of love, everyone becomes a poet. 一谈到爱,每个人都变成了一位诗人. Sweet words always have the power o ...

  4. Python3基本数据类型(六、字典)

    一.集合介绍 Python set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种.集合是一个无序的,不重复的数据组合,主要作用为:去重(把一个列表变成集 ...

  5. ABAP git客户端

    Jerry习惯把自己写的小程序放到自己的github上:https://github.com/i042416 对于写的ABAP程序,需要先把SAPGUI里的代码手动拷贝到本地,然后用git客户端pus ...

  6. 解决svn中“工作副本已经锁定”,或者svn清理失败的解决方法

    刚开始遇到这个问题还以为是没有插网线的原因,客户端和服务器都在我的电脑上,但是更新和提交都执行不了,以为是没有插网线就没把这个小问题放在心上,今早上还是这样,就不得不解决一下了. 更新或者提交前要执行 ...

  7. 新手理解HTML、CSS、javascript之间的关系-修订

    几年前写过一篇博文 <新手理解HTML.CSS.javascript之间的关系>,没想到网上出现了不少转载,当时没有太用心,里面的很多内容有待商榷,这里发布重新发布一篇. 网页主要有三部分 ...

  8. TSP 遗传算法

    GA——遗传算法 同模拟退火算法一样,都是现代优化算法之一.模拟退火是在一定接受程度的情况下仍然接受一个比较差的解. 遗传算法,是真真正正的和大自然的遗传进化有着非常紧密的联系的,当然遗传进化的只是在 ...

  9. 【转】onConfigurationChanged

    http://blog.csdn.net/xiaodongvtion/article/details/679938 转载自该文章. 注意:onConfigurationChanged事件并不是只有屏幕 ...

  10. 最短路算法 —— Dijkstra算法

    用途: 解决单源最短路径问题(已固定一个起点,求它到其他所有点的最短路问题) 算法核心(广搜): (1)确定的与起点相邻的点的最短距离,再根据已确定最短距离的点更新其他与之相邻的点的最短距离. (2) ...