SAP-ABAP-PA--培训笔记.docx
《SAP-ABAP-PA--培训笔记.docx》由会员分享,可在线阅读,更多相关《SAP-ABAP-PA--培训笔记.docx(52页珍藏版)》请在冰点文库上搜索。
![SAP-ABAP-PA--培训笔记.docx](https://file1.bingdoc.com/fileroot1/2023-6/25/c5079a5c-d69c-4662-a395-72a084754246/c5079a5c-d69c-4662-a395-72a0847542461.gif)
Part1:
F1F4帮助按钮
CLIENT代表虚拟的组织,并分为两种
1.CLIENT-SPECIFIC/CLIENT-DEPENDENT
2.CROSS-CLIENT/CLIENT-INDEPENDENT
CUSTOMIZING分为两部分
1. CLIENT-SPECIFIC配置
2.CROSS-CLIENT配置
REPOSITORYOBJECTS仓库对象全是CROSS-CLIENT的
ASAPROADMAP(SAP配置路线图)
1. BASIS模块先对上线系统进行配置
2. 各模块顾问(例如MM,SD)进行配置
3. 当需要开发额外功能的时候,ABAP人员进行开发
开发三种方式
1.CUSTOMERDEVELOPMENT 独立的开发 (推荐使用)
2.EXTENSION 加强的开发 (不推荐使用)
3.MODIFICATIONS 修改的开发 (强烈不推荐使用,可能对日后升级造成困难)
SCREEN功能:
用户可以通过屏幕输入数据库查询条件,并将数据打印出来(列表)并显示给用户
BUFFER:
每个应用服务器APPLICATIONSERVER都有一个大的SHAREDMEMORY
而对于每一个WORKPROCESS都拥有一个LOCALBUFFER,
在LOCALBUFFER中可以存放一些不经常改变的数据对象,或是只读的对象
SAPGUI的基本方式
1. SAPGUIFORWINDOWS(优点:
操作数据速度较快 缺点:
不跨平台,而且需要安装客户端)
2. SAPGUIFORJAVA(优点:
可以跨平台缺点:
操作速度较FORWINDOWS略慢)
3. SAPGUIFORHTML(优点:
0安装,查看少量数据较方便 缺点:
对网络传输要求较高,速度较慢)
SAPBASISDATABASELAYER(数据库层)
在LOCALBUFFER拥有一个TABLEBUFFER可以将不经常改变的表放入到TABLEBUFFER中
系统之间的通信
多个DISPATCHER由MESSAGESERVER进行通信管理
多个系统之间由GATEWAY进行通信管理
INSTANCE实例间不能直接通信 要通过DISPATHER和MS进行通信
占有释放
ABAP与数据库的连接
ABAP不需要自己连接数据库,这不同于JAVA语言
每个工作进程启动后就已经连接到数据库上了
长事务运行:
当有用户占用多个进程并且执行LONG-RUNNINGABAPPROGRAM(长运行时间程序例:
死循环程序)时,其余用户只能使用剩余的少量进程,这会导致多数用户成为等待状态,速度会非常慢,
解决方法:
通过BASIS人员对占用多个进程的用户进行操作或删除,释放线程,缓解运行压力
BACKGROUNDPROCESSING(后台进程)
特点:
用户不能手动控制例如:
系统晚12点自动盘点
1. 分别配两个服务器DIALOGSERVER和BACKGROUNDPROCESSINGSERVER
2. DS中的DWP在数据库中SCHEDULINGTABLE(日程表)中插入JOB,设置后台线程任务
3. BPS中的DWP定期(默认:
60S)循环查询SCHEDULINGTABLE表,当发现有新的后台任务后,将任务转给BPS中的BWP
4. BWP根据任务对数据库进行操作
打印机制Printing
SWP-打印进程可以配置也可以不配置但需要配置一个DWP
1. 用户通过点击打印按钮发送打印请求(数据为可识别的编码方式)
2. DWP将打印请求放入到SpoolRequest-打印队列(可以是Database/FileSystem) (数据为可识别的编码方式)
3. SWP每隔一段时间就会到队列中寻找打印任务,当找到新的打印任务时,便执行打印任务.
4.打印任务可以发送给本地OperatingSystemSpool(操作系统打印线程)进行打印,也可以通过网络在远程打印机上进行打印(例:
老总办公室的打印机可以远程接受远程打印报表)(此时数据是不可识别的2进制代码)
LockAdmistration加锁机制
EWP可以配也可以不配必须配DWP如果配置该服务器就叫做加锁服务器
操作:
1. 使用Su3操作用户主数据(此时系统已经把数据库的用户主数据锁住了)
2. 新开一个session 再使用SU3此时无法进入并修改用户数据,因为主数据已经被加锁
ewp锁住的是表在内存中所对应的对象
用户可以自己定义锁
锁的类型:
Sharedlock共享锁(readlock)
同时读读兼容
同时读写或写写不兼容
Exclusivelock独占锁
只要用户独占不允许任何操作(增删改查)
注:
如果锁对象被激活,系统将会自动生成两个functionmodule加锁方法和解锁
Enqueue(加锁) dequeue(解锁)
Dialogserver必须要依附于能加锁的服务器进行加锁要通过领导加锁是给内存中的表的对象加锁,通过锁内存锁数据库目的是锁数据库
Multiplexing 多路复用
原理:
有线电视利用有线电视传输间隙进行网络传输DWP的处理流程用户在点击按钮的时候,可能执行一个或多个ABAP程序,可能有一个或多个请求程序之间可能有串联关系,当第一个程序完成后会带动第二个程序运行,但是这个程序也需要放到队列中并等待空闲线程.
只有当所有的程序或请求都执行完毕后,才能够出现效果
PBO :
processbeforeoutput
PAI :
processAfterinput
Abapscreen在弹出的时间点之前之后分别要触发两个事件 PBO 和PAI
处理一个事件,需要添加相应的代码加以实现
事件的触发机制 trigger
为事件所写的代码块叫做eventblock
注:
同一个程序 屏幕编号不能重复
一个屏幕前后的PBOPAI不一定能在同一个DWP中,由于时间的关系,系统可能会把它们分到不同的DWP中.但给用户的感觉却是流畅的.
EnterpriseStructure:
企业架构
在逻辑上的大小顺序:
Client>companycode>plant>SalesOrganization>Division>StorageLocations
client(集团)代表企业
企业的分支机构都拥有公司的编码
下属工厂进行生产
销售组织
子机构
仓库
注:
系统上线之前要把所有组织机构全都要配置到R/3中
Customermaster客户主数据
采购冰箱
generaldata公共数据
financialaccountingdata 财务信息
g/l 总账
数据库的转换
Sap中成品半成品都算是物料
MessageType
分三种类型:
1. immediately创建订单的时候立即创建发票
2. onrequest有需求时创建发票
3.nextselectionrunorataspecifiedtime在指定时间里创建发票
MessageType消息的类型包括:
在屏幕上看到发票
在打印机
传真一个发票
Email传发票
Edi电子数据交换
BusinessWorkflow工作流
Employee员工 Supervisor上级/长官
场景:
1. 员工需要预约 在电脑上填写预约申请
2. 通过工作流处理上司电脑上接到预约申请并做出决定是否批准
3. 批准后工作流结束
4. 如果没有批准被拒绝的预约申请消息会被传送到员工手中,并需要进一步决策,是否需要重新修改申请表,或者是不修改申请表,直接结束工作流
5.如果重新修改申请表,上级则再一次得到申请表,如果批准,则工作流结束
BusinessScenario工作场景
利用场景解释工作流
Abapprogramprocess ----MainBusinessScenario
Sapabap必须要有业务场景
飞机场的业务模型Sapflightdatemodel
Departurecity起飞城市
Departureairport 起飞机场
Destinationairport目的机场
Destinationcity目的城市
帮助旅行代理或旅行社订票的基本需求:
在特定的时间到指定的地点
处理特定的航班订票
附加的信息
Price价格
Capacity容量
非常重要:
航班模型的表:
SCARR航空公司表
SPFLI航线表
SFLIGHT航班表(订票时所需要的表)
以上表的关系是树形关系
一个航空公司对应多个航线,而一个航线对应多个航班
Client/SeverArchitecture
Workprocess可以执行ABAPprogram
应用服务器一分为二:
1. 一部分可以执行JAVA程序
2. 另一部分是ABAP程序
Blackbox黑盒
对于gui和用户来说相当于一个黑匣子
ViewfortheUser用户视图
screen标准屏幕:
standardscreen dynpro dynimic:
功能 用户输入,为了插入数据库,
selectionscreen选择屏幕:
功能:
接受用户输入的查询的条件对数据库进行查询(一般情况下)
List列表功能:
将数据显示给用户(重要:
每个ABAP程序员必须要掌握)
InteractionBetweenServerLayers
在服务器中两层之间的交互
ABAP程序启动时要到WP中执行程序
同一个程序分成不同块
Startofscreen
Abap所有的repository全都在数据库中储存
程序的背景 context
定义选择屏幕时,所添加的屏幕字段,是根据数据字典中的字段定义的
所以定义前要从repository中去查看需要哪一种类型的字段
屏幕内存以及硬盘上的字段变量都对应相同的
但是储存的位置不同
在程序中,可以把内存中的变量当作数据库条件使用,使用where语句进行数据库操作
然后数据库将结果集返回给ABAP程序,最后返回给列表屏幕
程序可以将内存变量当作条件
重要:
在新版本中Developmentclasses 属于变化了package包
Abap运行过程需要使用repository(储存在数据库中)
仓库都跨client
依赖分两部分
配置表
应用表
Repository结构
Repository(仓库)包含applicationcomponents(应用组件)和package(包)
Package(包)中包含RepositoryObjects(仓库对象)
重要:
创建的仓库对象必须放到一个包中
管理对象的系统就是InformationSystem信息系统
Objectnavigator IDE集成开发环境
Abapdictionary se11 维护
Classbuilder Se24 面向对象开发
(Abap语言刚开始是面向过程后来也支持面向对象开发)
Functionbuilder se37全局方法
Abapeditor Se41 在修改sap自己的程序时
Screenpainter
Se80中的主要构成
Navigationarea
Repositorybroswer
Transportorgnization非常重要
Contextmenu 弹出菜单
Sap仓库对象分成两部分
系统标准对象 用户对象
Sapnamespace customernamespace(必须用Y或者Z开头)
重要:
只要是自己创建的必须要(ZY开头)
组织有效开发
Sap三系统架构图
3-systemlandscape
1.DEV开发系统
2.TST/QAS测试系统
3.PRD生产系统
优点:
三个系统可以降低企业风险
开发 测试 生产
DEV--- TST/QAS| (需要盖章) PRD
组织步骤:
1. 配置或程序开发完毕后需要发送至测试服务器进行测试
2. 测试完毕后需要盖章然后发送至生产系统,此时生产系统停止运作
3. 配置完毕后生产系统重新启动运作
相邻两系统需要从左到右进行传输(开发/配置)(transportation)
配置的传输包括模块的配置:
MMPPSD等.
优点:
开发的组织有利于传输
Sap传输请求
ChangeRequest变更请求=TransportationRequest传输请求
请求的创建是为了传输
开发请求workbenchchangerequest请求
所有开发以及配置的东西必须放到request(容器)中
Changerequest进行传输相当于 project
Changerequest下可以装package
不是每一个对象都需要设置request比如不参与传输的对象Localproject,可以不参与传输
创建project的时候点击SAVE便创建了全局对象(需要设置request以用于传输),点击localobject可以创建本地对象(因为不需要传输所以不需要设置request)
Project项目的三个重要标准
1. 项目本身
2. 开发项目的人员
3. 项目开发的时间
当项目开发人员完成所有任务后,项目负责人便可以releaseproject(释放工程),然后才能够向下一个系统进行传输。
Changerequest(变更请求)的命名规范:
前三个字母是系统的标识(DEV,TST/QAS,PRD)+K9+5位数字。
老师的要求的命名规范:
Z开头+projectname+3个数字(用户号)。
Abap中的包不可以重名。
创建project的时候需要选择相应项目经理的request
激活:
一个仓库对象有激活和非激活概念
Part2:
课前预习练习:
海尔需要二次开发项目经理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)所代表