目录
一、Online 程序概览
1、程序类型
2、Online程序的主要对象
二、界面
1、SAP的屏幕开发
2、屏幕功能实现
3、界面中的事件块(Event Block)
4、界面的创建
三、简单界面元素
1、文本/输入框控件
2、数据检查
3、一些常用的关键字
四、复合型界面元素
1、Tabstrip控件
2、Table Control控件
五、界面切换
六、F4帮助
1、静态实现Search Help
2、动态实现Search Help
一、Online 程序概览
1、程序类型
Report程序:1类型程序 制作报表,数据列表(Data List)输出
Online程序:M类型程序 查询数据,录入、修改、删除等
Module Pool 程序:以Module Pool形态进行业务流程的逻辑处理
Online 程序,强调用Online Transaction来处理业务流程进行过程
Screen 程序,主要使用Screen(及屏幕对象),并实现界面间Flow Logic(流逻辑)
2、Online程序的主要对象
界面(Screen)
模块池(Module Pool):全局字段(Global Data声明模块池中所有模块都可使用的数据 – TOP) PBO模块(PBO Modules):屏幕输出前调用的模块 – O01
PAI模块(PAI Modules):相应用户输入而调用的模块 – I01
子程序(Subroutines):可以在模块中任何位置调用的子程序 – F01
菜单(GUI Status) 、标题(GUI TITLE)、 事务代码(Transaction Code)。
用户可以访问的部分是Screen,用户对界面进行操作,相应的操作是通过Screen中的逻辑流控制,而数据声明和界面逻辑代码实现部分是在ABAP程序中。
MODULE POOL 是自上而下执行的。
二、界面
1、SAP的屏幕开发
ABAP List代码实现(例:选择界面的创建)->Report程序直接执行即可以显示查询或结果界面
Dialog Screen绘制:较复杂,界面丰富 ->Online程序想要显示查询或结果界面必须建立Screen
或者事件驱动程序(Event-Driven)
2、屏幕功能实现
ABAP程序不能直接定义Screen,要通过Screen Painter这个工具来实现。界面元素的设定通过Screen Layout Designer来实现
界面的设定:属性/大小/模式
面中的元素:描述或帮助。可以进行有效性检查
界面中可以设置独立的Menu Bar或Title,点选按钮或回车可以触发相应功能
功能实现位置:逻辑流中设定
Online程序不能被直接执行,必须通过事务代码,指定界面执行
3、界面中的事件块(Event Block)
用户访问界面,对界面进行操作,相应的操作是通过逻辑流控制的。也就是Screen Painter中定义逻辑流的位置 4个事件块:
PROCESS BEFORE OUTPUT.
PBO中的处理逻辑控制界面输出前处理,如更改一些元素的值或属性
PROCESS AFTER INPUT.
PAI中的处理逻辑控制用户对界面操作后的处理,如按回车键对输入数据进行检查 PROCESS ON HELP-REQUEST.
Field Help的实现(F1帮助)
PROCESS ON VALUE-REQUEST.
输入帮助Search Help的实现(F4帮助)
界面定义的步骤: 创建界面,在Screen Attributes中定义Screen的属性;在Screen Layout Designer和Element List中定义界面中的元素(位置及属性);在Screen Flow Logic中设定在Screen显示的逻辑处理和显示后对界面进行相应操作的逻辑处理。
4、界面的创建
注意这里的传值,一定要变量的类型相同
参照创建如下:
三、简单界面元素
1、文本/输入框控件
在很多界面上可以看到一个输入框及它的描述文本,这是通过Text控件及Input/Output控件实现的。Text控件 在适宜的位置定义,定义名称、描述、显示长度 As label on left Input/Output控件 显示效果是否可输入/必输项设置 2D/3D显示,下拉框设置/可接受负数值设置。
2、数据检查
在一些程序中,当我们设置了输入框后,需要根据用户的输入,进行有效性的检查等,DIALOG界面中提供了针对字段的检查方式:
针对某个字段 FIELD f1 MODULE m1 [ON REQUEST] .
针对多个字段同时检查 CHAIN.
FIELD f1. FIELD f2. FIELD f3.
MODULE m1 [ON CHAIN-REQUEST].
ENDCHAIN.
3、一些常用的关键字
四、复合型界面元素
1、Tabstrip控件
Tabstrip可以实现在某个界面中,通过tab页的形式来显示多个界面。
使用向导创建Tabstrip Control:输入需要创建的各个tab页的描述,设定各tab页的名称,及相应的子界面编号 设定各部分代码进入的Include程序,激活程序后,可以查看到程序中增加了子界面的编号,可以依次进入界面,修改界面格式设置方式与主界面相同,但不能设置GUI Status和GUI TITLE。
2、Table Control控件
表格控件:当界面中查询多条数据时,可以使用Table Control控件来进行表单输出 Table Control的行及列可以由以下元素构成: KeyWords、Input/Output Fields、Radio Button/Radio Button Group、 Checkbox 、Pushbutton。
在程序中创建Table Control使用的内表,使用Internal Program Table创建,选择程序中的内表、选择显示列,设定属性:【 Output only:只显示,不可输入;Input Control:可输入; With column header:带标题 ;Line selection col.:行可选中 ;Single:只能选中一行 ;Multiple:可以选中多行】设定按钮:Scroll:设定滚动条 ;Insert/delete line:插入/删除行按钮; Select/ deselect all:选中所有/不选中按钮 】设定选中列的字段: 设定各部分代码进入的Include程序。
五、界面切换
界面切换的命令:SET SCREEN <screen num>.
CALL SCREEN <screen num>.
LEAVE SCREEN.
LEAVE TO SCREEN <screen num> .
六、F4帮助
1、静态实现Search Help
数据字典中创建Search Help,在Data Element中设置关联;在Input/Output Field中设置关联 Domain的固定值/数据库表的check table等也会实现F4帮助。
2、动态实现Search Help
定义内表实现 PROCESS ON VALUE-REQUEST部分定义 FIELD <field> MODULE <module> . 使用函数F4IF_INT_TABLE_VALUE_REQUEST 下拉菜单 Input/output field属性:是否含有Key显示 使用函数VRM_SET_VALUES,在PBO中给List赋值。