SAP ABAP技术整理

模块池程序大全

2022-09-12  本文已影响0人  俊杰技术汇总

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. 在子画面区域上布置画面

定义子画面领域:

创建子屏幕

上一篇 下一篇

猜你喜欢

热点阅读