LOOP AT SCREEN
用法
主に、画面の属性を変更させるために使用する。
照会モードでは入力不可とするが入力可能モードでは入力可能とする、ラジオボタン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的更多相关文章
- 屏幕字段结构SCREEN的字段含义
在SAP屏幕中,一个字段就像.NET中的一个控件,这个字段对应一个SCREEN结构,就像控件的多个属性. SE11可以查看SCREEN结构中的字段,只是没有备注. 名称 长度 说明 NAME 屏幕字段 ...
- ABAP modify screen:修改屏幕,实现隐藏、禁止输入字段
Loop at screen会loop处理屏幕上的每一个组件,并对其做相应的处理. SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME.PARAMETERS ...
- 选择屏幕(Selection Screen)
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- sap screen design
定义屏幕: SAP 系统中的屏幕包含: 标准屏幕: 选择屏幕: 列表输出屏幕: 1. 标准屏幕必须隶属于一个类型为 L, M 或 F 的ABAP ...
- ABAP screen
Instance One : SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-100. SELECTION-SCREEN BEGIN ...
- ABAP 订单-交货单-发货过账自动完成 案例
*&---------------------------------------------------------------------* *& Report ZSDR006 ...
- SAP 直营验单
*&---------------------------------------------------------------------* *& Report ZSDR005 ...
- 生产排产表DL-ZPPR002
*&---------------------------------------------------------------------* *& Report ZPPR002 * ...
- ABAP屏幕设计
转自 http://www.cnblogs.com/aBaoRong/archive/2012/06/05/2536591.html abap 屏幕控制 ******************** 屏幕 ...
随机推荐
- Win7 自带FTP将文件复制到FTP服务器时发生错误。
错误截图: 错误信息: 将文件复制到FTP服务器时发生错误.请检查是否有权限将文件放到该服务器上. 详细信息: 200 Type set to I. 200 PORT commad successfu ...
- ORACLE_LPAD_FUNCTION
Oracle / PLSQL: LPAD Function This Oracle tutorial explains how to use the Oracle/PLSQL LPAD functio ...
- wamp的www目录更改为指定目录
wamp的www目录更改为指定目录内容简介:主要过程: (1)修改httpd.conf文件 (2)修改新的www目录下的index.php文件 (3)修改manage.ini的278行和manage. ...
- scrum 第二次冲刺
scrum 第二次冲刺 1.本周工作 本周正式开始了开发工作.首先设计了类图,建好了数据库,将整个小组的分工传到了禅道上,我主要负责后台的挂号操作. 本周分工如下: 首先搭建好了ssm框架,其中遇到了 ...
- 管道(Pipelines)模型
Pipeline模型最早被使用在Unix操作系统中.据称,假设说Unix是计算机文明中最伟大的发明,那么,Unix下的Pipe管道就是尾随Unix所带来的还有一个伟大的发明[1].我觉得管道的出现,所 ...
- ACM-ICPC (10/17)
今天满课啊,天气太冷了,网上找了一下虚树的东西,还没弄懂~~~(:´д`)ゞ 牛客网挑战赛1 给定一棵n个点的树,问其中有多少条长度为偶数的路径.路径的长度为经过的边的条数.x到y与y到x被视为同一条 ...
- Gym Gym 101147G 第二类斯特林数
题目链接:http://codeforces.com/gym/101147/problem/G 题意:n个人,去参加k个游戏,k个游戏必须非空,有多少种放法? 分析: 第二类斯特林数,划分好k个集合后 ...
- 【题解】洛谷P1006传纸条
链接 https://www.luogu.org/problemnew/show/P1006 日常牢骚 过年前最后一节课上完了坐标DP 也接触了一点区间DP(noi1995石子合并)下次做做看看吧 老 ...
- 使用带有对象的data-ng-bind
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- Java面向对象知道这些就够了
面向对象 面向对象是一种思维方式,相对于面向过程而言的. 面向过程在流程中关注动作执行的每一个细节 — 自己动手做 面向对象重点找这个对象,只要找到了对象,那么这个对象所具有的功能就能够被使用 — 找 ...