SAP ABAP PA certification 培训笔记 part 2

SAP ABAP PA certification 培训笔记 part 2

[@more@]

课前预习练习:

海尔需要二次开发 项目经理BOB需要做哪些事

首先需要开发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. Open SQL 是ABAP 语言的一部分,是嵌在ABAP语言中的,它不同于JAVA,SQL 并不是JAVA的组成部分

2. Abap的基本特点:早期是完全面向过程的,而后发展为支持面向对象,它不是完全面向对象的语言,它是一种混合的模式

面向过程: 一个方法不属于一个类或一个对象

面向对象: 方法一定属于一个类或一个对象

3. Platform-independent 指的是可以跨数据库平台,Abap platform 指的是datebase

4. ABAP语言是基于会话的.主要面向business application-商务应用,一个有意义的ABAP程序一定要操作数据库,然而ABAP不能对底层进行操作.

5. Downwards compatible向下兼容: 过去的老语法现在仍然支持

例如:在定义一个内表的时候 可以加addtion (with head line) ,在新一代的ABAP编 程中不建议定义with head line 而是使用采用其他方式,但是这种语法仍然支持

ABAP的基本语法

1. ABAP 程序是由若干语句构成的

2. 第一个单词必须是 ABAP的keyword关键字

3. 用英文的句号”.”关闭ABAP语句

4. 两个单词之间用空格分隔.

5. 可以缩进

6. 多条语句可以写在一行(不建议),相反一条语句也可以写在多行

7. ABAP 大小写不敏感 :放在单引号中的(字符串)是大小写敏感的

Addition-附属语句(相当于英语中的从句)可以加强语句功能

Pretty painter :

功能:可以设置语句缩进和关键字大小写.

Comments 注释

开头为asterisk (*)的语句为注释语句 ,注释行运行的时候会被忽略

Chained statement 链语句

在使用相同关键字时,为了方便编程,可以使用链语句.

重要:虽然链语句的代码量相对较小,但它的功能只是为了方便编程人员编写代码,链语句并不能提高程序本身的性能, 因为编译链语句时,系统并不是当成一句执行的,而是单独的进行编译的,效果和写若干个单独语句是一样的.

例: write: wa_scarr-carrid,

wa_scarr-carrname,

wa_scarr-url.

写法:关键字后使用Colon(冒号),每一个单独语句用comma(逗号)分隔

Return value返回值

Sy-subrc :Sy是结构体变量,属于全局变量.Sy-subrc 中的rc return code

功能:存放系统当前状态

Sy-subrc = 0 : 表示刚才执行的语句执行成功了

如果不为0 则表示执行不成功

Inactive and Active Development Objects激活概念:

1. 建立程序

2. 取消 with top incl (如果一个程序中需要引用其他程序,需要这个选项)

3. TYPE 选项中需要指定

excutable Program (相当于带main函数的java类 ), 到处可以运行

module pool包含dynpro 屏幕.不能直接启动,需要打包TCODE 或放入菜单中运行.

include 是其他程序调用运行的

subroutine 是子程序 放局部程序

function group

interface 相当于java中的接口 .

4. 逻辑数据库 选项

5. 程序所建立时的系统名称 选项

F1帮助:

将鼠标放到关键字中 按F1然后会出现帮助.选择instrcution 指令便能提供详细的帮助说明

在帮助说明中. “[]” 扩起来的都是 optional 可选的Mantatory 强制的

激活的概念:

对于一个对象来说,有两种状态: active(激活)和inactive(非激活)

然而对象的版本却有多个:

当一个被编辑的对象为inactive 时,保存后,它便是一个临时的版本.

Active 的优点: 避免使正在编辑中或出现BUG的程序被发布.

当要激活一个出现语法错误的程序时,系统会自动提示存在语法错误.用户可以修改程序之后激活,也可以强行激活程序

认证考试技巧:如果一道题 的提干非常的绝对,例如出现must,have to ,any time等词,这种题的答案大部分 是错误的.

