Select语句的使用
关键字into后可以加 structure(结构体), internal table(内表) 和 fieldlist(字段列表)
Authority 权限
程序员可以根据权限对象创建权限实例
而basic 负责将权限分配给其他用户
At selection-screen
在选择屏幕中输入值后,点击屏幕左上角的运行按钮 或 按回车键时,可以对输入的数据进行有效性校验.
重点: at selection-screen最大的作用是检查当前用户是否具有对输入数据进行操作的权限
程序中
第一个事件块是 load-of-PRogram
但是不能只
程序中事件的启动顺序
1.
2.
3.
4.
5.
注意:当程序中没有指定任何事件块时, 系统默认为start-of-selection事件
用户双击basic list screen的一条数据时,系统从隐藏域中查找相应的数据.
并将数据回传给全局变量中去.
当双击一条数据的时候 sy-lsind + 1
当没找到at line-selection事件块时,sy-lsind又自动减1
Selection screen选择屏幕
选择屏幕的属性
1.
2.
3.
4.
变式的创建
1.
2.
1)
2)
3)
注意:一定要将屏幕中的值填写完毕以后再保存变式
变式的特点
1.
2.
重点:
Seletion screen 选择屏幕
定义选择屏幕上的字段有两种方式
1.
2.
parameters功能: 用户可以通过选择屏幕输入查询条件对数据库进行访问.
使用parameters 定义选择屏幕的两点限制
1.
2.
定义语法: parameters <变量名>type <类型>.
注:如果使用dataelement定义变量,则该变量也具有语义意义.
Selction screen 的执行顺序:
1.
2.
3.
4.
执行顺序实例:
Parameters pa_carr type spfli-carrid.
Load-of-program.
Pa_carr = ‘LH’.
Start-of-selection.
Pa_carr=’DL’.
Write pa_carr.
屏幕弹出时, 输入域中为 LH ,确定屏幕后, 显示值为 DL.
Value Sets(SELECT-OPTIONS) 多值输入屏幕
Parameters 与 select-options 的区别
1.
2.
select-options功能:
根据用户输入的 value range 取值范围 到数据库中查找符合范围的数据
Select-options 定义的内表
重要:
该内表有4个字段
1.
2.
3.
4.
当屏幕弹出后, 点击mulitple selction按钮可以加入其他选择范围
范围包括
1.
2.
3.
4.
select-options 运行原理
1.
2.
3.
4.
5.
注意:使用loop at 循环一个带有head line 的内表,不需要加[].
Selction screen events 选择屏幕事件
事件启动流程
1.
2.
3.
4.
5.
6.
重点: 回车 和运行(F8)的区别
1.
2.
注意: at selection screen 的主要功能是authority check 权限校验 ,如果校验失败,则应该生成一个E(error)类型的message 以通知用户校验失败.
User Dialog screen用户会话屏幕(或称为Dynpro Screen ,standardscreen)
Dynpro screen 功能:用户可以通过屏幕录入或修改数据
Dynpro screen 参数
1.
2.
3.
4.
Dypro screen Attributes属性
1.
2.
3.
4.
Dypro screen 运行流程
1.
2.
3.
4.
5.
6.
PBO module: PBO 事件对应的模块
PAI
Next screen 的配置
1.
2.
使用T CODE 运行屏幕
功能: 使用T CODE可以使ABAP以外的配置人员 在workbench 以外运行屏幕.
Dynrpo screen 在程序中可以使用的位置
1.
2.
3.
4.
5.
6.
Screen painter 屏幕绘制器
功能:专门绘制ABAP屏幕的程序,可以绘制dynpro screen
注意:必须在安装GUI的时候选择并安装.
可以通过screen 屏幕上的 LAYOUT 键,可以进入 screen painter ,通过Graphicallayout editor 布局编辑器
Dynpro Screen 具体操作
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
重点:在PBO事件中第一步一定要清空OK_CODE(CLEAR ok_code)
1.
2.
3.
4.
5.
6.
暂时消息:可以使用
Global modularization
Function module : 属于repositiry中对对象, 封装了最为常用的代码.
Fuction group
1.
2.
Function group 工作原理:
1.
2.
3.
4.
注意:Functiongroup不能太大,粒度不适合过大.每一次调用,都会将group所有部分调入到内存,如果过大 ,则会降低系统运行效率.
Function group 共享性
如果group 中的一个module 修改了group 中的属性,那么当组内的module再次访问该属性时,显示的属性就是已经修改后的属性
Function group 需要通过接口来调用
Function module
Fucntion module 类型
1.
2.
3.
Function module interface 参数
1.
2.
3.
重要: 声明module 时,参数要以 module 内部为参照体, 进来的数据为import , 出去的数据为 export.
注意:Import 和 export 参数都是可选的, 也可以设定为passvalue值传, 缺省以及推荐传送方式 是 引用传.由于调用module 时, 需要调用group的整个数据,数据量较大, 所以选择引用传能提高效率.
Function module 的创建
1.
2.
3.
4.
5.
6.
7.
8.
Classes and Objects 类和对象
ABAP 可以创建一个引用类型的数据类型
DATA ref1 TYPE REF TO class.
DATA ref2 TYPE REF TO class.
定义两个能指向 class 的指针
CREATE OBJECT ref1
CREATE OBJECT 相当于java 中的new
方法的调用
CALL METHOD ref1 -> meth1
EXPORTING
IMPORTING
EXCEPTIONS
面向对象中封装了很多组件
1.
2.
BAPI: 属于全局调用的方法,业务层的函数
Standardlized BAPIs
1.
2.
3.
4.
BAPI 就是 function module , 相当于business functionmodule
Calling programs调用程序
程序之间的调用.
Insertion(谦让式)
当程序A调用程序B时, 程序B占据栈顶,程序A压在下面, 当程序B执行完毕后,程序A继续执行
Restart(抢占式)
当程序A调用程序B时,程序A在栈顶被移出而被程序B所占据
程序调用语句:
在程序中使用 submit关键字 调用 下一个程序
1)
2)
3)
via selection-screen作用:如果程序2中有选择屏幕,则程序2被调用时会弹出屏幕
Restart
Leave to transaction<T-code>: 功能相当于输入”/n<T-code>”,当程序执行该语句时,该程序就会在内存被清空,接着转到相应的TCODE程序中去
insertion
call transaction <T_CODE> [andskip first screen 忽略被调用程序的第一个屏幕]
执行下一个程序, 当前程序会被压到栈的下一个位置而不会被清空
重点: and skip first screen 忽略被调用程序的第一个屏幕,但是 PBO 和 PAI的Module还会被执行.
Memory management内存管理
重要:当R/3 用户登陆系统的时候, 整个系统环境被称作 userterminal session.
其中包含:
1.
2.
Session流程
1.
2.
3.
Memory
1.
2.
在一个External session中 ,程序A将数据存放至ABAP memory中,程序B可以从中取出存放的数据.
在同一个terminalsession(同一个操作用户)的前提下,程序A数据存放到 SAP memory中,程序B可以共享内存中的数据.
在同一个External session中,
Insertion
程序A 调用 程序B
此时 internal session 从上到下的位置为 C – B -- A
Restart
程序A 调用 程序B,
注意:例如,在restart情况下,堆栈中已经有程序A, B, C 三个程序,C在栈顶,
新闻热点
疑难解答