




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SAPBC417课程
中文自学笔记 强晟 2007年12月6日v1.0 E-mail: Blog:1前言随着SAP的开展和软件开发技术的开展,ABAP开始引进面向对象的概念,BAPI那么是在这个转换过程中融合了面向过程和面向对象两种开发方式的产物。为了兼容过去的开发方式,SAP把BAPI的方法调用组织在函数组和函数模块中,使用传统的面向过程的ABAP可以调用这些函数模块来完成BAPI的功能。同时,BAPI以业务对象的面目出现,将逐渐转变成可以被面向对象的ABAP或者Java调用的对象。同时,它还具有远程函数调用的能力,可以被其他的软件开发语言在其他平台上调用。它已经逐渐成为SAP开发的主流技术。 强晟 2007年11月9日2目录第一单元:介绍第二单元:BAPI根底第三单元:创立一个RFC函数模块第四单元:业务对象第五单元:数据库更新第六单元:BAPI调用第七单元:增强和修正第八单元:使用ALE和IDOC的BAPI第九单元:集中数据传输附录:新的BAPI工程实施3课程说明课程目标创立、维护和使用BAPI学习本课程后应该可以说明BAPI开发的四个阶段:分析、设计、测试和实现设计和维护BAPI查找或创立业务对象增强SAP提供的BAPI执行对BAPI的外部调用4第一单元:介绍
学习本单元后应该可以说明SAP业务框架定义业务对象和列出它们的组件说明BAPI的意图和根本功能说明业务场景列出场景的阶段和它们的意图说明BAPI的事务模型列出事务步骤和它们的时间点找出和访问BAPI开发中用到的工具使用可用工具来找出现存BAPI列出与BAPI及其组件相关的命名标准5第一单元:介绍
单元内容介绍BAPI的概念和使用介绍业务场景介绍BAPI事务模型介绍工具和命名标准练习:查找和测试一个现有BAPI6第一单元:介绍
第一课:介绍BAPI的概念和使用本课概览SAP创立了业务框架,让SAP组件之间以及SAP和非SAP组件之间能够实现技术集成和交换业务数据。业务框架的一个主要组件就是业务应用程序接口〔BAPI〕,它能够表示出组件边界的可视化接口,而属性那么把组件集成在一起。这种集成可以包含本地网络内的组件或者通过互联网相互连接的组件。BAPI允许在业务层的集成,而不是技术层。这为连接提供了非常好的可伸缩性和对于未知通讯技术的独立性。7第一单元:介绍
第一课:介绍BAPI的概念和使用本课目标说明SAP业务框架定义业务对象并列举它们的组件说明某个BAPI的意图和根本功能业务例如在今天的业务环境中,对业务信息的即时性和精确性要求比以往更加紧迫。仅仅知道信息存在在组织内部某地已经不够了——它必须是简明的、精确的,并且以便于使用的形式快速获取。此外,这个信息资源的用户可能会分散在世界各地,并且操作着与保存数据系统不同的其他系统。可访问性就成为一个主要的业务课题。8第一单元:介绍
第一课:介绍BAPI的概念和使用业务框架SAPR/3业务框架提供了一个基于R/3中功能性应用组件〔业务组件〕和对象模型的结构。业务框架允许客户和合作伙伴把他们自己的组件连接到R/3系统。面向对象技术和对象模型的使用降低了整个系统的复杂性。业务框架架构提供了开发SAP业务组件的根底。集成和通讯架构可以表示如下:SAPR/3ApplicationLinkEnabling(ALE)应用组件业务对象BAPIBAPIBAPI分布的业务处理业务处理的集成效劳和业务对象的分布RemoteFunctionCall(RFC)(D)COMCORBA通讯服务9第一单元:介绍
第一课:介绍BAPI的概念和使用业务框架的组成SAP业务框架的根本组件如下:业务组件
SAP业务组件提供了自主的业务功能和一致的业务对象。例如,业务对象Employee和Applicant被分配给业务组件HumanResource。业务处理或者在业务组件内部实现,或者跨多个组件实现〔分布式业务处理〕。业务对象
R/3系统面向对象的结构基于业务对象。他们封装了业务数据和功能,并且定义了业务组件的功能范围和边界。10第一单元:介绍
第一课:介绍BAPI的概念和使用业务框架的组成〔续〕业务应用开发接口〔BAPI〕
BAPI是业务对象的接口,BAPI跟业务对象一起从业务层定义和说明了接口标准。集成效劳,应用连接使能〔ALE〕
ALE集成效劳允许业务处理在不同R/3系统或非R/3系统上执行的集成。这个使用了ALE分布式模型的效劳基于业务对象在系统范围上的分布。通讯效劳
这些都是通讯技术,例如,分布式组件对象模型〔DCOM〕和远程函数调用〔RFC〕,它们使用业务框架来访问BAPI。11第一单元:介绍
第一课:介绍BAPI的概念和使用SAP业务对象〔1〕业务对象技术和业务对象编程都基于业务对象的概念。例如,真实世界的对象,一个员工或者一份销售订单,在业务应用系统〔如R/3系统〕中都被模型化为业务对象。这个建模过程从定义业务对象类型开始。业务对象类型,在SAPR/3系统表示一个业务实体,包含了这个实体的功能〔以方法的形式出现〕和数据〔以属性的形式出现〕。业务对象类型的实现细节那么对用户隐藏了。业务对象类型通过已经定义好的功能〔方法〕来访问。这就被称为封装。12第一单元:介绍
第一课:介绍BAPI的概念和使用SAP业务对象〔2〕业务对象类型用来把SAPR/3系统拆分成小的特定单元。由于降低了复杂性,系统的结构也因而改善了。业务对象类型构成了SAPR/3系统的数据和功能的入口点。在业务对象类型层,非SAP系统和各种SAP业务组件都可以互相通讯。业务对象类型SalesOrder表现为某个客户对公司的请求,具体包括在某个特定时间点提供一定数量的物料或者在某个时间点履行效劳。一个特定的销售订单由它的销售凭证号来标识。该业务对象类型包含了一个销售订单的所有必要信息:售达方、销售组织、凭证日期、净重、销售金额和分发凭证。13第一单元:介绍
第一课:介绍BAPI的概念和使用SAP业务对象〔3〕一个业务对象类型应该可以理解为一个业务概念和它在SAPR/3系统中的实现概念。业务对象类型这个术语对应于面向对象编程语言中的术语——类。业务对象类型的某个特定的发生,例如实际存储在系统中的一个销售订单,必须要跟业务对象类型本身区分开来。这个特定发生被称作一个实例〔面向对象编程语言中的常规术语〕或者一个业务对象。编号为102的销售订单是业务对象类型SalesOrder的一个实例。这个销售订单由它的销售和分发文档号102来标识。这个对象通过它的属性来描述,包括售达方、销售组织、凭证日期等等。14第一单元:介绍
第一课:介绍BAPI的概念和使用SAP业务对象〔4〕业务对象类型的结构
以下图描绘了业务对象类型的概念:业务对象核心完整性接口访问通过:内部结构特殊化一致性条件〔对象特性〕业务规那么〔环境特性〕属性BAPI,方法时间Internet
〔HTTP〕COM/DCOMCORBAABAP
〔RFC〕15第一单元:介绍
第一课:介绍BAPI的概念和使用SAP业务对象〔5〕上图中包含一些重要的事项:业务对象类型的核心描述了内部对象结构,换句话说就是它的数据和这些数据的结构。约束是确保一个对象一致性的规那么〔例如,对于不同的最低销售数量可以分配不同的价格条件〕。业务规那么要求一个对象必须遵守根本规那么,确保对象在它的环境中保持内在的一致性〔例如,一个销售组织只能销售给存在这业务关系信息的客户〕。接口提供了访问业务对象类型的预定义的方法,它们可以是公共属性,方法/BAPI和事件。对象可以通过COM/DCOM或者CORBA〔通用对象请求代理架构〕来访问。在ABAP应用中,业务对象可以被远程函数调用〔RFC〕访问。16第一单元:介绍
第一课:介绍BAPI的概念和使用SAP业务对象〔6〕定义和实现一个对象类型
业务对象类型在业务对象知识库〔BOR〕中描述,具有以下特性:对象类型根本数据接口键字段属性方法事件程序字段引用虚拟属性对象引用同步异步事务码函数模块报表ABAP代码API方法关系属性17第一单元:介绍
第一课:介绍BAPI的概念和使用SAP业务对象〔7〕对业务对象特性的说明根本数据
包含有助记忆的对象名字,对象类型的技术名称,它的名称〔有意义的说明〕,它的短描述,发布状态,缺省方法,缺省属性,以及包含了它的实现的程序名。接口
提供了一个对象预定义的接口〔属性、方法、事件〕。接口类型通常不包含实现。键字段
唯一标识一个对象。属性
表现对象的性质和特征。方法
封装了R/3的功能,可以是同步或异步方法。18第一单元:介绍
第一课:介绍BAPI的概念和使用SAP业务对象〔8〕对业务对象特性的说明〔续〕事件
预示业务对象状态改变的事件。业务对象键字段
每个业务对象类型都有一个或多个键字段。每个实例有一个唯一的键字段的值组合,由键字段中的特定值来标识。这种唯一的值组合机制就能让通过键字段中的值访问一个特定的业务对象类型的实例成为可能。键字段在业务对象设计时是需要重点考虑的。
大多数情况下,对象类型的键字段也是包含了业务对象类型的表头数据表的键字段。因为BOR运行时对象是客户端相关的,所以客户端可以不作为一个键字段。19第一单元:介绍
第一课:介绍BAPI的概念和使用业务应用程序接口〔1〕业务应用编程接口〔BAPI〕允许通过形式化、稳定并且无需交互的接口来访问SAP的函数。这些接口可以被由客户和其他软件合作伙伴开发的外部应用所使用,也可以被其他SAP应用使用。ABPI是为业务应用系统精确定义的处理和数据的接口,它做为业务对象知识库〔BOR〕中的对象的接口来实现。BAPI定义成SAP业务对象类型的API方法。这些对象类型在业务框架中使用,允许组件之间基于对象的通讯。业务对象和它们的BAPI让面向对象可以在公司的中心信息处理中被使用。例如,现存的函数和数据都能被重用,可以到达无障碍的技术协同工作能力,并且可以实现非SAP组件。20第一单元:介绍
第一课:介绍BAPI的概念和使用业务应用程序接口〔2〕-根本特征由于BAPI做为R/3系统的标准接口,它们需要特定的标准、认同和可依赖的特征。在任何开发BAPI的时候都必须考虑这些特征。这些特征包括:面向对象:BAPI做为在业务对象知识库中定义的业务对象的对象方法来实现。稳定的接口:BAPI的接口是固定的。内部和外部使用:BAPI可以从R/3内部使用也可以从外部系统调用。无表示层:BAPI不提供用户接口功能。显示请求的结果是调用者的指责。为消息使用参数:成功和错误消息在RETURN参数中处理。这可以是个结构或是个表,由BAPI来决定。21第一单元:介绍
第一课:介绍BAPI的概念和使用业务应用程序接口〔3〕-集成BAPI可以用于以下的集成类型:使用SAP业务连接器或者互联网应用组件〔IAC〕把R/3连接到互联网上。BAPI还允许创立真实组件软件,只要它们允许SAP组件间的标准通讯。最终目标是把SAP系统的功能封装到通过通用接口〔BAPI〕集成的独立业务组件中。新的SAP组件、非SAP软件和遗留系统的集成。实现使用应用连接使能〔ALE〕异步连接的分布式R/3场景。使用PC程序做为R/3系统的前台,这可以用VisualBaisc〔Microsoft〕或者VisualAgeforJava〔IBM〕来开发。扩展超越系统边界的工作流应用。客户和合作伙伴的自主开发。22第一单元:介绍
第一课:介绍BAPI的概念和使用业务应用程序接口〔4〕-集成和可用性目标当实现BAPI时,应该尽量防止以往接口的明信片效应的缺点:不区分内容和传输。在明信片中,文本写在卡片上,而卡片还充当了信息媒介。如果信息媒介改变了,接收者就会以不同的方式读到文本。这样的结果是,对接口的更改会影响对类型的访问。在BAPI里,清晰的把业务内容与潜在的通讯技术区分开来。这个过程可以跟一封在信封中的信来比较:把一封信放到一个新信封里非常容易,同样的,使用一个新的和〔或〕不同的通讯技术如COM/DCOM、CORBA标准或新的互联网标准时也同样容易。信封本身与理解新的内容并不相关。在这个例子中,BAPI相当于信,也就是说它们与程序语言和通讯机制都完全无关。23第一单元:介绍
第一课:介绍BAPI的概念和使用业务应用程序接口〔5〕-通讯为了允许它们在任何情形下都能使用,BAPI必须支持所有通讯形式并能被所有类型的参与者使用。支持同步和异步通讯BAPI可以对SAP组件进行同步或异步调用。如果调用是同步的,BAPI就被做为远程函数调用〔RFC〕来调用。当BAPI在发送者系统被调用,就生成一个IDoc并分配给接收者系统。当IDoc到达接收者,相应BAPI的参数就会用IDoc数据自动填充,BAPI再同步调用。支持机器到机器和人到机器的通讯24第一单元:介绍
第一课:介绍BAPI的概念和使用业务应用程序接口〔6〕-通讯BAPI可以用在应用系统集成和连接到各种前端上。应用系统的集成可以称为机器到机器的通讯。它在交换大量数据和需要很高系统性能时使用。这种情况下的BAPI应用将提供很少的细节信息。各种前端的集成是人到机器的通讯。这时的BAPI使用有很多的细节,它们必须设计为允许更灵活的通讯以减少错误。对组件的通讯支持被精确连接并通过互联网连接除了在CORBA和COM/DCOM这样的通讯技术下使用BAPI外,它还可以通过SAP业务连接器在互联网上被访问。业务连接器从BAPI调用生成XML,或者传递一个内含的XML文档到BAPI调用中。这可以把BAPI调用分配成为XML文档,允许通过互联网连接的组件之间的通讯。25第一单元:介绍
第一课:介绍BAPI的概念和使用业务应用程序接口〔7〕-优点使用BAPI具有如下优点:BAPI表现为良好定义、内部一致的单元,总是表示业务事实,并且隐藏的数据库状态的一致性。业务内容可以被标准化,因为BAPI不仅在技术层面上允许SAP系统和其他软件的集成,也在业务层面实现了集成。BAPI已经成为业务系统间的通讯标准,通过面向对象接口技术〔例如COM/DCOM〕的访问已经成为可能。SAP万对象遵守OAG〔ObjectApplicationGroup〕的方针,并且适合于OMG〔ObjectManagementGroup〕的CORBA标准。26第一单元:介绍
第一课:介绍BAPI的概念和使用业务应用程序接口〔8〕-优点使用BAPI具有如下优点:当SAP发布BAPI时能够保证其稳定性和兼容性。它的接口定义和参数将长期保持不变,这意味着应用程序即使在SAP软件或数据发生更改时也不受影响。如果给BAPI添加了向上兼容的增强,现存应用的稳定性也不受影响。BAPI可以支持开放系统,能被任何的开发平台访问。27第一单元:介绍
第一课:介绍BAPI的概念和使用业务对象知识库〔1〕定义
业务对象知识库〔BOR〕是SAP业务对象类型和它们的BAPI的中心访问点。BOR最初为SAP业务工作流开发。今天,除了存储SAP业务对象类型和它们的BAPI外,BOR还用于ArchiveLink、输出控制以及它们的一般对象效劳。28第一单元:介绍
第一课:介绍BAPI的概念和使用业务对象知识库〔2〕-效劳BOR在BAPI上下文提供了以下效劳:允许在SAP系统中所有数据和处理都以面向对象的角度来观察。把各种业务对象类型根据组件层级来组织,让函数能被迅速简单的查询和取得。存储所有相关信息。BOR包含了SAP业务对象类型的所有相关信息,它们的键字段、andtheirBAPImethodsthatareneededtointegratethecorrectobjecttypedefinitionsandBAPIcallsinanapplicationprogram〔惭愧,这句硬是读不通〕。这使中间件集成〔例如DCOM连接器、ActiveX控件、CORBA网关等等〕成为可能。29第一单元:介绍
第一课:介绍BAPI的概念和使用业务对象知识库〔3〕-效劳BOR在BAPI上下文提供了以下效劳:确保接口稳定。任何接口变更都在BOR中进行,会执行语法兼容性的自动检查,防止与ABAP字典中相关开发对象发生不一致。以发行升级方式管理BAPI。添加参数类的BAPI接口增强记录在BOR中。以前的接口版本可以在任何时候重建。当BAPI创立时,新BAPI的发行版本也记录在BOR中。同样,接口参数创立时也一样。创立SAP业务对象的实例。BOR的运行时环境从客户端应用接收创立运行时对象的请求并且创立相应的对象实例。30第一单元:介绍
第二课:介绍业务场景本课概览在编写BAPI之前,应该清楚的定义这个BAPI将会使用到的过程和状态。BAPI应该只在有意义的业务场景环境中实现。本课目标说明业务场景列出场景的步骤及其意图业务例如如果你已经参与过某个公司的新业务应用的内部开发,就应该知道分析现有系统的重要性。目标是增加当前没有的新功能或者纠正和完善功能。只有在方案好新功能并且知道它如何被使用后才可以恰当的完成。31第一单元:介绍
第二课:介绍业务场景说明场景〔1〕-场景业务步骤包含一系列独立的业务功能。业务步骤的内容应该完全与技术细节分开描述。在一个分支机构中创立一个销售订单会需要在公司总部执行一系列信用检查。要定义业务步骤,必须:定义这个业务步骤的意图和范围。在业务步骤中区分独立的步骤。为此,可以使用一个过程模型或者用例工具。32第一单元:介绍
第二课:介绍业务场景说明场景〔2〕-业务步骤一个场景,是一个业务过程计算机化的执行,描述了在参与组件之间的任务分布和交互。实现相同业务过程可以有几个场景。必须在不同R/3系统〔中央财务、分散销售和分销〕中创立需要信用检查的销售订单。定义场景的步骤包括:确定相关的组件和它们执行的任务。决定是否应用系统要集成在场景中,或者要连接其他前端。例如,这可以影响到步骤的粒度。33第一单元:介绍
第二课:介绍业务场景说明场景〔3〕-业务步骤定义场景的步骤包括:决定信息和过程流。这里必须要:确定哪些步骤要在系统范围处理,哪些步骤仅在一个组件内处理。确定哪些数据要与哪些组件进行交换,和谁发起这个交换。确定各个步骤的处理顺序。说明属于一个独立事务的步骤〔工作逻辑单元或者LUW〕。例如,开发者必须问自己,是否需要在一个LUW中创立客户然后在同一个LUW里创立销售订单。以比本地应用更加精确和全面的方式处理错误。34第一单元:介绍
第二课:介绍业务场景说明场景〔4〕-业务步骤必须决定场景的系统耦合是宽一些还是窄一些。应该考虑诸如系统可用性、性能和场景的使用频度等因素。应该确定必须被定义的所有关键步骤。还应该考虑场景能够被哪些R/3版本支持。对于每个场景,必须确定一个责任人来确保场景正确和及时。35第一单元:介绍
第二课:介绍业务场景说明场景〔5〕-业务对象类型和BAPI在场景中的每个组件必须提供效劳,以便跨组件步骤可以被执行。必须设计出如何在业务对象类型和它们的BAPI之间为效劳分发责任。例如,业务对象类型SalesOrder的BAPICreateFromData用来根据一个外部应用在R/3系统中创立一个销售订单。36第一单元:介绍
第二课:介绍业务场景说明场景〔6〕-业务对象类型和BAPI对于每个组件,必须首先确定需要的业务对象类型。应该考虑以下问题:在业务对象类型中封装所需功能。这包括把整个系统拆分成独立的职责。这个拆分和功能的封装必须是显式的并且完全区别开。是否业务对象类型已经存在于这些职责中?是否设计模式已经存在?找出是否问题已经都被处理?例如,销售订单和采购订单的表头/行工程模式等。与其他业务对象类型划清指责。确定在已定义责任上所提供的效劳。37第一单元:介绍
第二课:介绍业务场景说明场景〔7〕-业务对象类型和BAPI对于确定的每个业务对象类型,必须确定分配给它的效劳如何用BAPI实现。应该考虑以下问题:每个效劳被一个或多个BAPI〔业务对象类型的方法〕实现。BAPI让一个业务对象类型的功能可以使用。应该能够在单独的或不同的场景中独立的使用它们。为了让BAPI在不同场景中使用更方便,BAPI处理应该能够根据应用不同而各自分配BAPI参数和字段。注意这种类型的场景可以影响BAPI的粒度。
应用系统的集成方式与不同前端的集成不太一样。
对于应用系统集成:应用系统集成一般包含程序对程序的通讯、自由的异步耦合、大数据量的交换。这种情况下,业务对象类型和BAPI的主要需求是高性能,例如,尽量减少调用次数。结果是由宽泛的BAPI来实现粗粒度的应用。例如,程序自动生成销售订单,程序用业务对象类型SalesOrder和BAPICreateFromData,完整的销售订单在发送系统中创立,然后发送给接收系统。38第一单元:介绍
第二课:介绍业务场景说明场景〔8〕-业务对象类型和BAPI对于确定的每个业务对象类型,必须确定分配给它的效劳如何用BAPI实现。应该考虑以下问题:对于各种前端集成:各种前端的场景表现为人对机器的通讯、既可以同步也可以异步实现。业务对象类型和BAPI必须被构在以确保伸缩性、可配置性和最少的错误情况。结果是应用的较好粒度,以符合R/3的会话过程。这个例子可以是在互联网上交互式创立一个客户销售订单,这个销售订单可以用业务对象类型SalesOrder的两个方法CreateFromData和AddItem来创立,这里方法CreateFromData只创立订单表头,而方法AddItem添加新的销售订单行。这个场景必须构造好,以便预先获取所有BAPI调用所需的信息。如果有定制相关的BAPI,那么必须能同时导出定制设置。39第一单元:介绍
第二课:介绍业务场景定义场景先决条件在定义前必须完整描述场景,这个描述要包含实际定义的输入信息。定义过程BAPI的整个开发过程都在模板控制的工程框架中执行,以获得BAPI的最大质量、稳定性和可用行。BAPI资源管理器在一个集成编程环境中提供了创立BAPI的所有工具和所需开发对象。对每个工程,有个工程模板引导一步一步的走过整个开发过程,并提供了所需开发工具和信息的直接浏览选项。在工程管理中,可以保存和删除工程,还可以选择其他用户来编辑其他用户管理的工程。更多访问和使用这个工具的信息在课程《工具和命名规那么》中提供。40第一单元:介绍
第二课:介绍业务场景回忆场景在场景被转换和具体定义开始和实现成BAPI前,应该回忆这个场景。所有在BAPI开发和对质量控制承担责任的人都要参与回忆。为了让回忆有意义,要答复以下问题:这个场景是否象方案中一样有意义?场景描述中所需的全部任务是否都已经完成?是否所有场景中的BAPI都平滑组合?只有当成功完成回忆之后才可以开始BAPI的开发。41第一单元:介绍
第三课:介绍BAPI事务模型本课概览让每个场景自己的设备分别创立自己的功能,很多程序可能会创立很多相似却又不完全相同的方法来满足需要。如果功能是独立的,或者不需要与整个处理配合,这是没有问题的。然而,如果局部功能会成为过程的一局部,并且功能会以多种方法在很多时候被使用,功能就必须被构造好,在清晰的、一致的和可靠的方法下执行。事务模型是一个模板,可以用来指导一个事务中的组件如何配合。组件的列表、这些组件的顺序、它们都做什么,这些因素共同决定了业务过程如何执行。BAPI中的事务模型用来决定如何编写BAPI。42第一单元:介绍
第三课:介绍BAPI事务模型本课目标描述BAPI事务模型列出事务步骤和它们的时机业务例如如果没有完全理解事务模型的事件顺序,应用就可能工作不正确甚至完全不工作。43第一单元:介绍
第三课:介绍BAPI事务模型事务和工作逻辑单元在用来开发BAPI的事务模型上下文中,一个事务表示一个过程步骤或者一个工作逻辑单元〔LUW〕。一个R/3LUW是包含在一个更新数据库事务内的所有步骤。ACID的原那么应用于事务模型,意味着事务是:原子的:当一个事务被调用,数据库操作或者完全执行或者完全不执行。所有相关数据或者全部在数据库中更改或者完全不变。一致的:如果事务被屡次调用,每个调用都有相同的结果。导入的数据都不会间接影响结果。独立的:在两个事务间不能有功能性依赖,一个事务绝对不能影响其他事务。持久的:修改不能被反转,事务不能被取消。44第一单元:介绍
第三课:介绍BAPI事务模型特性〔1〕-面向事务BAPI必须被实现才是事务性的,换句话说,它尊许ACID原那么。BAPI事务模型也必须允许用户把多个BAPI合并到一个LUW中。这样,BAPI事务模型就意味着各个独立的BAPI都是事务性的,并且多个BAPI合并到一个LUW中是也要遵循ACID原那么。45第一单元:介绍
第三课:介绍BAPI事务模型特性〔2〕-客户端的事务控制BAPI的事务模型必须给用户提供显式的事务控制。这样,如果多个BAPI被一起调用,调用者可以决定何时执行COMMITWORK〔或者ROLLBACKWORK〕。这意味着BAPI本身〔一般〕不能执行COMMITWORK命令。以下限制应用于多个BAPI合并到一个LUW的情况:如果一个实例被写BAPI创立、修改或删除,那么读BAPI只能访问COMMITWORK发生前最近的数据。不允许在一个LUW对相同实例执行两次写访问。例如,不能在一个LUW中先创立然后在修改对象。但可以在一个LUW中创立相同对象类型的多个实例。46第一单元:介绍
第三课:介绍BAPI事务模型特性〔3〕-通过效劳BAPI的事务处理职务在使用了COMMITWORK命令或者ROLLBACKWORK命令之后完成。BAPI事务必须在调用了BAPIBapiService.TransactionCommit()或者BapiService.TransactionRollback()之后结束。注意:事务控制BAPIBapiService.TransactionCommit和BapiService.TransactionRollback只在4.5版后可用,在4.0版,使用BAPI_TRANSACTION_COMMIT和BAPI_TRANSACTION_ROLLBACK.这个函数模块的结果同样是调用BAPI。47第一单元:介绍
第三课:介绍BAPI事务模型特性〔4〕-更新任务的使用修改数据库的操作必须通过更新过程来执行,否那么,就可能在RFC调用中发生未检查或者不希望的数据库提交。另外,对BAPI的调用绝对不能触发独立于BAPI之外的更多LUW。因此,BAPI中不能包含以下命令:CALLTRANSACTIONSUBMITREPORTSUBMITREPORTANDRETURN注意,如果BAPI执行了COMMITWORK命令,就必须在BAPI文档中说明。SAP提供的BAPI也在SAP网上说明,参见Notes131838〔4.5版以前〕。48第一单元:介绍
第三课:介绍BAPI事务模型不带提交的BAPI事务模型〔1〕下面的例子演示了外部系统调用BAPI修改R/3系统的数据,说明了这种事务模型是如何影响BAPI开发的。例如,这可以是一个用VisualBasic实现的事务,而只有R/3系统的数据被修改了。在外部系统登录在R/3系统的整个过程中,RFC连接保持活泼,以防止重复的连接和断开连接。当RFC连接建立以后,从本质上说RFC调用并不会比在R/3系统中直接调用函数模块占用更多的CPU时间。49第一单元:介绍
第三课:介绍BAPI事务模型不带提交的BAPI事务模型〔2〕程序的处理流程包括以下步骤:登录〔源代码〕调用BAPI〔源代码〕调用BAPI〔源代码〕调用BAPIBapiService.TransactionCommit()〔源代码〕调用BAPI登出50第一单元:介绍
第三课:介绍BAPI事务模型不带提交的BAPI事务模型〔3〕上图描绘了前页的调用过程。VisualBasicR/3(ABAP)登录BAPI调用BAPI调用调用BAPIBapiService.TransactionCommit()工作逻辑单元提交工作登出时间RFC会话51第一单元:介绍
第三课:介绍BAPI事务模型带提交的BAPI事务模型〔旧〕〔1〕在以前的事务模型中还有一种每个事务调用BAPI的方法,这时BAPI只能同步调用。一个BAPI调用本质上是潜在的允许RFC的函数模块的调用。这个程序的过程流包括以下步骤。登录〔源代码〕调用BAPI读取和/或修改数据〔源代码〕调用BAPI读取和/或修改数据〔源代码〕登出52第一单元:介绍
第三课:介绍BAPI事务模型带提交的BAPI事务模型〔旧〕〔2〕上图描绘了前页的调用过程,该过程仅在R/33.1版实现,现在已经不需要掌握了。VisualBasicR/3(ABAP)登录BAPI调用〔函数模块的RFC调用〕工作逻辑单元提交工作登出时间RFC会话工作逻辑单元工作逻辑单元提交工作提交工作53第一单元:介绍
第四课:介绍工具和命名规那么本课概览一旦完成了BAPI的概念设计,关于SAP的信息现在就进入到实现阶段。例如,要决定SAP的数据结构和为BAPI参数实现程序逻辑。本课就提供相关组件和工具的概览。本课目标找到和访问开发BAPI所需的工具使用现有工具定位现存的BAPI说出与BAPI及相关组件有关的命名规那么54第一单元:介绍
第四课:介绍工具和命名规那么业务例如现在就要用BAPI开发一个业务场景了。在开始以前,需要使用一些有用的工具来找到现存的BAPI以减少开发时间。实现过程
BAPI在业务对象知识库〔BOR〕中做为SAP业务对象类型的API方法被定义。业务对象类型和它们的BAPI在BOR中描述和创立。BAPI通常被实现为允许RFC的函数模块,这些函数模块在函数制作器中创立和描述。BAPI所使用的数据结构的定义和描述在ABAP字典中定义。55第一单元:介绍
第四课:介绍工具和命名规那么业务例如〔续〕过程流
ABAP工作台中工具的结构决定了BAPI如何实现。所有三个步骤在相应工具中创立时都会伴随有文档。所有必须的工作步骤都可以从BAPI资源管理器开始。
用来开发BAPI最重要的工具是BAPI资源管理器、ABAP字典、函数制作器和业务对象知识库。ABAP工作台业务对象知识库函数制作器ABAP字典数据结构的定义和描述函数模块1函数模块2业务对象类型方法1方法256第一单元:介绍
第四课:介绍工具和命名规那么BAPI资源管理器〔1〕BAPI资源管理器是R/3系统为开发BAPI和用这些BAPI进行开发的工作环境。使用BAPI资源管理器从4.6A版开始出现,增强或替换了以前版本中的BAPI浏览器。BAPI资源管理器使用了最新的HTML控件技术。为了使用BAPI资源管理器,必须使用4.6A以后版本的SAPgui,如果是用以前的版本,那么自动调用BAPI浏览器。57第一单元:介绍
第四课:介绍工具和命名规那么BAPI资源管理器〔2〕使用〔续〕从BAPI资源管理器中,应用开发这可以在BOR中获得BAPI状态的概览。既可以在BOR中的组件层级结构中相关对象或接口类型的位置中确定BAPI,也可以按照字母顺序来查找。BAPI资源管理器提供了使用某个特定BAPI所需的全部信息。BAPI资源管理器在SAP公司内部用来开发BAPI,也可以被客户和合作伙伴使用。BAPI资源管理器是一个集成编程环境,提供了各种工具可以用来创立BAPI和所需开发对象。58第一单元:介绍
第四课:介绍工具和命名规那么BAPI资源管理器〔3〕结构BAPI资源管理器被分为两个区域:层级显示
所有定义了BAPI的业务对象类型或者接口类型都显示在这里。工作区
这里可以选择层级显示区中的开发对象的细节和文档。用来开发BAPI的工具也可以从工作区中找到。访问调用BAPI资源管理器,使用路径“工具-业务框架-BAPI资源管理器”,或者直接用事务码BAPI。59第一单元:介绍
第四课:介绍工具和命名规那么BAPI资源管理器〔4〕使用显示功能所有定义了BAPI的业务对象类型或接口类型都显示在BAPI资源管理器的层级显示区。使用层级显示区的字母表派讯或者层级排序选项卡,可以选择如何在BOR中显示业务对象类型和接口类型。展开相关节点就可以查看到每个独立BAPI的参数。下面提供的显示功能就可以在BOR中直接访问BAPI及其细节。60第一单元:介绍
第四课:介绍工具和命名规那么BAPI资源管理器〔5〕显示细节在工作区的“细节”选项卡,可以看到选中开发对象的技术细节。通常可以在细节视图双击某个字段到达开发环境或显示更多信息。例如,在某个特定方法的细节显示时,双击函数模块的名字就会翻开函数制作器。显示和打印文档开发对象的文档会出现在工作区的“文档”选项卡。每个参数字段的数据元素文档包含在BAPI参数的文档中。如果在前端浏览器安装了InternetExplorer4.0以上版本,就可以使用标准SAPgui的打印功能来打印文档。61第一单元:介绍
第四课:介绍工具和命名规那么BAPI资源管理器〔6〕修改层级显示的级别组件层级可能太深,为了更容易的找到某个业务对象类型及其BAPI,可以使用菜单“转到-变更层级”来限制显示两层。指定要显示的BAPI默认只会显示业务对象类型中发布的BAPI。选择菜单“转到-要显示的BAPI”就可以显示BOR中包含的所有BAPI,包括SAP接口类型的BAPI和未发布的BAPI。业务对象类型和接口类型用不同符号区分,要显示这个,选择菜单“转到-显示图例”。62第一单元:介绍
第四课:介绍工具和命名规那么BAPI资源管理器〔7〕查找BAPI使用标准功能查找和查找下一个,就可以用特定条件〔包括通配符*〕来查找显示的业务对象类型或接口类型,例如:对象名,BusinessProcess对象类型,SAP0001对象描述,Plan*方法名,GetList方法描述,Objectlist*63第一单元:介绍
第四课:介绍工具和命名规那么BAPI资源管理器〔8〕使用工具和工程工作区的“工具”和“工程”选项卡主要用来开发BAPI。根据选中的开发对象,在“工具”选项卡会提供以下工具和导航选项:直接访问业务对象制作器、函数制作器和ABAP字典。使用特定的选择条件列出BAPI的生成者。在“工程”选项卡,可以创立工程来帮助跟踪开发过程并生成文档:实现新的BAPI修改发布的BAPI创立新的业务对象类型对于每个工程,有个工程表格来一步一步引导你完成整个开发过程,并提供所需的开发工具和信息。64第一单元:介绍
第四课:介绍工具和命名规那么ABAP字典〔1〕所有系统中使用的数据定义都可以在ABAP字典中描述和管理。新的或修改的信息会自动让所有系统组件使用,确保数据完整性、一致性和平安性。实现步骤的第一步就是在ABAP字典中定义所有的数据结构〔包括域和数据元素〕。这些数据结构是要实现的BAPI的必要参数。可以从BAPI资源管理器中的工程表格中访问ABAP字典,也可以使用菜单或事务码SE11。65第一单元:介绍
第四课:介绍工具和命名规那么ABAP字典〔2〕使用约定为了确保BAPI的可用性标准,以下约定是重要的:每个参数必须引用ABAP字典中的数据结构。对于结构参数,通常对应完整的BAPI数据结构。如果参数只包含一个字段,它必须引用BAPI结构的一个字段。必须为BAPI创立不同于R/3应用一般使用的数据结构的独立数据结构。原因是:当BAPI发布后,所包含的结构都冻结了,如果以后想修改结构,就会出现限制。在BAPI数据结构中一定不能使用APPEND和INCLUDE,这是因为如果BAPI数据结构被更改了,APPEND和INCLUDE可能造成不兼容。在字段中尽量使用现有的核心数据元素和域。66第一单元:介绍
第四课:介绍工具和命名规那么ABAP字典〔3〕使用约定〔续〕必须为域定义单值或值表,以便使用F4搜索帮助。必须为数据结构/数据元素定义有用的输入帮助〔可以被效劳BapiHelpvalues.GetList使用〕。为此,必须在BAPI结构的字段中指定外键。如果在字段的域定义了值表,外键也必须定义。内部数据格式用于所有参数字段。如果在数据库中定义了外部键和内部键,外部键总是要用在BAPI接口。对于跟ISO〔国家、语言、测量单位、金额〕相关的字段,必须要提供附加的ISO代码字段。所有金额字段使用域BAPICURR,特殊情况下也可以使用BAPICUREXT。67第一单元:介绍
第四课:介绍工具和命名规那么ABAP字典〔4〕使用约定〔续2〕必须总是使用句号做为小数点。所有金额和测量数据必须在正确位置点小数点,因为BAPI总是使用标准的逗号数量格式。要转换金额数量时,使用函数模块:BAPI_CURRENCY_CONV_TO_EXTERNAL和BAPI_CURRENCY_CONV_TO_INTERNAL。对数量字段,参考字段或参考表必须正确的设置在测量单位字段中。所有日期字段的数据元素必须是YYYYMMDD的格式。数据结构中的单独字段最多250个字节,这样才可以从BAPI生成异步通讯的IDoc。68第一单元:介绍
第四课:介绍工具和命名规那么函数制作器用函数制作器可以创立、实现、测试函数模块和编写它的文档。函数制作器包含一个函数库,做为所有函数模块的中心存储。可以从BAPI资源管理器或菜单访问,也可以用事务码SE37。定义了参数后,函数模块就可以用于要创立的BAPI。当创立函数模块时,必须遵守以下规那么:所有属于一个SAP业务对象类型的BAPI必须创立在一个函数组里。只有在非常特殊的情况下才不这么做,即属于一个SAP业务对象类型的BAPI偶尔可以放在多个函数组里。但是,属于不同SAP业务对象类型的BAPI一定不能放在一个函数组里。69第一单元:介绍
第四课:介绍工具和命名规那么业务对象知识库〔1〕业务对象知识库〔BOR〕包含了SAP业务对象类型和SAP接口类型以及它们的组件,例如方法、属性和时间。BAPI在BOR中定义为SAP业务对象类型的方法。BOR为SAP业务对象类型及其BAPI提供以下功能:允许以面向对象的观点看待R/3系统的数据和处理。R/3应用功能用SAP业务对象的方法〔BAPI〕来访问。实现信息被封装了,用户只能看见方法的接口功能。使用组件层级来安排各种接口。功能就可以被快速简单的被搜索和取得。70第一单元:介绍
第四课:介绍工具和命名规那么业务对象知识库〔2〕BOR提供的功能〔续〕以发行更新方式管理BAPI。在BOR中记录增加的参数来制作BAPI接口增强。以前的接口版本就可以在任何时候被重建。当BAPI创立后,新BAPI的发行版就记录在BOR中。当创立了接口参数时也一样。函数制作器管理BAPI所依赖的函数模块的版本控制。确保接口的稳定。任何在BOR中的接口修改都自动检查与ABAP字典中相关的开发对象的语法兼容性。首先必须定义BAPI的名字、参数和特性,并且决定BAPI所基于的ABAP字典对象的接口。只有完成了这些,才可以在函数制作器中实现BAPI和在BOR中创立所需编程对象。71第一单元:介绍
第四课:介绍工具和命名规那么业务对象知识库〔3〕在BOR中查找相关SAP业务对象类型通过路径“工具-业务框架-BAPI开发-业务对象制作器”,事务码〔SWO1〕翻开业务对象制作器。如果知道SAP业务对象类型或者接口类型的技术名称,可以在业务对象制作器的初始屏幕输入并直接访问。否那么,就选择业务对象知识库。要显示对象类型,在下一个对话框中选择是显示所有对象类型还是只显示业务对象类型。要显示SAP接口类型,在下一个对话框选择“其他设置”,然后选择“接口”。就显示应用层级。在应用层级中查找所需的业务对象类型或接口类型,并且选中翻开它。72第一单元:介绍
第四课:介绍工具和命名规那么其他工具〔1〕尽管上述工具在BAPI开发中最为重要,但是经常还会使用其他的工具,最常用的有下面这些:知识库信息系统 可以用知识库信息系统来执行对R/3系统中大多数对象的一般查找。要访问知识库信息系统,在ABAP工作台中选择菜单“概览-知识库信息系统”或使用事务码SE84。这个工具可以不必访问相关开发工具的首页就查找诸如函数模块或字典结构等对象。这个工具最强大的功能是使用属性或一般特征做为查询条件。73第一单元:介绍
第四课:介绍工具和命名规那么其他工具〔2〕数据浏览器 使用数据浏览器来访问表条目,而不用ABAP程序。用数据浏览器可以显示表记录、显示表的所有字段值和相关文本字段值,还能从表条目找到它们相关的检查表条目。 要翻开数据浏览器,从工作台初始屏幕选择“概览-数据浏览器”。还可以从知识库浏览器的“环境”菜单或者ABAP编辑器的“实用工具”菜单翻开。事务码SE16。消息维护 消息可以让程序与用户进行沟通。通常在用户从屏幕输入错误信息或者说明请求操作的结果时使用。 从ABAP编辑器选择“转到-消息”,出现维护消息屏幕,缺省情况下显示关联到当前程序的消息类。系统路径是“工具-ABAP工作台-开发-编程环境-消息”。事务码SE91。74第一单元:介绍
第四课:介绍工具和命名规那么命名规那么〔1〕以下命名规那么都很重要。如果IBU〔这是哪三个单词的缩写?谁知道请告诉我〕、合作伙伴和客户要创立数据结构,都必须遵守SAP提供的命名空间。BAPI数据结构所有数据结构名必须用<namespace>BAPI开始。BAPI结构名称应该尽量有意义。如果数据结构用于ALE集成,那么BAPI结构名字不能长于27个字符,否那么相关片断自动生成的名字会太长,而必须在以后手工修改。75第一单元:介绍
第四课:介绍工具和命名规那么命名规那么〔2〕字段结构中的字段必须用最长30个字符的有意义的英文名字。必须为每个数据元素定义最长30个字符的有意义的英文字段名〔显示文字〕。函数模块所有函数模块必须遵守以下命名标准:<namespace>BAPI_<businessobject>_<method>。最多允许30个字符,如果需要的话,可以缩写名字,但是必须遵守上述规那么。必须能够识别出业务对象类型。76第二单元:BAPI根底
单元概览与标准函数模块不同,BAPI具有必须遵守的充分结构化的组件规那么。它们还必须特别考虑诸如错误处理、数量和金额转换处理等事项。还必须限定BAPI的唯一性。本单元将初步揭示各种结构化组件和特殊本卷须知。单元内容BAPI根本的结构组件BAPI根本的特殊本卷须知77第二单元:BAPI根底
学习本单元后应该可以定义与BAPI接口相关的组件概要描述用来书写BAPI源代码的结构化组件解释BAPI文档的重要意义解释BAPI中用到的各种类型的参数描述在错误处理中使用的RETURN结构说明使用数量和金额字段转换的重要性解释一些BAPI中的限制78第二单元:BAPI根底
第一课:BAPI根本结构化组件本课概览定义BAPI及其接口本课目标定义与BAPI接口关联的组件描绘在书写BAPI源代码时所用的结构化组件解释BAPI文档的重要意义业务例如你是一名销售人员,需要获得客户及其联系方式的清单。为此,需要一个开发者创立一个BAPI。在他们创立BAPI前,必须考虑一系列的问题。79第二单元:BAPI根底
第一课:BAPI根本结构化组件定义接口〔1〕要定义BAPI的接口参数,需要做两件事:1、需要检查所使用的SAP业务对象的键字段,并在BAPI接口中说明它们将如何被使用。SAP业务对象的键字段是最重要的一些BAPI参数。
如果调用程序把键值传递给BAPI,那么键字段必须在BAPI的函数模块中被设置成一个输入参数。这样就可以唯一确定业务对象的某个特定实例。例如,这可能是BAPISalesOrder中的销售凭证的号码。如果想要创立自己的业务对象,就必须知道哪些因素可能会在BAPI中决定键字段。80第二单元:BAPI根底
第一课:BAPI根本结构化组件定义接口〔2〕2、指定其他数据都对应于BAPI的输入、输出或表参数。
必须创立一个输出参数RETURN,用来把消息传回给调用程序。例如,想要读取SAP业务对象债权人的数据,就必须从调用程序接收债权人的ID和公司代码。可能会需要接收一般细节、特殊细节和银行细节。要在BAPI接口中描绘上述需求,就必须在BAPI对应的函数模块中设置以下参数:键字段CreditorID做为输入参数公司代码做为输入参数RETURN返回参数向调用程序报告消息债权人的一般信息参数债权人的特殊信息参数债权人的银行信息参数81第二单元:BAPI根底
第一课:BAPI根本结构化组件源代码〔1〕准备书写BAPI的代码时,必须遵守一些重要的方针。下面是局部最重要的:BAPI一定不能调用COMMITWORK命令。这会有助于在更新数据库时最小化锁定时间,还会降低数据库锁的持续时间。BAPI一定不能包含任何CALLTRANSACTION、SUBMITREPORT或SUBMITREPORTANDRETURN命令。BAPI一定不能处理任何屏幕输出。尽量少使用那些依赖于以前数据库COMMIT的读取事务,防止等待以前更新所产生的时间损失。接下页82第二单元:BAPI根底
第一课:BAPI根本结构化组件源代码〔2〕当处理大批量数据时,ABAP程序用SAPgui做为前端,这意味着大量数据保存在应用效劳器上,并且只有显示的数据被发送给前端。用VisualBasic,所有数据会被发送给客户端系统,而不会保存在应用效劳器上,这会增加网络负载和客户端系统的内存占用。下面方法可以提升BAPI的性能:只使用完整的WHERE条件来最小化被传输的数据数量防止不必要的数据库访问利用数组不要在运行时生成程序83第二单元:BAPI根底
第一课:BAPI根本结构化组件文档〔1〕BAPI是R/3系统的业务接口,用户不需要必须十分了解R/3系统和R/3开发环境。文档必须提供足够的细节信息,让熟悉业务背景但不熟悉R/3系统的外部开发者能够使用BAPI。BAPI的文档包含四个方面:1、业务对象类型文档。BAPI资源管理器包含业务对象中每个工程的非常详细的文档,包括字段、方法、结构等。如果双击左边窗口的某一项,并且选择右边窗口的“文档”选项卡,就会获得该对象的细节信息。84第二单元:BAPI根底
第一课:BAPI根本结构化组件文档〔2〕2、方法文档。因为业务对象的方法是函数模块,因此要在函数制作器里书写这些文档。这个文档的意图是说明方法究竟能做些什么。文档应该能够帮助客户确定是否一个方法能够执行所需任务和答复以下问题:这个BAPI的业务功能是什么,可以用于什么情况?这个BAPI确实切功能是什么?有没有特别重要的限制,就是说,这个BAPI不能做什么?用这个BAPI需要特别注意的事情,例如,使用这个BAPI是否需要特别授权?这个BAPI与其他BAPI有何依赖关系,以及独立的方法参数间有何依赖关系?BAPI是否包含COMMITWORK命令?85第二单元:BAPI根底
第一课:BAPI根本结构化组件文档〔3〕3、BAPI参数文档。各个参数的文档写在函数制作器的相关函数模块中。参数文档应该答复以下问题:参数是做什么用的?哪些是强制的参数?参数的缺省值是什么?如果没有确定的值,该如何做?哪些返回码需要直接返回给调用程序或者需要通过RETURN参数间接返回?如果BAPI中止,是否需要做为异常来执行数据库回滚?如果是,就必须在文档的返回参数中说明这个过程。在扩展参数〔扩展输入ExtensionIn、扩展输出ExtensionOut〕的文档中是否列出了所有的BAPI表扩展?86第二单元:BAPI根底
第一课:BAPI根本结构化组件文档〔4〕4、数据元素文档。调用程序可以使用效劳BAPIBapiService.FieldHelpGetDocu来调用BAPI参数中的字段的数据元素文档〔F1帮助〕。由于这个原因,必须为每个BAPI参数中的字段编写数据元素文档。数据元素文档在数据字典中编写。注意,确保函数模块和参数文档必须保存在活动版本中,这样才会显示在翻译者的工作列表中。87第二单元:BAPI根底
第二课:BAPI根本特殊本卷须知本课概览本课讨论一些关于BAPI的特殊本卷须知。还要讨论一些BAPI中需要使用的各种参数,包括返回参数、扩展参数和选择参数。本课还解释了在BAPI中使用RETURN参数执行的标准错误处理。本课包含了在为BAPI的金额和数量字段传入传出数据时执行的转换。还解释了一些BAPI的限制。88第二单元:BAPI根底
第二课:BAPI根本特殊本卷须知本课目标解释BAPI中使用的各种类型的参数描绘用RETURN结构处理错误的方法说明使用数量和金额字段转换的重要性解释一些BAPI的限制业务例如一个客户以为单位是英寸,就输入了24,但是实际是英尺,这会造成物料数量的夸大。此外,如果客户输入了可能造成错误消息的值,就需要有个方法来把错误消息返回给客户。89第二单元:BAPI根底
第二课:BAPI根本特殊本卷须知确定参数在所有BAPI中都有一些标准的参数提供相同或类似的数据,如果可能的话就应该在所有BAPI中以相同方式实现它们。重要的一些包括:RETURN参数
用来返回消息给调用系统。它们提供了BAPI调用中一致的错误处理过程。扩展参数
允许应用程序员使用预编些好的用户出口来增强BAPI接口,而无需进行修正。选择参数
用来查找业务对象的特定实例,例如,BAPIGetList,允许BAPI调用者指定适当的查询条件。90第二单元:BAPI根底
第二课:BAPI根本特殊本卷须知错误处理〔RETURN〕由于历史的原因,BAPI的RETURN会有BAPIRETURN、BAPIRET1、BAPIRET2等几个不同的结构,但是从4.5A版以后,就必须使用BAPIRET1或BAPIRET2。RETURN结构的主要字段有:TYPE〔消息类型:(S)uccess成功、(E)rror错误、(W)aring警告、(I)nformation消息〕ID〔消息类〕NUMBER〔消息号〕MESSAGE〔消息文本〕MESSAGE_V1-V4〔消息变量〕91第二单元:BAPI根底
第二课:BAPI根本特殊本卷须知金额和数量的转换〔1〕在R/3系统中,金额数量字段只有在伴随有金额代码的时候才有用,只有这样数额的小数点才会正确设置。金额代码字段必须指派给每个金额数量字段。例如,在数据库中2日元会在CURR数据类型字段中存储成0.02。在BAPI中使用金额数量字段时,需要遵守以下方针:在接口中一定不能使用数据类型CURR做为参数和字段。所有金额数量的参数和字段都必须使用域BAPICURR。在金额数量字段的小数点位置必须正确转换。例如,10.12必须格式化成10.12而不能是1012。92第二单元:BAPI根底
第二课:BAPI根本特殊本卷须知金额和数量的转换〔2〕可以用两个函数模块来执行这些转换。函数模块BAPI_CURRENCY_CONV_TO_EXTERNAL把金额从R/3内部数据格式转换成外部数据格式。函数模块BAPI_CURRENCY_CONV_TO_INTERNAL把金额从外部数据格式转化成内部数据格式。数量字段也必须被转换。必须给每个数量字段指定测量单位字段。数量字段没有能够用于BAPI结构的通用域。93第二单元:BAPI根底
第二课:BAPI根本特殊本卷须知限制再次强调,源代码中不能包含COMMITWORK命令,不能使用任何可能产生屏幕输出的命令,无论输出列表、查询或者会话屏幕都不允许。此外还有以下BAPI规那么:不能使用INCLUDE结构。不要使用全局内存区域传递值。不要使用SET和GET语句。BAPI必须自己执行权限检查。此外,BPAI不能发出A或E类型的消息。任何需要被报告给调用者的错误消息必须使用返回参数。94第三单元:创立RFC函数模块
单元概览本单元描述、定义和预览业务场景,决定业务过程都需要哪些BAPI。本单元还说明了如何创立一个名为GetList的允许RFC的函数模块,并测试它的正确性。单元内容创立RFC业务场景创立允许RFC的函数模块编写GetList函数模块的文档测试允许RFC的函数模块95第三单元:创立RFC函数模块
学习本单元后应该可以描述业务场景定义业务场景回忆业务场景创立允许RFC的函数模块测试文档的正确性和完整性测试允许RFC的函数模块96第三单元:创立RFC函数模块
第一课:创立RFC业务场景本课概览本单元讨论了如何设置一个业务场景,以便用它来创立BAPI。这包含了三个步骤:描述场景、定义场景、回忆场景。本课目标描述业务场景定义业务场景回忆业务场景97第三单元:创立RFC函数模块
第一课:创立RFC业务场景业务例如现在有一个业务需要从某个客户端的特定客户获取R/3系统中的信息。为了进行分析,这个业务过程和实现这个业务过程的场景必须被详细描述。在这个场景中使用的业务对象类型和它们的BAPI也必须明确。开发BAPI最主要的困难是互相抵触的需要:一方面,BAPI要能够用于各种不同的场景,但是接口还必须结构清晰。重要的是不能保证这个阶段设计的各个BAPI能象外表上那样特征鲜明。场景中的BAPI只是被简单说明,它们的功能和数据还需要定义。这个分析可以分成三个阶段:描述业务场景、定义业务场景和回忆业务场景。98第三单元:创立RFC函数模块
第一课:创立RFC业务场景描述业务场景〔1〕业务流程业务流程包含一系列独立的业务功能。业务流程的内容应该用与技术细节无关的语言独立描述。例如:在中心组织中创立一个包含信用检查的销售订单。要定义业务流程就必须:定义业务流程的意图和范围。说明业务流程的独立步骤。为此,可以使用一个过程模型或者用例工具。用例文档与UML文档相似。现在,SAP不再提供业务流程步骤的工具了。99第三单元:创立RFC函数模块
第一课:创立RFC业务场景描述业务场景〔2〕场景场景就是业务流程的计算机化实现。它描述了特定组件之间的分布和交互任务。可以有多个场景来实现同一个业务流程。例如:在不同的R/3系统中〔中心财务、分散的销售和分销〕创立销售订单和信用检查。定义场景的过程包括:确定是否要把应用系统集成在场景中,或者要连接其他前端。这可能影响步骤的粒度。确定相关组件和它们执行的任务。100第三单元:创立RFC函数模块
第一课:创立RFC业务场景描述业务场景〔3〕场景〔续〕定义场景的过程包括:决定信息和处理流程。这里必须要:确定哪些步骤要在系统范围内处理,哪些步骤只需要在单独组件内部处理。定义在组件间进行交换的数据和谁来发起交换。确定各个独立步骤被处理的顺序。确定属于一个独立事务〔LUW〕的步骤。例如:开发者必须问自己,在一个LUW中创立一个客户之后立即再在其中创立一个销售订单是否有意义。比本地应用更加准确和全面的处理错误。101第三单元:创立RFC函数模块
第一课:创立RFC业务场景描述业务场景〔4〕场景〔续2〕必须决定对于该场景的系统耦合度是高还是低。应该从系统可用性、性能和场景被使用的频度等角度考虑。必须考虑所有对性能有重大影响的步骤。还需要考虑,哪个R/3版本可以支持这个场景。对于每个场景,必须确定一个人可以保证场景的正确和及时。102第三单元:创立RFC函数模块
第一课:创立RFC业务场景描述业务场景〔5〕业务对象类型和BAPI考虑这样一个场景,需要用BAPI读取债权人的列表并且显示他们,就会看到首先要用一个BAPI来选择债权人,然后用另一个BAPI来指定这个要被显示的债权人的细节。这里,该场景相关的业务对象就是Creditor。符合场景的概念,要创立一个完整的场景就必须用多个BAPI互相补充,互相之间的关系必须定义清晰。要在上面描述的例如场景中读取一个债权人的细节,就需要两个BAPI,显示债权人的列表和显示指定债权人的细节。103第三单元:创立RFC函数模块
第一课:创立RFC业务场景描述业务场景〔6〕业务对象类型和BAPI这两个BAPI的互相依赖性是很明显的,因为首先要显示出债权人列表供搜寻,以获得指定债权人的ID,从这个ID,才可以显示该债权人的细节。然而,这两个BAPI还保存着互相的功能独立,因为如果知道了债权人的ID,就可以直接使用显示指定债权人细节的BPAI,而无需调用显示债权人列表的BAPI。更进一步,上面例如场景中读取债权人细节的BAPI只能用于SAP业务对象Creditor,不能用于其他对象类型。一旦考虑了上述条件,就可以获得方案的BAPI功能上的清晰概念。也就能够确定与BAPI场景相关的SAP业务对象。104第三单元:创立RFC函数模块
第一课:创立RFC业务场景定义业务场景现在已经描述了业务场景,就需要定义工程。可以在BAPI资源管理器找到工程表格:使用事务码BAPI〔4.6A版以上〕在相关的开发系统翻开BAPI资源管理器。选择“工程”选项卡,创立一个工程来实现新的BAPI。出现工程表单引导你创立BAPI的整个过程。在第一个屏幕,可以创立定义场景的根本数据。105第三单元:创立RFC函数模块
第一课:创立RFC业务场景回忆业务场景在场景可以被转化成BAPI并且开始具体定义和实施之前,需要再回忆一下场景。所有跟BAPI开发以及与质量控制相关的人员都应该参与回忆。需要答复以下问题:这个场景是否与它的方案相符?这个场景描述中所有必须的任务是否都已完成?这个场景中所有的BAPI是否都能共同平滑的工作?只有在成功完成回忆之后才可以开始开发BAPI。106第三单元:创立RFC函数模块
第二课:创立允许RFC的函数模块本课概览本课讨论了实现BAPI的各个步骤,包括在ABAP字典中创立BAPI函数模块中用到的结构、创立BAPI函数模块、编写BAPI的文档。本课目标创立允许RFC的函数模块业务例如需要给销售人员提供一个调用接口,让他们在R/3外部就能够获得客户和合同的清单。现在没有完成这个功能的BAPI,需要新建一个。107第三单元:创立RFC函数模块
第二课:创立允许RFC的函数模块为BAPI创立结构BAPI中使用的数据结构都在ABAP字典中定义和描述。组件之间的关系请参见第56页的图片。实现阶段的第一个步骤是在ABAP字典中定义所有的数据结构〔包括域和数据元素〕。这些数据结构是给BAPI所需的参数使用的。可以从BAPI资源管理器的工程表单直接访问ABAP字典。以下约定非常重要:每个参数必须引用ABAP字典中的数据结构。对于结构型的参数,这通常引用整个BAPI数据结构,但是如果参数只包含一个字段,就必须指向BAPI结构中的一个字段〔为什么不能是一个独立数据元素,而必须是结构?〕。108第三单元:创立RFC函数模块
第二课:创立允许RFC的函数模块为BAPI创立结构〔2〕必须为BAPI定义与R/3应用中通常使用的数据结构独立无关的数据结构。原因是:一旦BAPI被发布,相关的结构就被冻结,如果想要修改这些结构就会受到限制。所有数据结构的名字必须用<命名空间>BAPI开始。BAPI结构名称必须尽量有意义。在BAPI数据结构中一定不能使用APPEND和INCLUDE。因为:在BAPI数据结构修改后,APPEND和INCLUDE可以造成不兼容。还必须为域定义单值或者值表,以便使用F4帮助。必须为数据结构和数据元素定义所有有用的输入帮助。为此,必须在BAPI结构的字段指定外键。如果在字段域定义的值表,也必须定义外键。尽量为字段使用现存的中心数据元素和域。109第三单元:创立RFC函数模块
第二课:创立允许RFC的函数模块创立BAPI函数模块〔1〕在创立BAPI的时候,必须考虑
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年度 收纳师备考指南试题及答案
- 2024年建造师考试备考策略与试题及答案
- 2024年食品安全员考场宝典试题及答案
- 2024食品安全员考试考场策略试题及答案
- 幼儿园食堂人员操作规范
- 2024年食品安全员考试策略与方法分享试题及答案
- 档案信息化建设的趋势与挑战试题及答案
- 2024年如何提升档案管理技能试题及答案
- 2024年应试技巧二级建造师试题及答案
- 多媒体设计师考试流程介绍试题及答案
- 《乌有先生历险记》原文及翻译
- 世界《结核病日》主题班会课件
- 信息技术设备维护承诺书
- 2024年越南不间断电源(UPS)设备行业现状及前景分析2024-2030
- 2024年福建省泉州市初中毕业班教学质量检测生物试题
- 钢卷采购合同
- 人工智能在服装设计中的应用培训
- HG-T 2643-2023 非金属化工设备 丙烯腈-丁二烯-苯乙烯、聚氯乙烯、均聚聚丙烯、聚偏氟乙烯和玻璃纤维增强聚丙烯隔膜阀
- JJG 105-2019转速表行业标准
- 2024年医疗不良事件总结分析
- 流行音乐(中国)
评论
0/150
提交评论