课前预习练习:
首先需要开发change request –CR
习题1:当ABAP Interpreter在解释ABAP程序的时候发现一个 OPEN SQL语句
它会将OPEN SQL发送给Database
答案:错
原因: 当ABAP interpreter 遇到OPEN SQL的时候,它首先会把它交给 Database Interface 进行处理, 然后查看local buffer 中是否存在需要的数据, 如果没有所需数据 , 才会进入数据库进行查询
习题2: Database Interface 总是从 数据库中调取数据
答案: 错
原因: 当local buffer 中有所需数据时, 只需要从中获取就可以了,不用进入数据库进行查询
ABAP语言的特征
1.
2.
3.
4.
5.
ABAP的基本语法
1.
2.
3.
4.
5.
6.
7.
Addition-附属语句(相当于英语中的从句)可以加强语句功能
Pretty painter :
功能:可以设置语句缩进和关键字大小写.
Comments 注释
开头为asterisk (*)的语句为注释语句 ,注释行运行的时候会被忽略
Chained statement 链语句
在使用相同关键字时,为了方便编程,可以使用链语句.
重要:虽然链语句的代码量相对较小,但它的功能只是为了方便编程人员编写代码,链语句并不能提高程序本身的性能, 因为编译链语句时,系统并不是当成一句执行的,而是单独的进行编译的,效果和写若干个单独语句是一样的.
例: write: wa_scarr-carrid,
写法:关键字后使用Colon(冒号),每一个单独语句用comma(逗号)分隔
Return value返回值
Sy-subrc :Sy是结构体变量,属于全局变量.Sy-subrc 中的rc return code
功能:存放系统当前状态
Sy-subrc = 0 : 表示刚才执行的语句执行成功了
如果不为0 则表示执行不成功
Inactive and Active Development Objects激活概念:
1.
2.
3.
4.
5.
F1帮助:
将鼠标放到关键字中 按F1然后会出现帮助.选择instrcution 指令便能提供详细的帮助说明
在帮助说明中. “[]” 扩起来的都是 optional 可选的Mantatory 强制的
激活的概念:
对于一个对象来说,有两种状态: active(激活)和inactive(非激活)
然而对象的版本却有多个:
当一个被编辑的对象为inactive 时,保存后,它便是一个临时的版本.
Active 的优点: 避免使正在编辑中或出现BUG的程序被发布.
当要激活一个出现语法错误的程序时,系统会自动提示存在语法错误.用户可以修改程序之后激活,也可以强行激活程序
认证考试技巧:如果一道题 的提干非常的绝对,例如出现must,have to ,any time等词,这种题的答案大部分 是错误的.
创建 transaction code
当需要把ABAP程序打包成TCODE时,按照以下步骤进行操作
1.
2.
3.
4.
5.
6.
7.
注意:TCODE 也属于一个仓库对象也可以传输
授权机制:只有当basis管理员授权后,才能够使用TCODE
Package 包的 建立
注意:包也属于仓库对象,也需要传输
1.
2.
3.
重要:包的类型
Main package 主包
特点:只能包含包
Not a main package 普通包
特点:普通包可以包含包 也可以包含repository object对象
重要:包一旦创建完毕,就不能再修改包的类型了
当F1帮助不足以满足需求的时候 ,
程序的拷贝:
1.
2.
3.
4.
注意:仓库中的数据字典是用来存放数据结构的
管理信息系统
1.
2.
3.
4.
5.
透明表 Transparent table
透明表是字典库中的对象,是物理表的描述
理解:透明表就是物理表的表结构
透明表描述物理表 有哪些字段 长度 类型 主键 外键
重点: 在建立透明表 并激活后,系统就会在数据库建立一个唯一同名的物理表与之相对应
Flight Data Model 机场数据模型
一个航空公司 对应 多条航线
一条航线 对应多个航班
一个航班 又可以被旅行机构定出多张票
一个航线 包含两个机场
一个机场对应多个航线
不是每个城市都有机场
任何一个城市都是0个或N个机场
对于乘客来说
机场也对应多个城市
场景:鞍山没有机场,但是大连沈阳有机场,相当于鞍山有两个逻辑机场
将模型转化成透明表
Scarr---Airline (航空公司表)
mandt字段 (client id) 所代表记录可以标识是哪特定client 的记录,所以凡是表的第一个主键字段是mandt(data element 是s_mandt) ,就标识该表 一定是 client-specify 的数据
重要:在两张表之间, 字段多的那张表 依赖 于字段少的那张表(由于多字段表中 有外键字段 )
主外键
主键: 一个表的概念 在某一张表
外键: 两个表的概念 主键表和外键表
主外键关系:主键表有约束外键表的行为
Scenario 场景
学生表(主键表)
当学生被开除后, 在成绩表中插入该学生成绩的时候 就会有插入异常
Transparent Table透明表的定义
透明表的定义有两种方法:
1.
2.
透明表的三层结构定义
1.
2.
3.
Data Element
功能: 可以定义字段的类型
Data Element分为两部分
1.
2.
Domain
表示一个域, 可以有长度,和范围
重点: 可以用data element 来定义 透明表字段,结构体字段以及内存变量的类型, 但是 Domain 则不可以,它的只能够靠DE 间接使用
透明表只是一个表结构不能够包含数据
物理表可以存放原数据
通过se11 可以对字典库数据对象进行维护
不要对 sap的系统表 进行change 或是 create
在结构体中每个字段 叫做 component
Component type 就是字段类型
Data object一般可以理解为内存变量,但它不仅仅是内存变量,它还包含:变量 常量文字
例: I = 200
可以使用全局结构体 定义 data object
数据类型TYPE
1.
2.
通过keyword
在字典库中的
结构体用来负责定义内存变量,而透明表可以代替结构体直接定义内存变量
透明表与结构体的共同点与不同点
相同点:
1.
2.
3.
不同点:
1.
2.
3.
结构体的构成可以一分为二
1.
2.
当透明表取代结构体 定义内存变量的时候,那此时的透明表一定是Flat structure ,而且定义出的内存变量也是flat structure
重要:透明表只能是扁平的:
当一个透明表是client-specify 的时候, 它的第一个字段一定是 MANDT . 所以它创建的数据对象的第一个字段也是
而且定义出的数据对象 也一定是Flat structure
Transparent Table 透明表, field 字段, Data element 和domain 都是对象
采用parameters 定义变量
Parameters pa_carr type spfli-carrid.
1.
2.
注:如果是单纯的 Data 定义 变量,只能够分配内存,而不能够创建selection screen
Parameters 和 Data 的共同点与不同点
共同点:都是内存变量
不同点:data 是纯内存变量,Parameters 还赠送一个屏幕
F1 与 F4 帮助
F1:当采用字典库中并有Data element 的字段时, 可以使用f1帮助, 它可以显示出DE语义上的特点
F4:需要单独制作(字典库对象)search help 功能:显示出可选值
Data type数据类型
数据类型分为两种:
1.
2.
数据类型可以定义哪些变量
1.
2.
3.
4.
ABAP中的各种对象
1.
2.
3.
ABAP中定义变量使用的三种类型:
1.
2.
3.
注意:数据类型不占内存,只有定义后的变量才占内存,domain不能用来定义变量
注:教材中的黄皮书代表字典库global data types
ABAP predefined standard type ABAP自带类型
一.
d(日期): YYYYMMDD 例如”20071028”
t(时间): HHMMSS
i(整形):4bytes
f(浮点型): 8bytes
string(字符串):
xstring(16进制字符串):16进制字符串 例如’0000ff’
二.
p(用数字表示的字符串):
c(字符串):
n(数字字符串):本质上是字符串,代表的是数字只能使用十进制数字, “.”和”-”
x(十六进制字符串):必须指定长度的16进制的字符串 相当与xString
特别注意: P 为压缩类型, 当声明长度为3时,它所占的内存为 3*2 = 6 bytes 每个数字占用1个byte, 然而正负号以及小数点需要占用1byte.假设P类型长度为n,则该类型所能容纳的数字个数为 n*2 – 1 个.
Local types 自定义类型定义
使用types keyword关键字 定义 local types
只能在本程序内部使用
例:
Types type_name(10) type c.
Data do_name type type_name.
使用DATA定义内存变量:
1.
2.
3.
重要:用 like定义变量 只能拷贝目标变量类型,而不拷贝值
题目:
Given:
which of the following statements are correct? choose the correct answers:
A. this statement difines a transparent table
B. this statement difines a table which type is a transparent table named 'spfli'
C. spfli-carrid = 'AA'. may be a correct usage
D. it
E. spfli is a transparent table's name , and it's also a struture data object whose data type is a transparent table of spfli as well
答案cde
E. spfli is a transparent table's name , and it's also a struture data object whose data type is a transparent table of spfli as well:
which of the following statements concerning the usage of PARAMETERS are correct? choose the correct answers:
A. PARAMETERS pa_carr
B. PARAMETERS mypa_carrid
C. PARAMETERS myid
D. data
E. PARAMETERS myid
F. PARAMETERS myid1
答案:A D F
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/20037923/viewspace-1018931/ ,如需转载,请注明出处,否则将追究法律责任。