模块池程序大全
1.概要
2.屏幕
3. 实现模块池程序
4. 表控制器控件
5.子画面
模块池又称为TYPE-1
ABAP程序又可以称为可执行程序 模块池程序,报表程序主要是用于显示从数据库取出获得的数据,而模块池主要用于查询,修改,删除等管理数据,报表程序可以直接运行,而模块池却不可以,但是,在实际业务中不区分使用
开发TYPE-1有三个步骤:
1. 定义屏幕
2.追加关于屏幕代码
3. 创建TYPE-M程序代码
屏幕:
首先屏幕指的是SAP GUI上面显示得画面,主要是用于用户相互交涉的创建,查询数据工作区域
屏幕逻辑流主要分为PBO和PAI事件
PBO:事件是显示画面之前执行的事件
PAI: 发生用户之后执行的事件
屏幕属性:SCREEN NUMBER
SHORT DESCRIPTION
SCREEN TYPE
FOLLOW-UP SCREEN
屏幕元素:TEXT
FIELDS
INPUT/OUTPUT
TEMPLATES
字段属性: FIELD NAME
DATA TYPE
LENGTH
INPUT/OUTPUT
逻辑流:PROCESS BEFORE OUTPUT
MODULE CLEAR
PROCESS AFTER INPUT
MODULE CLEAR.
屏幕属性:
主键:
屏幕编号:在程序内部用于区分屏幕4位数字 如果有标准的SELECTION SCREEN 则不能使用相同名的1000画面 一般以0100 , 0200 形式使用
屏幕类型:Normal:此类型占整个GUI窗口屏幕 为常用的一种
Subscreen: 此类型在子屏幕中使用画面
Modal Dialog Box:以弹窗的形式显示
下一个屏幕:用于被调用的屏幕PAI执行完成以后执行下一个屏幕的编号 没有调用的程序 则结束事物码 另外 可以动态在程序内部利用SET SCREEN 语句及时修改属性。NEXT SCREEN里设置为0 或者SPACE 当时结束会返回之前程序
光标位置:显示屏幕时候可以指定光标的位置初始化屏幕要素中的第一个字段
屏幕组:执行屏幕时候保存到系统的变量SY-DYNGR中
设置: 一般将用户Profile里的存储数据设置为屏幕基本使用,通常一直有效 直到屏幕会话结束
屏幕编辑器:SE51
屏幕构成的要素:
屏幕里不仅有属性还有字段输入,屏幕构成不仅有显示的数据功能化还有用户对话
屏幕字段:
设置元素清单OK_CODE字段
屏幕逻辑流:
屏幕要素:
PROCESS BEFORE OUTPUT(PBO) : 结束屏幕的PAI事件以及显示屏幕之前执行 PBO事件结束后显示屏幕,最初显示屏幕只执行PBO 在屏幕上用户触发事件时,先执行PAI再执行PBO,PBO事件中一般指定屏幕字段的初始值
PROCESS AFTER INPUT(PAI): 用户单击按钮事件执行,PAI事件结束调用下屏幕的PBO事件
PROCESS ON HELP-REQUEST(POH): 用户按<F1> 触发的事件
PROCESS ON VALUE-REQUEST(POV): 用户按<F4> 触发的事件
逻辑流的关键字:
CALL 调用子程序
MODULE 定义流模块 调用对话模块
FIELD 将数据从屏幕复制到abap字段语句 执行PAI事件在abap程序中无法控制屏幕的字段,原因在于屏幕字段数据还未复制到abap程序中,若定义字段语句,即是不执行Pai也可以用 abap程序检查数据 当修改特定的字段需要加检查逻辑经常使用,一般与MODULE SELECT语句一起用。
ON 与字段一起使用
VALUES 与字段Keyword 语句一起使用
CHAIN 开始Chain 处理
逻辑流的关键字:
CALL 调用子屏幕
MODULE 定义流程快
FIELD 将数据从屏幕复制到ABAP字段语句
NO 与字段语句一起使用
VALUES 与字段Keyword语句一起使用
CHAIN 开始Chain处理
ENDCHAIN 结束Processing Chain多个字段进行处理
CALL 调用子屏幕
LOOP 循环
ENDLOOP 结束循环
MODIFY 修改屏幕表
NO 与字段一起使用
PROCESS 定义PROCESS事件
SELECT 查询表语句
VALUES 输入值
实现模块线程池步骤:
通过se38创建程序进来以后 点击显示对象列表进来看到对象名称然后创建屏幕(SCREEN)
打开逻辑流显示
点击布局显示:
输入表名称显示下面字段
选中除了第一行以外的所有行
点击对号名称直接设置屏幕布局
设置GUI:
用户界面
应用程序工具栏
功能键
设置图标
设置好图标:
功能键盘:
E 结束事物代码设置功能键盘类型
S 系统使用功能键盘类型
T 调用事物代码的功能类型, 功能键中输入SAP中存在的事物代码
SPACE 标准应用工具栏功能类型
P Local GUI 功能键类型 只适合使用Local GUI logic 的选项卡
H 调用PROCESS NO HELP REQUEST事件
功能键设置:
菜单栏
在标准程序中自带菜单栏
实现PBO模块:
PBO模块实现追加GUI STATUS
创建PBO模块:
追加SET TITLEBAR 100_TITLE语句
实现PBO模块以及修改输出的字段专用属性:
双击Emplyee Number选框
DICT标签和属性:
Format : 设置Input字段数据类型
From dict 设置使用是否与ABAP数据字典一致
Modified 当修改ABAP数据字段时候设置自动设置’X’
Conv Exit 使用转换格式
Search Help 使用搜索帮助
SET/GET parameter 使用设置参数 SET:把用户输入保存到Parameter ID中 GET:把Parameter ID 值显示在画面中
Foreign key check 检查ABAP 数据字典外部件
Upper Lower case 设置不区分大小写
Program页属性:
Input : 将Input字段设置可输入属性,设置成Required 变成必输入字段
Output : 修改Input字段属性查询
Poss : 设置Possible Entry属性 只能输入/输出字段的设置
Entries 0 : 不显示
1 : 选择字段显示
2 : 一直显示
Right-justfied : 数字类型字段右对齐
Leading zeros : 只适用于NUMS类型
Without REST : 不能使用reset character
Without Template : 可以输入’.’,’!’,’_’任意的字母
屏幕结构体:
模块化
INCLUDE 程序在多个不同程序中可以反复使用相同的代码
Order 排序 可读性
INCLUDE 程序复杂性按照顺序排列 确保程序可读性
INCLUDE程序以下几个特性
INCLUDE 是程序 但是无法独立运行
INCLUDE 程序需要包含在其他程序中执行
INCLUDE 程序可包含其他INCLUDE程序
INCLUDE 程序不能调用自身
INCLUDE 程序不能带参数
实现PAI模块
PAI布局:
PAI模块是用户输入画面值后 按<ENTER>键单击画面上按钮触发的事件
定义列表:
在主界面定义表和变量:
Input Check:
在画面上输入Input字段时候 执行数据字段类型检验
PAI模块上执行Input check使用下列语句执行 Input check,
实际业务中最常用的方法
字段<F> module<MOD>
可以限制用户输入的值,或者检查表中是否存在该价值,另外 Input check以函数快形式存在 因此可以追加很多功能并使用
字段<F>module<MOD> ON INPUT
当字段数据类型初始化值不相同触发模块MOD
每个数据类型的初始化都不同,字符类型的初始化为space 而Numeric类型的初始化为0
字段<F>的值变更触发模块mod
例如,当用户字符型输入空格后,按<ENTET>键 即是不调用 ON input 模块也会调用 On request.
表控制器代码实现
若要使用表控制器需要在PBO和PAI模块中追加LOOP语句,执行LOOP语句可连接ABAP程序字段与画面字段数据
PBO中的LOOP语句将ABAP程序字段数据显示在画面上,PAI中的LOOP语句将画面字段,复制到ABAP程序数据中,为了防止错误发生,即是空的LOOP语句也要追加
定义控制器:
追加LOOP语句
存储ZEMP表查询
在PBO的MODULE status_0100中追加SELECT语句
在PBO中实现LOOP语句
实现Fill_table_control模块 gt_zemp内表读取数据库表数据
实现Read_table_control模块 在表控制器中 参照修改的数据行Index编号修改内表数据
在PBO事件中的LOOP AT 语句中用于修改表控制器属性的模块
子画面:
子画面是指在Runtime环境下包含其他的画面的子工作区中的画面
创建子画面顺序是:
1.在画面上定义画面工作区
2.定义子画面
3. 在子画面区域上布置画面
定义子画面领域:
创建子屏幕