SAP ABAP PA certification 培训笔记 part 2{转载}

课前预习练习:

海尔需要二次开发 项目经理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

 

B. PARAMETERS mypa_carrid,  mypa_carrid不能超过8个字符

 

转自: http://blog.sina.com.cn/s/blog_5cdacb630100ce8y.html~type=v5_one&label=rela_prevarticle 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值