ABAP开发-12、Dialog屏幕开发_1
系列文章目录
文章目录
- 系列文章目录
- @[TOC](文章目录)
- 前言
- 一、Dialog屏幕概览
- 二、界面
- 1、界面-界面中的事件块
- 2、界面-创建界面
- 3、界面- 属性
- 4、界面-元素清单
- 5、界面-Screen Layout Designer
- 6、界面- 参照创建
- 7、界面- 常用关键字
- 8、界面- 数据处理逻辑
- 9、界面- Module执行顺序
- 10、界面- 程序事务代码
- 三、界面元素
- 1、按钮
- 2、文本/输入框控件
- 3、数据检查
- 4、单选按钮
- 5、复选框
- 6、框BOX控件
- 7、GUI STATUS/GUI TITLE
- 8、Tabstrip控件
- 9、使用向导创建Tabstrip Control
- 10、标签页的修改
- 11、表格控件TABLE CONTROL
- 12、使用向导创建TABLE CONTROL
- 13、Table Control列的修改
- 四、F4的实现
- 总结
文章目录
- 系列文章目录
- @[TOC](文章目录)
- 前言
- 一、Dialog屏幕概览
- 二、界面
- 1、界面-界面中的事件块
- 2、界面-创建界面
- 3、界面- 属性
- 4、界面-元素清单
- 5、界面-Screen Layout Designer
- 6、界面- 参照创建
- 7、界面- 常用关键字
- 8、界面- 数据处理逻辑
- 9、界面- Module执行顺序
- 10、界面- 程序事务代码
- 三、界面元素
- 1、按钮
- 2、文本/输入框控件
- 3、数据检查
- 4、单选按钮
- 5、复选框
- 6、框BOX控件
- 7、GUI STATUS/GUI TITLE
- 8、Tabstrip控件
- 9、使用向导创建Tabstrip Control
- 10、标签页的修改
- 11、表格控件TABLE CONTROL
- 12、使用向导创建TABLE CONTROL
- 13、Table Control列的修改
- 四、F4的实现
- 总结
前言
一、Dialog屏幕概览
- Report程序:1类型程序
- 制作报表,数据列表输出(Data List)输出
- Online程序:M类型程序
- 查询数据,录入,修改,删除等
- Module Pool程序:以Moudle Pool形态进行业务流程的逻辑处理
- Online程序:强调用Online Transaction来处理业务流程进行过程
- Screen程序:主要使用Screen(屏幕对象),并实现见面间Flow Logic(流逻辑)
- Online程序的主要对象
- 界面(Screen)
- 模块池(Modul Pool)
- 全局字段(Global Data):声明模块池中所有模块都可使用的数据-TOP
- PBQ模块(PBO Modules):屏幕输出前调用的模块-O01
- PAI模块(PAI Modules):相应用户输入而调用的模块-I01
- 子程序(Suboutines):可以在模块中任何位置调用的子程序-F01
- 菜单(GUI Status)
- 标题(GUI TITLE)
- 事务代码(Transaction Code)
- 用户可以访问的部分是Screen,用户对界面进行操作,相应的操作是通过Screen中的逻辑流控制,而数据声明和界面逻辑代码实现程序是在ABAP程序中
二、界面
- SAP的屏幕开发
- ABAP list代码实现(例如:选择界面的创建)
- Report程序直接执行即可显示查询界面或结果界面
- Dialog Screen绘制:较复杂,界面丰富
- Online程序想要显示查询或结果界面必须建立Screen
- 事件驱动程序
- 屏幕功能开发
- ABAP程序不能直接定义Screen,要通过Screen Painter这个工具来实现,界面元素的设定通过Screen Layout Designer来实现
- 界面的设定:属性/大小/模式
- 界面中的元素:描述或帮助,可以进行有效性检查
- 界面中可以设置独立的Menu Bar或Title,点选按钮或回车可以触发相应功能
- 功能实现位置:逻辑流中设定
- Online程序不能备=被直接执行,必须通过事务代码,指定界面执行
1、界面-界面中的事件块
- 用户访问界面,对界面进行操作,相应的操作是通过逻辑流控制的,也就是Screen Painter中定义Flow Logic的位置
- 4个事件块:
- PRECESS BEFORE OUTPUT
- PBO中的处理逻辑控制界面输出前处理,如更改一些元素的值或属性
- PROCESS AFTER INPUT
- PAI中的处理逻辑控制用户对界面操作后的处理,如按回车对输入数据进行检查
- PROCESS ON HELP-REQUEST
- Field Help的实现
- PROCESS ON VALUE-REQUEST
- 输入帮助Search Help的实现(F4帮助)
- PRECESS BEFORE OUTPUT
- 界面定义的步骤:
- 创建界面,在Screen Attributes中定义Screen的属性
- 在Screen Layout Designer和Element List中定义界面中的元素(位置及属性)
- 在Screen Flow Logic中设定在Screen显示的逻辑处理和显示后对界面进行相应操作的逻辑处理
2、界面-创建界面
- 界面编号的选取
- 0000~9999
- 其中1000和1010之间的屏幕编号为ABAP字典表的维护屏幕以及可执行程序的标准选择屏幕而预留
- 属性
- 设定屏幕基本属性
- 元素清单
- 包含界面中定义的所有构成元素
- 可编辑元素属性
- OK_CODE(要定义接受变量)
- 流逻辑
- 代码定义部分
- 点击布局
- 可以进入屏幕制作器SCREEN LAYOUT DESIGNER
3、界面- 属性
- 短文本
- 界面类型
- 标准界面
- 子界面
- 对话框
- 选择界面
- 下一屏
- 当前界面输出结束时出现的界面
- 为空:程序结束
- 程序中调用其他界面:调用优先
- 行/列
- 设置界面大小
4、界面-元素清单
文本字段TEXT FIELD:只能显示,不能修改
输入域INPUT/OUTPUT FIELD:显示或输入数据
复选框CHECKBOX:X:选中,空:未选中
单选按钮RADIO BUTTON:必须分组,组内只能选一个
按钮OUSHBUTTON:必须定义功能码FUNCTION CODE
TAB分页控制/创建向导:一个界面中显示多个标签页/标签页创建向导(自动生成代码)
框架控件BOX:将关联元素组成一个组
子屏幕区域SUBSCREEN AREA:可以在子界面区域连接其他界面
数据表格控件/创建向导TABLE CONTROL:以表单形式显示数据列表/表格创建向导(自动生成代码)
用户定义控件CUSTOM CONTROL:类的容器,实现ABAP object使用
状态图标 STATUS ICON:显示ICON
5、界面-Screen Layout Designer
- 创建元素
- 选中要创建的元素,在屏幕中拖拽生成
- 修改属性
- 双击
- 元素的复制、粘贴、转换
- 在元素上点击右键,在清单中选择
6、界面- 参照创建
- 参照数据字典/程序字段创建屏幕元素
- 选择界面中按钮
- 从数据字典中获取
- 从程序中获取
7、界面- 常用关键字
MODULE:调用DIALOG MODULE
FIELD:指Element List 中特定的Screen field,即可以判断Screen Field 的值或状态是否发生变化,在PAI中对相关Field进行控制时,一定要使用的关键字
ON:Field …ON(Field 的连接词)
value:Field …value(Field 的连接词)
CHAIN:CHAIN可以将多个FIELD捆绑成一个同时进行管理
ENDCHAIN:结束CHAIN
CALL:调用(Call a Subscreen)
LOOP:开始处理Screen Table
ENDLOOP:结束Screen Table 的处理
8、界面- 数据处理逻辑
9、界面- Module执行顺序
PROCESS BEFORE OUTPUT."PBO
MODULE A.
MODULE B.
PROCESS AFTER INPUT."PAI
MODULE C.
MODULE D.
执行MODULE A->执行MODULE B->将数据从ABAP工作区传到Screen工作区->显示界面->点击回车->将数据哦才能够Screen工作区传到ABAP工作区->执行MODULE C->执行MODULE D
10、界面- 程序事务代码
右键程序-》创建-》事务
输入事务代码、描述、选择程序、定义屏幕编号
三、界面元素
1、按钮
在屏幕编辑器中定义一个按钮
名称、文本、功能码
在PAI中处理结果
2、文本/输入框控件
- TEXT控件:在适宜位置定义,定义名称、描述、显示长度
- INOUT/OUTPUT控件
- 显示效果是否可输入/必输项设置
- 2D/3D显示
- 下拉框设置/可接受负数值设置
3、数据检查
一些程序中,设置输入框后,需要根据用户的输入,进行有效性的检查等,DIALOG中提供了针对字段的检查
- 针对某个字段
- FIELD F1 MODULE M1 [ON REQUEST]
- 针对多个字段同时检查
CHAIN.
FIELD F1.
FIELD F2.
FIELD F3.
MODULE M1 [ON CHAIN-REQUEST].
ENDCHAIN.
4、单选按钮
没有关联功能码,本身不触发PAI事件
成组设置功能码,可以触发
设置多个单选按钮,拖拽选中,右键建组
默认为第一个选中
5、复选框
默认情况下为不选中
可以关联功能码实现功能
6、框BOX控件
创建BOX控件,通过拖拽框将多个控件包含在BOX控件内
成组移动
设置隐藏/显示属性,需要设置GROUP字段
7、GUI STATUS/GUI TITLE
- 按钮
- 在程序中定义GUI STATUS
- 在PBO中创建MODULE,用SET PF-STATUS语句设置按钮
- 在PAI中根据SY-UCOMM的值进行判断
- 使用OK_CODE/OK_SAVE
- …EXCLUDING…一个字段的内表
- 标题
- 在程序中定义GUI TITLE
- 在PBO中创建MODULE,用SET TITLEBAR语句设置标题
- …with…(&1占位符)
8、Tabstrip控件
Tabstrip可以实现在某个界面中,通过tab页的形式来显示多个界面
构成:按钮及子界面区域
9、使用向导创建Tabstrip Control
创建Tabstrip Control
Tabstrip Name: Tabstrip Control控件名(例:TS_tab)
输入需要创建的各个TAB页的描述
设定各tab页的名称,及相应的子界面编号
设定各部分代码进入的include程序
激活程序后,可以查看到程序中增加了子界面的编号,可以依次进入界面,修改界面格式,设置方式与主界面相同,但不能设置GUI STATUS和GUI TITLE
10、标签页的修改
- 减少
选中标签页切换位置,点击删除,在数据定义/PBO/PAI中做相应变更,也可不变更 - 增加
选择pushbutton控件,在标签页旁增加一个页面
NAME、TEXT、FCT CODE、REF FIELD
增加数据定义/PBO/PAI处代码,可以直接参考复制
11、表格控件TABLE CONTROL
当界面中查询多条数据时,可以使用表格控件来进行表单输出
table control的行和列可以由以下元素构成:
KEYWORDS关键字、INPUT/OUTPUT FIELDS输入输出域、RADIO BUTTON/TADIO BUTTON GROUP单选按钮、CHECKBOX复选框、PUSHBUTTON按钮
12、使用向导创建TABLE CONTROL
- 在程序中创建TABLE CONTROL使用的内表(向导会自动创建相应代码)
- 创建TABLE CONTROL
- Name of Table Control:Table Control 的名称(例如:TC_TAB)
- 使用Internal Program Table创建,选择程序中的内表
- 选择显示列
- 设定属性
- 只显示、不可输入
- 可输入
- 带标题
- 行可选中
- SINGLE:只能选一行
- MULTIPLE:可以选中多行
- 设定按钮
- SCROLL:设定滚动条
- 插入/删除行按钮
- 选中所有/不选中按钮
- 设定选中列的字段
- 设定各部分进入的include程序
13、Table Control列的修改
- 减少
- 选中输入域,直接删除
- 将PAI中的chain部分,相应字段注释
- 增加
- 内表中增加字段
- 使用输入域增加列
- Text控件增加描述
- 在PAI的chain部分增加相应字段
- 属性修改
- 将输入域设成不可输 入
- 在PAI中修改属性(修改 Table Control的静态属性)
- 在PAI中修改静态属性,在PBO中输出时自动获取,按属性输出
- 以列修改为例
- 屏幕中创建按钮,功能码输入’COL‘
- 修改table control控件属性结构中的Cols字段(此字段为一个内表)
- 创建COLS表相应的结构,通过执行其中的第五列的行,将COL中的SCREEN字段(结构)中的input字段进行修改
四、F4的实现
- 静态实现Srearch Help:数据字典中创建Search Help
- Data Element 中设置关联
- Input/Output中设置关联
- Domain的固定值/数据库表的check table等也会实现F4帮助
- 动态实现 Search Help:定义内表实现
- PROCESS ON VALUE-REQUEST部分定义
- FIELD< field >MODULE < module >.
- 使用函数F4IF_INT_TABLE_VALUE_REQUEST
- PROCESS ON VALUE-REQUEST部分定义
- 下拉菜单
- input/output field 属性:是否含有KEY显示
- 使用函数VRM_SET_VALUES,在PBO中给List赋值
下拉菜单:
- 界面控件定义为下拉菜单
- ListBox(只显示描述)
- ListBox with key(显示描述及关键字)
- 在PBO部分增加Module设置给下拉菜单增加内容
- 使用函数VRM_SET_VALUES
- ID = (返回界面中的字段名称)
- values = (下拉菜单内容所在内表,要参照VRM_VALUES定义)
- 使用函数VRM_SET_VALUES
几个特别的F4
- 日期类型的F4
- 函数:F4_DATE
- 注意界面中的控件定义为D类型
- 文件路径的F4
- 函数:F4_FILENAME
- 界面中的控件定义为RLGRAP-FILENAME