版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SAP BC417 课程课程中文自学笔记中文自学笔记强晟强晟2007年年12月月6日日 v1.0E-mail:Blog:http:/SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components2前言前言 随着 SAP 的发展和软件开发技术的发展,ABAP 开始引进面向对象的概念,BAPI 则是在这个转换过程中融合了面向过程和面向对象两种开发方式的产物。 为了兼容过去的开发方式,SAP 把 BAPI 的方法调用组织在函数组和函数模块中,使用传统的面向过程的 ABAP 可以调用这些函数模块来完成 BA
2、PI 的功能。同时,BAPI 以业务对象的面目出现,将逐渐转变成可以被面向对象的 ABAP 或者 Java 调用的对象。同时,它还具有远程函数调用的能力,可以被其他的软件开发语言在其他平台上调用。它已经逐渐成为 SAP 开发的主流技术。强晟 2007年11月9日SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components3目录目录 第一单元:介绍 第二单元:BAPI 基础 第三单元:创建一个 RFC 函数模块 第四单元:业务对象 第五单元:数据库更新 第六单元:BAPI 调用 第七单元:增强和修正
3、 第八单元:使用 ALE 和 IDOC 的 BAPI 第九单元:集中数据传输 附录:新的 BAPI 项目实施SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components4课程说明课程说明 课程目标 创建、维护和使用 BAPI 学习本课程后应该可以 说明 BAPI 开发的四个阶段:分析、设计、测试和实现 设计和维护 BAPI 查找或创建业务对象 增强 SAP 提供的 BAPI 执行对 BAPI 的外部调用SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Developme
4、nt for Accessing SAP Components5第一单元:介绍第一单元:介绍 学习本单元后应该可以 说明 SAP 业务框架 定义业务对象和列出它们的组件 说明 BAPI 的意图和基本功能 说明业务场景 列出场景的阶段和它们的意图 说明 BAPI 的事务模型 列出事务步骤和它们的时间点 找出和访问 BAPI 开发中用到的工具 使用可用工具来找出现存 BAPI 列出与 BAPI 及其组件相关的命名规范SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components6第一单元:介绍第一单元:
5、介绍 单元内容 介绍 BAPI 的概念和使用 介绍业务场景 介绍 BAPI 事务模型 介绍工具和命名规范 练习:查找和测试一个现有 BAPISAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components7第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 本课概览 SAP 创建了业务框架,让 SAP 组件之间以及 SAP 和非 SAP 组件之间能够实现技术集成和交换业务数据。业务框架的一个主要组件就是业务应用程序接口(BAPI),它能够表示出组件边界的可视化接
6、口,而属性则把组件集成在一起。 这种集成可以包含本地网络内的组件或者通过互联网相互连接的组件。BAPI 允许在业务层的集成,而不是技术层。这为连接提供了非常好的可伸缩性和对于未知通讯技术的独立性。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components8第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 本课目标 说明 SAP 业务框架 定义业务对象并列举它们的组件 说明某个 BAPI 的意图和基本功能 业务示例 在今天的业务环境中,对业务信息的即时性和
7、精确性要求比以往更加紧迫。仅仅知道信息存在在组织内部某地已经不够了它必须是简明的、精确的,并且以便于使用的形式快速获取。此外,这个信息资源的用户可能会分散在世界各地,并且操作着与保存数据系统不同的其他系统。可访问性就成为一个主要的业务课题。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components9第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 业务框架 SAP R/3 业务框架提供了一个基于 R/3 中功能性应用组件(业务组件)和对象模型的结构。业务
8、框架允许客户和合作伙伴把他们自己的组件连接到 R/3 系统。面向对象技术和对象模型的使用降低了整个系统的复杂性。 业务框架架构提供了开发 SAP 业务组件的基础。集成和通讯架构可以表示如下:SAP R/3Application Link Enabling(ALE)应用组件业务对象BAPIBAPIBAPI分布的业务处理业务处理的集成服务和业务对象的分布Remote Function Call (RFC)(D)COMCORBA通讯服务SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components10第一
9、单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 业务框架的组成 SAP 业务框架的基本组件如下: 业务组件业务组件SAP 业务组件提供了自主的业务功能和一致的业务对象。例如,业务对象 Employee 和 Applicant 被分配给业务组件 Human Resource。业务处理或者在业务组件内部实现,或者跨多个组件实现(分布式业务处理)。 业务对象业务对象R/3 系统面向对象的结构基于业务对象。他们封装了业务数据和功能,并且定义了业务组件的功能范围和边界。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Developme
10、nt for Accessing SAP Components11第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 业务框架的组成(续) 业务应用开发接口(业务应用开发接口(BAPI)BAPI 是业务对象的接口,BAPI 跟业务对象一起从业务层定义和说明了接口标准。 集成服务,应用连接使能(集成服务,应用连接使能(ALE)ALE 集成服务允许业务处理在不同 R/3 系统或非 R/3 系统上执行的集成。这个使用了 ALE 分布式模型的服务基于业务对象在系统范围上的分布。 通讯服务通讯服务这些都是通讯技术,例如,分布式组件对象模型(DCOM)和远程函数调用
11、(RFC),它们使用业务框架来访问 BAPI。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components12第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 SAP 业务对象(1) 业务对象技术和业务对象编程都基于业务对象的概念。例如,真实世界的对象,一个员工或者一份销售订单,在业务应用系统(如 R/3 系统)中都被模型化为业务对象。这个建模过程从定义业务对象类型开始。 业务对象类型,在 SAP R/3 系统表示一个业务实体,包含了这个实体的功能(以方法
12、的形式出现)和数据(以属性的形式出现)。业务对象类型的实现细节则对用户隐藏了。业务对象类型通过已经定义好的功能(方法)来访问。这就被称为封装。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components13第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 SAP 业务对象(2) 业务对象类型用来把 SAP R/3 系统拆分成小的特定单元。由于降低了复杂性,系统的结构也因而改善了。 业务对象类型构成了 SAP R/3 系统的数据和功能的入口点。在业务对象类型
13、层,非 SAP 系统和各种 SAP 业务组件都可以互相通讯。 业务对象类型 SalesOrder 表现为某个客户对公司的请求,具体包括在某个特定时间点提供一定数量的物料或者在某个时间点履行服务。一个特定的销售订单由它的销售凭证号来标识。该业务对象类型包含了一个销售订单的所有必要信息:售达方、销售组织、凭证日期、净重、销售金额和分发凭证。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components14第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 SAP
14、业务对象(3) 一个业务对象类型应该可以理解为一个业务概念和它在 SAP R/3 系统中的实现概念。业务对象类型这个术语对应于面向对象编程语言中的术语类。 业务对象类型的某个特定的发生,例如实际存储在系统中的一个销售订单,必须要跟业务对象类型本身区分开来。这个特定发生被称作一个实例(面向对象编程语言中的常规术语)或者一个业务对象。 编号为 102 的销售订单是业务对象类型 SalesOrder 的一个实例。这个销售订单由它的销售和分发文档号 102 来标识。这个对象通过它的属性来描述,包括售达方、销售组织、凭证日期等等。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAP
15、I Development for Accessing SAP Components15第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 SAP 业务对象(4) 业务对象类型的结构业务对象类型的结构下图描绘了业务对象类型的概念:业务对象核心完整性接口访问通过:内部结构特殊化一致性条件(对象特性)业务规则(环境特性)属性BAPI,方法时间Internet(HTTP)COM/DCOMCORBAABAP(RFC)SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Compo
16、nents16第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 SAP 业务对象(5) 上图中包含一些重要的事项: 业务对象类型的核心描述了内部对象结构,换句话说就是它的数据和这些数据的结构。 约束是确保一个对象一致性的规则(例如,对于不同的最低销售数量可以分配不同的价格条件)。 业务规则要求一个对象必须遵守基本规则,确保对象在它的环境中保持内在的一致性(例如,一个销售组织只能销售给存在这业务关系信息的客户)。 接口提供了访问业务对象类型的预定义的方法,它们可以是公共属性,方法/BAPI 和事件。 对象可以通过 COM/DCOM 或者 CORBA(通用
17、对象请求代理架构)来访问。在 ABAP 应用中,业务对象可以被远程函数调用(RFC)访问。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components17第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 SAP 业务对象(6) 定义和实现一个对象类型定义和实现一个对象类型业务对象类型在业务对象知识库(BOR)中描述,具有下列特性:对象类型基本数据接口键字段属性方法事件程序字段引用虚拟属性对象引用同步异步事务码函数模块报表ABAP 代码API 方法关系属性S
18、AP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components18第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 SAP 业务对象(7) 对业务对象特性的说明 基本数据基本数据包含有助记忆的对象名字,对象类型的技术名称,它的名称(有意义的说明),它的短描述,发布状态,缺省方法,缺省属性,以及包含了它的实现的程序名。 接口接口提供了一个对象预定义的接口(属性、方法、事件)。接口类型通常不包含实现。 键字段键字段唯一标识一个对象。 属性属性表现对象的性质和特征。
19、 方法方法封装了 R/3 的功能,可以是同步或异步方法。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components19第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 SAP 业务对象(8) 对业务对象特性的说明(续) 事件事件预示业务对象状态改变的事件。 业务对象键字段业务对象键字段每个业务对象类型都有一个或多个键字段。每个实例有一个唯一的键字段的值组合,由键字段中的特定值来标识。这种唯一的值组合机制就能让通过键字段中的值访问一个特定的业务对象类型的实
20、例成为可能。键字段在业务对象设计时是需要重点考虑的。大多数情况下,对象类型的键字段也是包含了业务对象类型的表头数据表的键字段。因为 BOR 运行时对象是客户端相关的,所以客户端可以不作为一个键字段。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components20第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 业务应用程序接口(1) 业务应用编程接口(BAPI)允许通过形式化、稳定并且无需交互的接口来访问 SAP 的函数。这些接口可以被由客户和其他软件合作
21、伙伴开发的外部应用所使用,也可以被其他 SAP 应用使用。 ABPI 是为业务应用系统精确定义的处理和数据的接口,它做为业务对象知识库(BOR)中的对象的接口来实现。 BAPI 定义成 SAP 业务对象类型的 API 方法。这些对象类型在业务框架中使用,允许组件之间基于对象的通讯。业务对象和它们的 BAPI 让面向对象可以在公司的中心信息处理中被使用。例如,现存的函数和数据都能被重用,可以达到无障碍的技术协同工作能力,并且可以实现非 SAP 组件。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Compo
22、nents21第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 业务应用程序接口(2)基本特征 由于 BAPI 做为 R/3 系统的标准接口,它们需要特定的标准、认同和可依赖的特征。在任何开发 BAPI 的时候都必须考虑这些特征。这些特征包括: 面向对象面向对象:BAPI 做为在业务对象知识库中定义的业务对象的对象方法来实现。 稳定的接口稳定的接口:BAPI 的接口是固定的。 内部和外部使用内部和外部使用:BAPI 可以从 R/3 内部使用也可以从外部系统调用。 无表示层无表示层:BAPI 不提供用户接口功能。显示请求的结果是调用者的指责。 为消息使用
23、参数为消息使用参数:成功和错误消息在 RETURN 参数中处理。这可以是个结构或是个表,由 BAPI 来决定。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components22第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 业务应用程序接口(3)集成 BAPI 可以用于下列的集成类型: 使用 SAP 业务连接器或者互联网应用组件(IAC)把 R/3 连接到互联网上。 BAPI 还允许创建真实组件软件,只要它们允许 SAP 组件间的标准通讯。最终目标是把 S
24、AP 系统的功能封装到通过通用接口(BAPI)集成的独立业务组件中。 新的 SAP 组件、非 SAP 软件和遗留系统的集成。 实现使用应用连接使能(ALE)异步连接的分布式 R/3 场景。 使用 PC 程序做为 R/3 系统的前台,这可以用 Visual Baisc(Microsoft)或者 Visual Age for Java(IBM)来开发。 扩展超越系统边界的工作流应用。 客户和合作伙伴的自主开发。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components23第一单元:介绍第一单元:介绍
25、 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 业务应用程序接口(4)集成和可用性目标 当实现 BAPI 时,应该尽量避免以往接口的明信片效应的缺点:不区分内容和传输。在明信片中,文本写在卡片上,而卡片还充当了信息媒介。如果信息媒介改变了,接收者就会以不同的方式读到文本。这样的结果是,对接口的更改会影响对类型的访问。 在 BAPI 里,清晰的把业务内容与潜在的通讯技术区分开来。这个过程可以跟一封在信封中的信来比较:把一封信放到一个新信封里非常容易,同样的,使用一个新的和(或)不同的通讯技术如 COM/DCOM、CORBA 标准或新的互联网标准时也同样容易。信封本身与理解新的内容
26、并不相关。在这个例子中,BAPI 相当于信,也就是说它们与程序语言和通讯机制都完全无关。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components24第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 业务应用程序接口(5)通讯 为了允许它们在任何情形下都能使用,BAPI 必须支持所有通讯形式并能被所有类型的参与者使用。 支持同步和异步通讯 BAPI 可以对 SAP 组件进行同步或异步调用。如果调用是同步的,BAPI 就被做为远程函数调用(RFC)来调用。
27、当 BAPI 在发送者系统被调用,就生成一个 IDoc 并分配给接收者系统。当 IDoc 到达接收者,相应 BAPI 的参数就会用 IDoc 数据自动填充,BAPI 再同步调用。 支持机器到机器和人到机器的通讯SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components25第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 业务应用程序接口(6)通讯 BAPI 可以用在应用系统集成和连接到各种前端上。 应用系统的集成可以称为机器到机器的通讯。它在交换大量数据
28、和需要很高系统性能时使用。这种情况下的 BAPI 应用将提供很少的细节信息。 各种前端的集成是人到机器的通讯。这时的 BAPI 使用有很多的细节,它们必须设计为允许更灵活的通讯以减少错误。 对组件的通讯支持被精确连接并通过互联网连接 除了在 CORBA 和 COM/DCOM 这样的通讯技术下使用 BAPI 外,它还可以通过 SAP 业务连接器在互联网上被访问。业务连接器从 BAPI 调用生成 XML,或者传递一个内含的 XML 文档到 BAPI 调用中。这可以把 BAPI 调用分配成为 XML 文档,允许通过互联网连接的组件之间的通讯。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC
29、417: BAPI Development for Accessing SAP Components26第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 业务应用程序接口(7)优点 使用 BAPI 具有如下优点: BAPI 表现为良好定义、内部一致的单元,总是表示业务事实,并且隐藏的数据库状态的一致性。 业务内容可以被标准化,因为 BAPI 不仅在技术层面上允许 SAP 系统和其他软件的集成,也在业务层面实现了集成。 BAPI 已经成为业务系统间的通讯标准,通过面向对象接口技术(例如 COM/DCOM)的访问已经成为可能。SAP 万对象遵守 OAG(O
30、bject Application Group)的方针,并且适合于 OMG(Object Management Group)的 CORBA 标准。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components27第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 业务应用程序接口(8)优点 使用 BAPI 具有如下优点: 当 SAP 发布 BAPI 时能够保证其稳定性和兼容性。它的接口定义和参数将长期保持不变,这意味着应用程序即使在 SAP 软件或数据发生更改
31、时也不受影响。如果给 BAPI 添加了向上兼容的增强,现存应用的稳定性也不受影响。 BAPI 可以支持开放系统,能被任何的开发平台访问。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components28第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 业务对象知识库(1) 定义定义业务对象知识库(BOR)是 SAP 业务对象类型和它们的 BAPI 的中心访问点。BOR 最初为 SAP 业务工作流开发。今天,除了存储 SAP 业务对象类型和它们的 BAPI 外
32、,BOR 还用于 ArchiveLink、输出控制以及它们的一般对象服务。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components29第一单元:介绍第一单元:介绍 第一课:介绍第一课:介绍 BAPI 的概念和使用的概念和使用 业务对象知识库(2)服务 BOR 在 BAPI 上下文提供了下列服务: 允许在 SAP 系统中所有数据和处理都以面向对象的角度来观察。 把各种业务对象类型根据组件层级来组织,让函数能被迅速简单的查询和取得。 存储所有相关信息。BOR 包含了 SAP 业务对象类型的所有相关
33、信息,它们的键字段、and their BAPI methods that are needed to integrate the correct object type definitions and BAPI calls in an application program(惭愧,这句硬是读不通)。这使中间件集成(例如 DCOM 连接器、ActiveX 控件、CORBA 网关等等)成为可能。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components30第一单元:介绍第一单元:介绍 第一课:介绍
34、第一课:介绍 BAPI 的概念和使用的概念和使用 业务对象知识库(3)服务 BOR 在 BAPI 上下文提供了下列服务: 确保接口稳定。任何接口变更都在 BOR 中进行,会执行语法兼容性的自动检查,避免与 ABAP 字典中相关开发对象发生不一致。 以发行升级方式管理 BAPI。添加参数类的 BAPI 接口增强记录在 BOR 中。以前的接口版本可以在任何时候重建。当 BAPI 创建时,新 BAPI 的发行版本也记录在 BOR 中。同样,接口参数创建时也一样。 创建 SAP 业务对象的实例。BOR 的运行时环境从客户端应用接收创建运行时对象的请求并且创建相应的对象实例。SAP 学习笔记系列学习笔记
35、系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components31第一单元:介绍第一单元:介绍 第二课:介绍业务场景第二课:介绍业务场景 本课概览 在编写 BAPI 之前,应该清楚的定义这个 BAPI 将会使用到的过程和状态。BAPI 应该只在有意义的业务场景环境中实现。 本课目标 说明业务场景 列出场景的步骤及其意图 业务示例 如果你已经参与过某个公司的新业务应用的内部开发,就应该知道分析现有系统的重要性。目标是增加当前没有的新功能或者纠正和完善已知功能。只有在计划好新功能并且知道它如何被使用后才可以恰当的完成。SAP 学习
36、笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components32第一单元:介绍第一单元:介绍 第二课:介绍业务场景第二课:介绍业务场景 说明场景(1)场景 业务步骤包含一系列独立的业务功能。业务步骤的内容应该完全与技术细节分开描述。 在一个分支机构中创建一个销售订单会需要在公司总部执行一系列信用检查。 要定义业务步骤,必须: 定义这个业务步骤的意图和范围。 在业务步骤中区分独立的步骤。为此,可以使用一个过程模型或者用例工具。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Deve
37、lopment for Accessing SAP Components33第一单元:介绍第一单元:介绍 第二课:介绍业务场景第二课:介绍业务场景 说明场景(2)业务步骤 一个场景,是一个业务过程计算机化的执行,描述了在参与组件之间的任务分布和交互。实现相同业务过程可以有几个场景。 必须在不同 R/3 系统(中央财务、分散销售和分销)中创建需要信用检查的销售订单。 定义场景的步骤包括: 确定相关的组件和它们执行的任务。 决定是否应用系统要集成在场景中,或者要连接其他前端。例如,这可以影响到步骤的粒度。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Developm
38、ent for Accessing SAP Components34第一单元:介绍第一单元:介绍 第二课:介绍业务场景第二课:介绍业务场景 说明场景(3)业务步骤 定义场景的步骤包括: 决定信息和过程流。这里必须要: 确定哪些步骤要在系统范围处理,哪些步骤仅在一个组件内处理。 确定哪些数据要与哪些组件进行交换,和谁发起这个交换。 确定各个步骤的处理顺序。 说明属于一个独立事务的步骤(工作逻辑单元或者 LUW)。 例如,开发者必须问自己,是否需要在一个 LUW 中创建客户然后在同一个 LUW 里创建销售订单。 以比本地应用更加精确和全面的方式处理错误。SAP 学习笔记系列学习笔记系列 (by 强
39、晟强晟 )BC417: BAPI Development for Accessing SAP Components35第一单元:介绍第一单元:介绍 第二课:介绍业务场景第二课:介绍业务场景 说明场景(4)业务步骤 必须决定场景的系统耦合是宽一些还是窄一些。应该考虑诸如系统可用性、性能和场景的使用频度等因素。 应该确定必须被定义的所有关键步骤。 还应该考虑场景能够被哪些 R/3 版本支持。 对于每个场景,必须确定一个责任人来确保场景正确和及时。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Componen
40、ts36第一单元:介绍第一单元:介绍 第二课:介绍业务场景第二课:介绍业务场景 说明场景(5)业务对象类型和 BAPI 在场景中的每个组件必须提供服务,以便跨组件步骤可以被执行。必须设计出如何在业务对象类型和它们的 BAPI 之间为服务分发责任。例如,业务对象类型 SalesOrder 的 BAPI CreateFromData 用来根据一个外部应用在 R/3 系统中创建一个销售订单。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components37第一单元:介绍第一单元:介绍 第二课:介绍业务场景
41、第二课:介绍业务场景 说明场景(6)业务对象类型和 BAPI 对于每个组件,必须首先确定需要的业务对象类型。应该考虑下列问题: 在业务对象类型中封装所需功能。这包括把整个系统拆分成独立的职责。这个拆分和功能的封装必须是显式的并且完全区别开。 是否业务对象类型已经存在于这些职责中? 是否设计模式已经存在?找出是否问题已经都被处理?例如,销售订单和采购订单的表头/行项目模式等。 与其他业务对象类型划清指责。 确定在已定义责任上所提供的服务。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components3
42、8第一单元:介绍第一单元:介绍 第二课:介绍业务场景第二课:介绍业务场景 说明场景(7)业务对象类型和 BAPI 对于确定的每个业务对象类型,必须确定分配给它的服务如何用 BAPI 实现。应该考虑下列问题: 每个服务被一个或多个 BAPI(业务对象类型的方法)实现。 BAPI 让一个业务对象类型的功能可以使用。应该能够在单独的或不同的场景中独立的使用它们。为了让 BAPI 在不同场景中使用更方便,BAPI 处理应该能够根据应用不同而各自分配 BAPI 参数和字段。 注意这种类型的场景可以影响 BAPI 的粒度。应用系统的集成方式与不同前端的集成不太一样。对于应用系统集成对于应用系统集成:应用系
43、统集成一般包含程序对程序的通讯、自由的异步耦合、大数据量的交换。这种情况下,业务对象类型和 BAPI 的主要需求是高性能,例如,尽量减少调用次数。结果是由宽泛的 BAPI 来实现粗粒度的应用。例如,程序自动生成销售订单,程序用业务对象类型 SalesOrder 和 BAPI CreateFromData,完整的销售订单在发送系统中创建,然后发送给接收系统。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components39第一单元:介绍第一单元:介绍 第二课:介绍业务场景第二课:介绍业务场景 说明场景
44、(8)业务对象类型和 BAPI 对于确定的每个业务对象类型,必须确定分配给它的服务如何用 BAPI 实现。应该考虑下列问题: 对于各种前端集成对于各种前端集成:各种前端的场景表现为人对机器的通讯、既可以同步也可以异步实现。业务对象类型和 BAPI 必须被构在以确保伸缩性、可配置性和最少的错误情况。结果是应用的较好粒度,以符合 R/3 的会话过程。这个例子可以是在互联网上交互式创建一个客户销售订单,这个销售订单可以用业务对象类型 SalesOrder 的两个方法 CreateFromData 和 AddItem 来创建,这里方法 CreateFromData 只创建订单表头,而方法 AddIte
45、m 添加新的销售订单行。 这个场景必须构造好,以便预先获取所有 BAPI 调用所需的信息。 如果有定制相关的 BAPI,则必须能同时导出定制设置。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components40第一单元:介绍第一单元:介绍 第二课:介绍业务场景第二课:介绍业务场景 定义场景 先决条件 在定义前必须完整描述场景,这个描述要包含实际定义的输入信息。 定义过程 BAPI 的整个开发过程都在模板控制的项目框架中执行,以获得 BAPI 的最大质量、稳定性和可用行。BAPI 资源管理器在一个集
46、成编程环境中提供了创建 BAPI 的所有工具和所需开发对象。 对每个项目,有个项目模板引导一步一步的走过整个开发过程,并提供了所需开发工具和信息的直接浏览选项。在项目管理中,可以保存和删除项目,还可以选择其他用户来编辑其他用户管理的项目。更多访问和使用这个工具的信息在课程工具和命名规则中提供。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components41第一单元:介绍第一单元:介绍 第二课:介绍业务场景第二课:介绍业务场景 回顾场景 在场景被转换和具体定义开始和实现成 BAPI 前,应该回顾这个
47、场景。所有在 BAPI 开发和对质量控制承担责任的人都要参与回顾。 为了让回顾有意义,要回答下列问题: 这个场景是否象计划中一样有意义? 场景描述中所需的全部任务是否都已经完成? 是否所有场景中的 BAPI 都平滑组合? 只有当成功完成回顾之后才可以开始 BAPI 的开发。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components42第一单元:介绍第一单元:介绍 第三课:介绍第三课:介绍 BAPI 事务模型事务模型 本课概览 让每个场景自己的设备分别创建自己的功能,很多程序可能会创建很多相似却又
48、不完全相同的方法来满足需要。如果功能是独立的,或者不需要与整个处理配合,这是没有问题的。然而,如果部分功能会成为过程的一部分,并且功能会以多种方法在很多时候被使用,功能就必须被构造好,在清晰的、一致的和可靠的方法下执行。 事务模型是一个模板,可以用来指导一个事务中的组件如何配合。组件的列表、这些组件的顺序、它们都做什么,这些因素共同决定了业务过程如何执行。BAPI 中的事务模型用来决定如何编写 BAPI。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components43第一单元:介绍第一单元:介绍
49、第三课:介绍第三课:介绍 BAPI 事务模型事务模型 本课目标 描述 BAPI 事务模型 列出事务步骤和它们的时机 业务示例 如果没有完全理解事务模型的事件顺序,应用就可能工作不正确甚至完全不工作。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components44第一单元:介绍第一单元:介绍 第三课:介绍第三课:介绍 BAPI 事务模型事务模型 事务和工作逻辑单元 在用来开发 BAPI 的事务模型上下文中,一个事务表示一个过程步骤或者一个工作逻辑单元(LUW)。一个 R/3 LUW 是包含在一个更新
50、数据库事务内的所有步骤。 ACID 的原则应用于事务模型,意味着事务是: 原子的:当一个事务被调用,数据库操作或者完全执行或者完全不执行。所有相关数据或者全部在数据库中更改或者完全不变。 一致的:如果事务被多次调用,每个调用都有相同的结果。导入的数据都不会间接影响结果。 独立的:在两个事务间不能有功能性依赖,一个事务绝对不能影响其他事务。 持久的:修改不能被反转,事务不能被取消。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components45第一单元:介绍第一单元:介绍 第三课:介绍第三课:介绍
51、BAPI 事务模型事务模型 特性(1)面向事务 BAPI 必须被实现才是事务性的,换句话说,它尊许 ACID 原则。BAPI 事务模型也必须允许用户把多个 BAPI 合并到一个 LUW 中。这样,BAPI 事务模型就意味着各个独立的 BAPI 都是事务性的,并且多个 BAPI 合并到一个 LUW 中是也要遵循 ACID 原则。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components46第一单元:介绍第一单元:介绍 第三课:介绍第三课:介绍 BAPI 事务模型事务模型 特性(2)客户端的事务控制
52、 BAPI 的事务模型必须给用户提供显式的事务控制。这样,如果多个 BAPI 被一起调用,调用者可以决定何时执行 COMMIT WORK(或者 ROLLBACK WORK)。这意味着 BAPI 本身(一般)不能执行 COMMIT WORK 命令。 下列限制应用于多个 BAPI 合并到一个 LUW 的情况: 如果一个实例被写 BAPI 创建、修改或删除,则读 BAPI 只能访问 COMMIT WORK 发生前最近的数据。 不允许在一个 LUW 对相同实例执行两次写访问。例如,不能在一个 LUW 中先创建然后在修改对象。 但可以在一个 LUW 中创建相同对象类型的多个实例。SAP 学习笔记系列学习
53、笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components47第一单元:介绍第一单元:介绍 第三课:介绍第三课:介绍 BAPI 事务模型事务模型 特性(3)通过服务 BAPI 的事务处理 职务在使用了 COMMIT WORK 命令或者 ROLLBACK WORK 命令之后完成。BAPI 事务必须在调用了 BAPI BapiService.TransactionCommit() 或者 BapiService.TransactionRollback() 之后结束。 注意:事务控制 BAPI BapiService.Tran
54、sactionCommit 和 BapiService.TransactionRollback 只在 4.5 版后可用,在 4.0 版,使用 BAPI_TRANSACTION_COMMIT 和 BAPI_TRANSACTION_ROLLBACK.这个函数模块的结果同样是调用 BAPI。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components48第一单元:介绍第一单元:介绍 第三课:介绍第三课:介绍 BAPI 事务模型事务模型 特性(4)更新任务的使用 修改数据库的操作必须通过更新过程来执行,否
55、则,就可能在 RFC 调用中发生未检查或者不希望的数据库提交。另外,对 BAPI 的调用绝对不能触发独立于 BAPI 之外的更多 LUW。因此,BAPI 中不能包含下列命令: CALL TRANSACTION SUBMIT REPORT SUBMIT REPORT AND RETURN 注意,如果 BAPI 执行了 COMMIT WORK 命令,就必须在 BAPI 文档中说明。SAP 提供的 BAPI 也在 SAP 网上说明,参见 Notes 131838(4.5 版以前)。SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Acces
56、sing SAP Components49第一单元:介绍第一单元:介绍 第三课:介绍第三课:介绍 BAPI 事务模型事务模型 不带提交的 BAPI 事务模型(1) 下面的例子演示了外部系统调用 BAPI 修改 R/3 系统的数据,说明了这种事务模型是如何影响 BAPI 开发的。例如,这可以是一个用 Visual Basic 实现的事务,而只有 R/3 系统的数据被修改了。 在外部系统登录在 R/3 系统的整个过程中,RFC 连接保持活跃,以避免重复的连接和断开连接。当 RFC 连接建立以后,从本质上说 RFC 调用并不会比在 R/3 系统中直接调用函数模块占用更多的 CPU 时间。SAP 学习
57、笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components50第一单元:介绍第一单元:介绍 第三课:介绍第三课:介绍 BAPI 事务模型事务模型 不带提交的 BAPI 事务模型(2) 程序的处理流程包括下列步骤: 登录 (源代码) 调用 BAPI (源代码) 调用 BAPI (源代码) 调用 BAPI BapiService.TransactionCommit() (源代码) 调用 BAPI 登出SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for A
58、ccessing SAP Components51第一单元:介绍第一单元:介绍 第三课:介绍第三课:介绍 BAPI 事务模型事务模型 不带提交的 BAPI 事务模型(3) 上图描绘了前页的调用过程。Visual BasicR/3 (ABAP)登录BAPI调用BAPI调用调用 BAPIBapiService.TransactionCommit()工作逻辑单元提交工作登出时间RFC 会话SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components52第一单元:介绍第一单元:介绍 第三课:介绍第三课:介
59、绍 BAPI 事务模型事务模型 带提交的 BAPI 事务模型(旧)(1) 在以前的事务模型中还有一种每个事务调用 BAPI 的方法,这时 BAPI 只能同步调用。一个 BAPI 调用本质上是潜在的允许 RFC 的函数模块的调用。这个程序的过程流包括下列步骤。 登录 (源代码) 调用 BAPI 读取和/或修改数据 (源代码) 调用 BAPI 读取和/或修改数据 (源代码) 登出SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components53第一单元:介绍第一单元:介绍 第三课:介绍第三课:介绍 BA
60、PI 事务模型事务模型 带提交的 BAPI 事务模型(旧)(2) 上图描绘了前页的调用过程,该过程仅在 R/3 3.1 版实现,现在已经不需要掌握了。Visual BasicR/3 (ABAP)登录BAPI 调用(函数模块的 RFC 调用)工作逻辑单元提交工作登出时间RFC 会话工作逻辑单元工作逻辑单元提交工作提交工作SAP 学习笔记系列学习笔记系列 (by 强晟强晟 )BC417: BAPI Development for Accessing SAP Components54第一单元:介绍第一单元:介绍 第四课:介绍工具和命名规则第四课:介绍工具和命名规则 本课概览 一旦完成了 BAPI 的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防火安全疏散知识培训课件
- 运动场上安全教育
- (新教材)2026年西南大版三年级上册数学 练习十八 课件
- (新教材)2026年冀教版一年级上册数学 第四单元 20以内的加法 4.6 整 理与复习 课件
- 全科医学科高血脂症综合管理流程
- 育儿教育方法
- 麻醉科麻醉后恢复护理指南
- 慢性心力衰竭临床诊疗与管理课件
- 教育机构活动策划与执行方案
- 【物理】2025-2026学年人教版物理九年级全一册默写专项训练课件
- 2026年辽宁金融职业学院单招职业技能测试题库附答案解析
- 2026北京海淀初三上学期期末语文试卷和答案
- 2024-2025学年北京市东城区五年级(上)期末语文试题(含答案)
- 人工智能在医疗领域的应用
- 2026年宁夏贺兰工业园区管委会工作人员社会化公开招聘备考题库带答案详解
- NB-T32036-2017光伏发电工程达标投产验收规程
- JSA临时用电作业安全分析表
- 2015-2022年北京卫生职业学院高职单招语文/数学/英语笔试参考题库含答案解析
- 赛肤润常见临床应用2010年
- 提高铝模板施工质量合格率
- 传感器与检测技术习题集
评论
0/150
提交评论