ABAP培训资料.docx
- 文档编号:504776
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:16
- 大小:22.42KB
ABAP培训资料.docx
《ABAP培训资料.docx》由会员分享,可在线阅读,更多相关《ABAP培训资料.docx(16页珍藏版)》请在冰点文库上搜索。
ABAP培训资料
课前预习练习:
海尔需要二次开发项目经理BOB需要做哪些事
首先需要开发changerequest–CR
习题1:
当ABAPInterpreter在解释ABAP程序的时候发现一个OPENSQL语句
它会将OPENSQL发送给Database
答案:
错
原因:
当ABAPinterpreter遇到OPENSQL的时候,它首先会把它交给DatabaseInterface进行处理,然后查看localbuffer中是否存在需要的数据,如果没有所需数据,才会进入数据库进行查询
习题2:
DatabaseInterface总是从数据库中调取数据
答案:
错
原因:
当localbuffer中有所需数据时,只需要从中获取就可以了,不用进入数据库进行查询
ABAP语言的特征
1. OpenSQL是ABAP语言的一部分,是嵌在ABAP语言中的,它不同于JAVA,SQL并不是JAVA的组成部分
2. Abap的基本特点:
早期是完全面向过程的,而后发展为支持面向对象,它不是完全面向对象的语言,它是一种混合的模式
面向过程:
一个方法不属于一个类或一个对象
面向对象:
方法一定属于一个类或一个对象
3. Platform-independent指的是可以跨数据库平台,Abapplatform指的是datebase
4. ABAP语言是基于会话的.主要面向businessapplication-商务应用,一个有意义的ABAP程序一定要操作数据库,然而ABAP不能对底层进行操作.
5. Downwardscompatible向下兼容:
过去的老语法现在仍然支持
例如:
在定义一个内表的时候可以加addtion(withheadline),在新一代的ABAP编 程中不建议定义withheadline而是使用采用其他方式,但是这种语法仍然支持
ABAP的基本语法
1. ABAP程序是由若干语句构成的
2. 第一个单词必须是ABAP的keyword关键字
3. 用英文的句号”.”关闭ABAP语句
4. 两个单词之间用空格分隔.
5. 可以缩进
6. 多条语句可以写在一行(不建议),相反一条语句也可以写在多行
7. ABAP大小写不敏感注:
放在单引号中的(字符串)是大小写敏感的
Addition-附属语句(相当于英语中的从句)可以加强语句功能
Prettypainter:
功能:
可以设置语句缩进和关键字大小写.
Comments注释
开头为asterisk(*)的语句为注释语句,注释行运行的时候会被忽略
Chainedstatement链语句
在使用相同关键字时,为了方便编程,可以使用链语句.
重要:
虽然链语句的代码量相对较小,但它的功能只是为了方便编程人员编写代码,链语句并不能提高程序本身的性能,因为编译链语句时,系统并不是当成一句执行的,而是单独的进行编译的,效果和写若干个单独语句是一样的.
例:
write:
wa_scarr-carrid,
wa_scarr-carrname,
wa_scarr-url.
写法:
关键字后使用Colon(冒号),每一个单独语句用comma(逗号)分隔
Returnvalue返回值
Sy-subrc:
Sy是结构体变量,属于全局变量.Sy-subrc中的rcreturncode
功能:
存放系统当前状态
Sy-subrc=0:
表示刚才执行的语句执行成功了
如果不为0则表示执行不成功
InactiveandActiveDevelopmentObjects激活概念:
1. 建立程序
2. 取消withtopincl(如果一个程序中需要引用其他程序,需要这个选项)
3. TYPE选项中需要指定
excutableProgram(相当于带main函数的java类),到处可以运行
modulepool包含dynpro屏幕.不能直接启动,需要打包TCODE或放入菜单中运行.
include是其他程序调用运行的
subroutine是子程序放局部程序
functiongroup
interface相当于java中的接口 .
4. 逻辑数据库选项
5. 程序所建立时的系统名称选项
F1帮助:
将鼠标放到关键字中按F1然后会出现帮助.选择instrcution指令便能提供详细的帮助说明
在帮助说明中.“[]”扩起来的都是optional可选的Mantatory强制的
激活的概念:
对于一个对象来说,有两种状态:
active(激活)和inactive(非激活)
然而对象的版本却有多个:
当一个被编辑的对象为inactive时,保存后,它便是一个临时的版本.
Active的优点:
避免使正在编辑中或出现BUG的程序被发布.
当要激活一个出现语法错误的程序时,系统会自动提示存在语法错误.用户可以修改程序之后激活,也可以强行激活程序
认证考试技巧:
如果一道题的提干非常的绝对,例如出现must,haveto,anytime等词,这种题的答案大部分是错误的.
创建transactioncode
当需要把ABAP程序打包成TCODE时,按照以下步骤进行操作
1. 激活需要打包的ABAPprogram
2. 右键程序create--Transaction
3. 输入相应TCODE
4. 输入shorttext
5. 选择第二个选项
6. 输入需要打包的程序名
7. 选择可以执行该TCODE的GUI
注意:
TCODE也属于一个仓库对象也可以传输
授权机制:
只有当basis管理员授权后,才能够使用TCODE
Package包的建立
注意:
包也属于仓库对象,也需要传输
1. 输入包名,建立相应的包
2. Transportlayer配置传输层
3. 设置包的类型
重要:
包的类型
Mainpackage主包
特点:
只能包含包
Notamainpackage普通包
特点:
普通包可以包含包也可以包含repositoryobject对象
重要:
包一旦创建完毕,就不能再修改包的类型了
当F1帮助不足以满足需求的时候, 可以采用help中的SAPlibrary寻求帮助
程序的拷贝:
1. 右键程序COPY程序
2. 修改COPY后的程序名
3. 将所有选项选中(可以copy包括screen一系列的东西)
4. 选择程序存放的包
注意:
仓库中的数据字典是用来存放数据结构的 而数据字典中不存放程序
管理信息系统
1. 先分析客观世界存在的实体
2. 分析出实体之间的关系
3. 把客观实体的关系抽象出概念模型
4. (一般系统只是直接生成物理表)在ABAP中,先把概念模型放入字典库,创建透明表(Transparenttable)
5. 透明表和数据库表进行一一映射
透明表Transparenttable
透明表是字典库中的对象,是物理表的描述
理解:
透明表就是物理表的表结构
透明表描述物理表有哪些字段长度类型主键外键
重点:
在建立透明表并激活后,系统就会在数据库建立一个唯一同名的物理表与之相对应
FlightDataModel机场数据模型
一个航空公司对应多条航线
一条航线对应多个航班
一个航班又可以被旅行机构定出多张票
一个航线包含两个机场
一个机场对应多个航线
不是每个城市都有机场
任何一个城市都是0个或N个机场
对于乘客来说 逻辑上有多个机场
机场也对应多个城市
场景:
鞍山没有机场,但是大连沈阳有机场,相当于鞍山有两个逻辑机场
将模型转化成透明表
Scarr---Airline(航空公司表)
mandt字段(clientid)所代表记录可以标识是哪特定client的记录,所以凡是表的第一个主键字段是mandt(dataelement是s_mandt),就标识该表一定是client-specify的数据
重要:
在两张表之间,字段多的那张表依赖于字段少的那张表(由于多字段表中有外键字段)
主外键
主键:
一个表的概念在某一张表 某一个字段或某几个联合字段能够区别于任何一个字段
外键:
两个表的概念主键表和外键表 外键表中的单个字段或者多个联合字段是主键表的主键,则称这写字段是该外键表的外键
主外键关系:
主键表有约束外键表的行为
Scenario场景
学生表(主键表) 成绩表(外键表)
当学生被开除后,在成绩表中插入该学生成绩的时候就会有插入异常
TransparentTable透明表的定义
透明表的定义有两种方法:
1. 像传统表一样直接通过类型定义字段
2. 通过三层结构进行定义(推荐)
透明表的三层结构定义
1. 定义透明表
2. 根据Domain建立相应Dataelement
3. 根据Dataelement定义相应字段
DataElement
功能:
可以定义字段的类型
DataElement分为两部分
1. 语义上的特点—描述它的作用 ,语义上的特点会被定义在字典库的对象中
2. 描述字段技术上的特点-----传统的数据类型,长度以及取值范围.技术上的特点要通过引用字典库的对象domain来定义
Domain
表示一个域,可以有长度,和范围
重点:
可以用dataelement来定义透明表字段,结构体字段以及内存变量的类型,但是Domain则不可以,它的只能够靠DE间接使用
透明表只是一个表结构不能够包含数据
物理表可以存放原数据
通过se11可以对字典库数据对象进行维护
不要对sap的系统表进行change或是create
在结构体中每个字段叫做component
Componenttype就是字段类型
Dataobject一般可以理解为内存变量,但它不仅仅是内存变量,它还包含:
变量常量文字
例:
I=200 200也叫dataobject
可以使用全局结构体定义dataobject
数据类型TYPE
1. 系统原有的数据类型
2. 用户自己定义的数据类型
通过keyword Tables也可以定义一个结构类型,后面跟一个透明表的名
在字典库中的
结构体用来负责定义内存变量,而透明表可以代替结构体直接定义内存变量
透明表与结构体的共同点与不同点
相同点:
1. 它们都是多个字段的集合
2. 字段都可以使用Dataelement来定义
3. 它们都可以定义内存变量或内存数据对象
不同点:
1. 透明表除了能够定义内存结构体之外,它的主要作用是定义物理表的表结构.而对于结构体来说,结构体的作用是描述内存结构的
2. 透明表主要描述的是硬盘上物理表,也可以描述内存变量,而结构体只能描述内存变量.因此.由于透明表与物理表结构相同且不可分解,所以,透明表是不可以嵌套的.但结构体是可以嵌套的(嵌套结构体,或者internaltable内表)
3. 结构体没有主外键,而透明表有主外键
结构体的构成可以一分为二
1. flatstructure扁平结构体
2. complexstructure复合结构体
当透明表取代结构体定义内存变量的时候,那此时的透明表一定是Flatstructure,而且定义出的内存变量也是flatstructure
重要:
透明表只能是扁平的:
当一个透明表是client-specify的时候,它的第一个字段一定是MANDT.所以它创建的数据对象的第一个字段也是 MANDT,因为数据对象的字段数与透明表的字段数一样多.
而且定义出的数据对象也一定是Flatstructure
TransparentTable透明表,field字段,Dataelement和domain都是对象
采用parameters定义变量
Parameterspa_carrtypespfli-carrid.
1. 系统分配内存
2. 变量自动会被ABAP运行环境解释成selectionscreen
注:
如果是单纯的Data定义变量,只能够分配内存,而不能够创建selectionscreen
Parameters和Data的共同点与不同点
共同点:
都是内存变量
不同点:
data是纯内存变量,Parameters还赠送一个屏幕
F1与F4帮助
F1:
当采用字典库中并有Dataelement的字段时,可以使用f1帮助,它可以显示出DE语义上的特点
F4:
需要单独制作(字典库对象)searchhelp功能:
显示出可选值
Datatype数据类型
数据类型分为两种:
1. 数据库中自带的类型
2. 字典库中的对象类型
数据类型可以定义哪些变量
1. 定义内存变量
2. 可以定义ABAPsubroutine子程序的参数
3. 在Abapobject-oriented面向对象中定义类中的属性和方法
4. 在functionmudual中定义参数
ABAP中的各种对象
1. ABAPdictionaryobject
Structure结构体
Internaltable内表
RepositoryProgramtype仓库中的程序类型
2. dataobject内存中的对象,需要分配内存的对象
3. object-oriented面向对象中的类所创建的instance实例对象
ABAP中定义变量使用的三种类型:
1. ABAPpredefinedstandardtype天生自带的类型
2. 用户自定义的数据类型(局部类型)
3. 数据字典中的类型(全局类型)
注意:
数据类型不占内存,只有定义后的变量才占内存,domain不能用来定义变量
注:
教材中的黄皮书代表字典库globaldatatypes
ABAPpredefinedstandardtypeABAP自带类型
一. Completetype完全类型(不需要指定长度)
d(日期):
YYYYMMDD例如”20071028”
t(时间):
HHMMSS
i(整形):
4bytes
f(浮点型):
8bytes
string(字符串):
注:
区别c类型,前者可拓展后者为定长
xstring(16进制字符串):
16进制字符串例如’0000ff’
二. Incomplete不完全类型(需要指定长度,如果不指定,长度为缺省值)
p(用数字表示的字符串):
datap1(10)typepvalue‘3.14’.
c(字符串):
datac1(8)typec.缺省为c1
(1)用一个字符表示boolean默认x代表true
n(数字字符串):
本质上是字符串,代表的是数字只能使用十进制数字,“.”和”-”
x(十六进制字符串):
必须指定长度的16进制的字符串相当与xString
特别注意:
P为压缩类型,当声明长度为3时,它所占的内存为3*2=6bytes每个数字占用1个byte,然而正负号以及小数点需要占用1byte.假设P类型长度为n,则该类型所能容纳的数字个数为n*2–1个.
Localtypes自定义类型定义
使用typeskeyword关键字定义localtypes
只能在本程序内部使用
例:
Typestype_name(10)typec.
Datado_nametypetype_name.
使用DATA定义内存变量:
1. 可以使用type选择类型例:
Datado_nametypetype_name.
2. 可以使用like关键字根据变量声明变量.
3. 赋初值可以使用value关键字例datam_itypeIvalue17.
重要:
用like定义变量只能拷贝目标变量类型,而不拷贝值
题目:
Given:
Tablesspfli.
whichofthefollowingstatementsarecorrect?
choosethecorrectanswers:
A.thisstatementdifinesatransparenttable
B.thisstatementdifinesatablewhichtypeisatransparenttablenamed'spfli'
C.spfli-carrid='AA'.maybeacorrectusage
D.it definesadataobject.
E.spfliisatransparenttable'sname,andit'salsoastruturedataobjectwhosedatatypeisatransparenttableofspfliaswell
答案cde
E.spfliisatransparenttable'sname,andit'salsoastruturedataobjectwhosedatatypeisatransparenttableofspfliaswell:
spfli是一个透明表,用他定义了一个同名的结构体类型的数据对象
whichofthefollowingstatementsconcerningtheusageofPARAMETERSarecorrect?
choosethecorrectanswers:
A.PARAMETERSpa_carr TYPE spfli-connid.
B.PARAMETERSmypa_carrid TYPE spfli-conniddefault'0017'.
C.PARAMETERSmyid TYPE spfli-connidvalue'0016'.
D.data myid typespfli-connid.
PARAMETERSmyid1 likemyid.
E.PARAMETERSmyid TYPE spfli-connidvalue'0016'.
F.PARAMETERSmyid1 typespfli-conniddefault'0018'.
答案:
ADF
B.PARAMETERSmypa_carrid, mypa_carrid不能超过8个字符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ABAP 培训资料