创建 transaction code

当需要把ABAP程序打包成TCODE时,按照以下步骤进行操作

1. 激活需要打包的ABAP program

2. 右键程序create--Transaction

3. 输入相应TCODE

4. 输入short text

5. 选择第二个选项

6. 输入需要打包的程序名

7. 选择可以执行该TCODE 的GUI

注意:TCODE 也属于一个仓库对象也可以传输

授权机制:只有当basis管理员授权后,才能够使用TCODE

Package 包的 建立

注意:包也属于仓库对象,也需要传输

1. 输入包名,建立相应的包

2. Transport layer 配置传输层

3. 设置包的类型

重要:包的类型

Main package 主包

特点:只能包含包

Not a main package 普通包

特点:普通包可以包含包 也可以包含repository object对象

重要:包一旦创建完毕,就不能再修改包的类型了

当F1帮助不足以满足需求的时候 , 可以采用help 中的 SAP library 寻求帮助

程序的拷贝:

1. 右键程序 COPY 程序

2. 修改COPY后的程序名

3. 将所有选项选中(可以copy 包括screen 一系列的东西)

4. 选择程序存放的包

注意:仓库中的数据字典是用来存放数据结构的 而数据字典中不存放程序

管理信息系统

1. 先分析客观世界存在的实体

2. 分析出实体之间的关系

3. 把客观实体的关系抽象出概念模型

4. (一般系统只是直接生成物理表) 在ABAP中,先把概念模型放入字典库 ,创建透明表(Transparent table)

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. 根据Domain 建立相应 Data element

3. 根据Data element 定义相应字段

Data Element

功能: 可以定义字段的类型

Data Element分为两部分

1. 语义上的特点—描述它的作用 , 语义上的特点会被定义在字典库的对象中

2. 描述字段技术上的特点-----传统的数据类型, 长度 以及取值范围 . 技术上的特点 要通过引用字典库的对象 domain 来定义

Domain

表示一个域, 可以有长度,和范围

重点: 可以用data element 来定义 透明表字段,结构体字段以及内存变量的类型, 但是 Domain 则不可以,它的只能够靠DE 间接使用

透明表只是一个表结构不能够包含数据

物理表可以存放原数据

通过se11 可以对字典库数据对象进行维护

不要对 sap的系统表 进行change 或是 create

在结构体中每个字段 叫做 component

Component type 就是字段类型

Data object一般可以理解为内存变量,但它不仅仅是内存变量,它还包含:变量 常量文字

例: I = 200 200也叫data object

可以使用全局结构体 定义 data object

数据类型TYPE

1. 系统原有的数据类型

2. 用户自己定义的数据类型

通过keyword Tables也可以定义一个结构类型, 后面跟一个透明表的名

在字典库中的

结构体用来负责定义内存变量,而透明表可以代替结构体直接定义内存变量

透明表与结构体的共同点与不同点

相同点:

1. 它们都是多个字段的集合

2. 字段都可以使用Data element来定义

3. 它们都可以定义内存变量或内存数据对象

不同点:

1. 透明表除了能够定义内存结构体之外,它的主要作用是定义物理表的表结构.而对于结构体来说,结构体的作用是描述内存结构的

2. 透明表主要描述的是硬盘上物理表,也可以描述内存变量,而结构体只能描述内存变量.因此.由于透明表与物理表结构相同且不可分解,所以,透明表是不可以嵌套的. 但结构体是可以嵌套的(嵌套结构体,或者internal table内表)

3. 结构体没有主外键,而透明表有主外键

结构体的构成可以一分为二

1. flat structure 扁平结构体

2. complex structure 复合结构体

当透明表取代结构体 定义内存变量的时候,那此时的透明表一定是Flat structure ,而且定义出的内存变量也是flat structure

重要:透明表只能是扁平的:

当一个透明表是client-specify 的时候, 它的第一个字段一定是 MANDT . 所以它创建的数据对象的第一个字段也是 MANDT, 因为数据对象的字段数与透明表的字段数一样多.

而且定义出的数据对象 也一定是Flat structure

Transparent Table 透明表, field 字段, Data element 和domain 都是对象

采用parameters 定义变量

Parameters pa_carr type spfli-carrid.

1. 系统分配内存

2. 变量自动会被ABAP运行环境解释成selection screen

:如果是单纯的 Data 定义 变量,只能够分配内存,而不能够创建selection screen

Parameters Data 的共同点与不同点

共同点:都是内存变量

不同点:data 是纯内存变量,Parameters 还赠送一个屏幕

F1 F4 帮助

F1:当采用字典库中并有Data element 的字段时, 可以使用f1帮助, 它可以显示出DE语义上的特点

F4:需要单独制作(字典库对象)search help 功能:显示出可选值

Data type数据类型

数据类型分为两种:

1. 数据库中自带的类型

2. 字典库中的对象类型

数据类型可以定义哪些变量

1. 定义内存变量

2. 可以定义ABAP subroutine 子程序的参数

3. 在Abap object-oriented面向对象中 定义类中的属性和方法

4. 在function mudual 中定义参数

ABAP中的各种对象

1. ABAP dictionary object

Structure 结构体

Internal table 内表

Repository Program type 仓库中的程序类型

2. data object内存中的对象,需要分配内存的对象

3. object-oriented 面向对象 中的类所创建的instance实例对象

ABAP中定义变量使用的三种类型:

1. ABAP predefined standard type 天生自带的类型

2. 用户自定义的数据类型(局部类型)

3. 数据字典中的类型(全局类型)

注意:数据类型不占内存,只有定义后的变量才占内存,domain不能用来定义变量

:教材中的黄皮书代表字典库global data types

ABAP predefined standard type ABAP自带类型

一. Complete type 完全类型(不需要指定长度)

d(日期): YYYYMMDD 例如”20071028”

t(时间): HHMMSS

i(整形):4bytes

f(浮点型): 8bytes

string(字符串): :区别c类型,前者可拓展后者定长

xstring(16进制字符串):16进制字符串 例如’0000ff’

二. Incomplete 不完全类型(需要指定长度,如果不指定,长度为缺省值)

p(用数字表示的字符串): data p1(10) type p value ‘3.14’.

c(字符串): data c1(8) type c. 缺省为 c1(1) 用一个字符 表示boolean 默认x代表true

n(数字字符串):本质上是字符串,代表的是数字只能使用十进制数字, “.””-”

x(十六进制字符串):必须指定长度的16进制的字符串 相当与xString

特别注意: P 为压缩类型, 当声明长度为3,它所占的内存为 3*2 = 6 bytes 每个数字占用1byte, 然而正负号以及小数点需要占用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. 可以使用type选择类型 例:Data do_name type type_name.

2. 可以使用like关键字 根据变量声明变量.

3. 赋初值可以使用 value 关键字 例data m_i type I value 17.

重要: like定义变量 只能拷贝目标变量类型,而不拷贝值

题目:

Given:

Tables spfli.

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 defines a data object.

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:

spfli 是一个透明表, 用他定义了一个同名的结构体类型的数据对象

which of the following statements concerning the usage of PARAMETERS are correct? choose the correct answers:

A. PARAMETERS pa_carr TYPE spfli-connid.

B. PARAMETERS mypa_carrid TYPE spfli-connid default '0017'.

C. PARAMETERS myid TYPE spfli-connid value '0016'.

D. data myid type spfli-connid.

PARAMETERS myid1 like myid .

E. PARAMETERS myid TYPE spfli-connid value '0016'.

F. PARAMETERS myid1 type spfli-connid default '0018'.

答案:A D F

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20037923/viewspace-1018931/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/20037923/viewspace-1018931/

你可能感兴趣的:(SAP ABAP PA certification 培训笔记 part 2)