SAP-BC417-課程中文自學(xué)筆記_第1頁
SAP-BC417-課程中文自學(xué)筆記_第2頁
SAP-BC417-課程中文自學(xué)筆記_第3頁
SAP-BC417-課程中文自學(xué)筆記_第4頁
SAP-BC417-課程中文自學(xué)筆記_第5頁
已閱讀5頁,還剩417頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

SAPBC417課程

中文自學(xué)筆記 強(qiáng)晟 2007年12月6日v1.0 E-mail: Blog:1前言隨著SAP的開展和軟件開發(fā)技術(shù)的開展,ABAP開始引進(jìn)面向?qū)ο蟮母拍睿珺API那么是在這個(gè)轉(zhuǎn)換過程中融合了面向過程和面向?qū)ο髢煞N開發(fā)方式的產(chǎn)物。為了兼容過去的開發(fā)方式,SAP把BAPI的方法調(diào)用組織在函數(shù)組和函數(shù)模塊中,使用傳統(tǒng)的面向過程的ABAP可以調(diào)用這些函數(shù)模塊來完成BAPI的功能。同時(shí),BAPI以業(yè)務(wù)對象的面目出現(xiàn),將逐漸轉(zhuǎn)變成可以被面向?qū)ο蟮腁BAP或者Java調(diào)用的對象。同時(shí),它還具有遠(yuǎn)程函數(shù)調(diào)用的能力,可以被其他的軟件開發(fā)語言在其他平臺(tái)上調(diào)用。它已經(jīng)逐漸成為SAP開發(fā)的主流技術(shù)。 強(qiáng)晟 2007年11月9日2目錄第一單元:介紹第二單元:BAPI根底第三單元:創(chuàng)立一個(gè)RFC函數(shù)模塊第四單元:業(yè)務(wù)對象第五單元:數(shù)據(jù)庫更新第六單元:BAPI調(diào)用第七單元:增強(qiáng)和修正第八單元:使用ALE和IDOC的BAPI第九單元:集中數(shù)據(jù)傳輸附錄:新的BAPI工程實(shí)施3課程說明課程目標(biāo)創(chuàng)立、維護(hù)和使用BAPI學(xué)習(xí)本課程后應(yīng)該可以說明BAPI開發(fā)的四個(gè)階段:分析、設(shè)計(jì)、測試和實(shí)現(xiàn)設(shè)計(jì)和維護(hù)BAPI查找或創(chuàng)立業(yè)務(wù)對象增強(qiáng)SAP提供的BAPI執(zhí)行對BAPI的外部調(diào)用4第一單元:介紹

學(xué)習(xí)本單元后應(yīng)該可以說明SAP業(yè)務(wù)框架定義業(yè)務(wù)對象和列出它們的組件說明BAPI的意圖和根本功能說明業(yè)務(wù)場景列出場景的階段和它們的意圖說明BAPI的事務(wù)模型列出事務(wù)步驟和它們的時(shí)間點(diǎn)找出和訪問BAPI開發(fā)中用到的工具使用可用工具來找出現(xiàn)存BAPI列出與BAPI及其組件相關(guān)的命名標(biāo)準(zhǔn)5第一單元:介紹

單元內(nèi)容介紹BAPI的概念和使用介紹業(yè)務(wù)場景介紹BAPI事務(wù)模型介紹工具和命名標(biāo)準(zhǔn)練習(xí):查找和測試一個(gè)現(xiàn)有BAPI6第一單元:介紹

第一課:介紹BAPI的概念和使用本課概覽SAP創(chuàng)立了業(yè)務(wù)框架,讓SAP組件之間以及SAP和非SAP組件之間能夠?qū)崿F(xiàn)技術(shù)集成和交換業(yè)務(wù)數(shù)據(jù)。業(yè)務(wù)框架的一個(gè)主要組件就是業(yè)務(wù)應(yīng)用程序接口〔BAPI〕,它能夠表示出組件邊界的可視化接口,而屬性那么把組件集成在一起。這種集成可以包含本地網(wǎng)絡(luò)內(nèi)的組件或者通過互聯(lián)網(wǎng)相互連接的組件。BAPI允許在業(yè)務(wù)層的集成,而不是技術(shù)層。這為連接提供了非常好的可伸縮性和對于未知通訊技術(shù)的獨(dú)立性。7第一單元:介紹

第一課:介紹BAPI的概念和使用本課目標(biāo)說明SAP業(yè)務(wù)框架定義業(yè)務(wù)對象并列舉它們的組件說明某個(gè)BAPI的意圖和根本功能業(yè)務(wù)例如在今天的業(yè)務(wù)環(huán)境中,對業(yè)務(wù)信息的即時(shí)性和精確性要求比以往更加緊迫。僅僅知道信息存在在組織內(nèi)部某地已經(jīng)不夠了——它必須是簡明的、精確的,并且以便于使用的形式快速獲取。此外,這個(gè)信息資源的用戶可能會(huì)分散在世界各地,并且操作著與保存數(shù)據(jù)系統(tǒng)不同的其他系統(tǒng)??稍L問性就成為一個(gè)主要的業(yè)務(wù)課題。8第一單元:介紹

第一課:介紹BAPI的概念和使用業(yè)務(wù)框架SAPR/3業(yè)務(wù)框架提供了一個(gè)基于R/3中功能性應(yīng)用組件〔業(yè)務(wù)組件〕和對象模型的結(jié)構(gòu)。業(yè)務(wù)框架允許客戶和合作伙伴把他們自己的組件連接到R/3系統(tǒng)。面向?qū)ο蠹夹g(shù)和對象模型的使用降低了整個(gè)系統(tǒng)的復(fù)雜性。業(yè)務(wù)框架架構(gòu)提供了開發(fā)SAP業(yè)務(wù)組件的根底。集成和通訊架構(gòu)可以表示如下:SAPR/3ApplicationLinkEnabling(ALE)應(yīng)用組件業(yè)務(wù)對象BAPIBAPIBAPI分布的業(yè)務(wù)處理業(yè)務(wù)處理的集成效勞和業(yè)務(wù)對象的分布RemoteFunctionCall(RFC)(D)COMCORBA通訊服務(wù)9第一單元:介紹

第一課:介紹BAPI的概念和使用業(yè)務(wù)框架的組成SAP業(yè)務(wù)框架的根本組件如下:業(yè)務(wù)組件

SAP業(yè)務(wù)組件提供了自主的業(yè)務(wù)功能和一致的業(yè)務(wù)對象。例如,業(yè)務(wù)對象Employee和Applicant被分配給業(yè)務(wù)組件HumanResource。業(yè)務(wù)處理或者在業(yè)務(wù)組件內(nèi)部實(shí)現(xiàn),或者跨多個(gè)組件實(shí)現(xiàn)〔分布式業(yè)務(wù)處理〕。業(yè)務(wù)對象

R/3系統(tǒng)面向?qū)ο蟮慕Y(jié)構(gòu)基于業(yè)務(wù)對象。他們封裝了業(yè)務(wù)數(shù)據(jù)和功能,并且定義了業(yè)務(wù)組件的功能范圍和邊界。10第一單元:介紹

第一課:介紹BAPI的概念和使用業(yè)務(wù)框架的組成〔續(xù)〕業(yè)務(wù)應(yīng)用開發(fā)接口〔BAPI〕

BAPI是業(yè)務(wù)對象的接口,BAPI跟業(yè)務(wù)對象一起從業(yè)務(wù)層定義和說明了接口標(biāo)準(zhǔn)。集成效勞,應(yīng)用連接使能〔ALE〕

ALE集成效勞允許業(yè)務(wù)處理在不同R/3系統(tǒng)或非R/3系統(tǒng)上執(zhí)行的集成。這個(gè)使用了ALE分布式模型的效勞基于業(yè)務(wù)對象在系統(tǒng)范圍上的分布。通訊效勞

這些都是通訊技術(shù),例如,分布式組件對象模型〔DCOM〕和遠(yuǎn)程函數(shù)調(diào)用〔RFC〕,它們使用業(yè)務(wù)框架來訪問BAPI。11第一單元:介紹

第一課:介紹BAPI的概念和使用SAP業(yè)務(wù)對象〔1〕業(yè)務(wù)對象技術(shù)和業(yè)務(wù)對象編程都基于業(yè)務(wù)對象的概念。例如,真實(shí)世界的對象,一個(gè)員工或者一份銷售訂單,在業(yè)務(wù)應(yīng)用系統(tǒng)〔如R/3系統(tǒng)〕中都被模型化為業(yè)務(wù)對象。這個(gè)建模過程從定義業(yè)務(wù)對象類型開始。業(yè)務(wù)對象類型,在SAPR/3系統(tǒng)表示一個(gè)業(yè)務(wù)實(shí)體,包含了這個(gè)實(shí)體的功能〔以方法的形式出現(xiàn)〕和數(shù)據(jù)〔以屬性的形式出現(xiàn)〕。業(yè)務(wù)對象類型的實(shí)現(xiàn)細(xì)節(jié)那么對用戶隱藏了。業(yè)務(wù)對象類型通過已經(jīng)定義好的功能〔方法〕來訪問。這就被稱為封裝。12第一單元:介紹

第一課:介紹BAPI的概念和使用SAP業(yè)務(wù)對象〔2〕業(yè)務(wù)對象類型用來把SAPR/3系統(tǒng)拆分成小的特定單元。由于降低了復(fù)雜性,系統(tǒng)的結(jié)構(gòu)也因而改善了。業(yè)務(wù)對象類型構(gòu)成了SAPR/3系統(tǒng)的數(shù)據(jù)和功能的入口點(diǎn)。在業(yè)務(wù)對象類型層,非SAP系統(tǒng)和各種SAP業(yè)務(wù)組件都可以互相通訊。業(yè)務(wù)對象類型SalesOrder表現(xiàn)為某個(gè)客戶對公司的請求,具體包括在某個(gè)特定時(shí)間點(diǎn)提供一定數(shù)量的物料或者在某個(gè)時(shí)間點(diǎn)履行效勞。一個(gè)特定的銷售訂單由它的銷售憑證號(hào)來標(biāo)識(shí)。該業(yè)務(wù)對象類型包含了一個(gè)銷售訂單的所有必要信息:售達(dá)方、銷售組織、憑證日期、凈重、銷售金額和分發(fā)憑證。13第一單元:介紹

第一課:介紹BAPI的概念和使用SAP業(yè)務(wù)對象〔3〕一個(gè)業(yè)務(wù)對象類型應(yīng)該可以理解為一個(gè)業(yè)務(wù)概念和它在SAPR/3系統(tǒng)中的實(shí)現(xiàn)概念。業(yè)務(wù)對象類型這個(gè)術(shù)語對應(yīng)于面向?qū)ο缶幊陶Z言中的術(shù)語——類。業(yè)務(wù)對象類型的某個(gè)特定的發(fā)生,例如實(shí)際存儲(chǔ)在系統(tǒng)中的一個(gè)銷售訂單,必須要跟業(yè)務(wù)對象類型本身區(qū)分開來。這個(gè)特定發(fā)生被稱作一個(gè)實(shí)例〔面向?qū)ο缶幊陶Z言中的常規(guī)術(shù)語〕或者一個(gè)業(yè)務(wù)對象。編號(hào)為102的銷售訂單是業(yè)務(wù)對象類型SalesOrder的一個(gè)實(shí)例。這個(gè)銷售訂單由它的銷售和分發(fā)文檔號(hào)102來標(biāo)識(shí)。這個(gè)對象通過它的屬性來描述,包括售達(dá)方、銷售組織、憑證日期等等。14第一單元:介紹

第一課:介紹BAPI的概念和使用SAP業(yè)務(wù)對象〔4〕業(yè)務(wù)對象類型的結(jié)構(gòu)

以下圖描繪了業(yè)務(wù)對象類型的概念:業(yè)務(wù)對象核心完整性接口訪問通過:內(nèi)部結(jié)構(gòu)特殊化一致性條件〔對象特性〕業(yè)務(wù)規(guī)那么〔環(huán)境特性〕屬性BAPI,方法時(shí)間Internet

〔HTTP〕COM/DCOMCORBAABAP

〔RFC〕15第一單元:介紹

第一課:介紹BAPI的概念和使用SAP業(yè)務(wù)對象〔5〕上圖中包含一些重要的事項(xiàng):業(yè)務(wù)對象類型的核心描述了內(nèi)部對象結(jié)構(gòu),換句話說就是它的數(shù)據(jù)和這些數(shù)據(jù)的結(jié)構(gòu)。約束是確保一個(gè)對象一致性的規(guī)那么〔例如,對于不同的最低銷售數(shù)量可以分配不同的價(jià)格條件〕。業(yè)務(wù)規(guī)那么要求一個(gè)對象必須遵守根本規(guī)那么,確保對象在它的環(huán)境中保持內(nèi)在的一致性〔例如,一個(gè)銷售組織只能銷售給存在這業(yè)務(wù)關(guān)系信息的客戶〕。接口提供了訪問業(yè)務(wù)對象類型的預(yù)定義的方法,它們可以是公共屬性,方法/BAPI和事件。對象可以通過COM/DCOM或者CORBA〔通用對象請求代理架構(gòu)〕來訪問。在ABAP應(yīng)用中,業(yè)務(wù)對象可以被遠(yuǎn)程函數(shù)調(diào)用〔RFC〕訪問。16第一單元:介紹

第一課:介紹BAPI的概念和使用SAP業(yè)務(wù)對象〔6〕定義和實(shí)現(xiàn)一個(gè)對象類型

業(yè)務(wù)對象類型在業(yè)務(wù)對象知識(shí)庫〔BOR〕中描述,具有以下特性:對象類型根本數(shù)據(jù)接口鍵字段屬性方法事件程序字段引用虛擬屬性對象引用同步異步事務(wù)碼函數(shù)模塊報(bào)表ABAP代碼API方法關(guān)系屬性17第一單元:介紹

第一課:介紹BAPI的概念和使用SAP業(yè)務(wù)對象〔7〕對業(yè)務(wù)對象特性的說明根本數(shù)據(jù)

包含有助記憶的對象名字,對象類型的技術(shù)名稱,它的名稱〔有意義的說明〕,它的短描述,發(fā)布狀態(tài),缺省方法,缺省屬性,以及包含了它的實(shí)現(xiàn)的程序名。接口

提供了一個(gè)對象預(yù)定義的接口〔屬性、方法、事件〕。接口類型通常不包含實(shí)現(xiàn)。鍵字段

唯一標(biāo)識(shí)一個(gè)對象。屬性

表現(xiàn)對象的性質(zhì)和特征。方法

封裝了R/3的功能,可以是同步或異步方法。18第一單元:介紹

第一課:介紹BAPI的概念和使用SAP業(yè)務(wù)對象〔8〕對業(yè)務(wù)對象特性的說明〔續(xù)〕事件

預(yù)示業(yè)務(wù)對象狀態(tài)改變的事件。業(yè)務(wù)對象鍵字段

每個(gè)業(yè)務(wù)對象類型都有一個(gè)或多個(gè)鍵字段。每個(gè)實(shí)例有一個(gè)唯一的鍵字段的值組合,由鍵字段中的特定值來標(biāo)識(shí)。這種唯一的值組合機(jī)制就能讓通過鍵字段中的值訪問一個(gè)特定的業(yè)務(wù)對象類型的實(shí)例成為可能。鍵字段在業(yè)務(wù)對象設(shè)計(jì)時(shí)是需要重點(diǎn)考慮的。

大多數(shù)情況下,對象類型的鍵字段也是包含了業(yè)務(wù)對象類型的表頭數(shù)據(jù)表的鍵字段。因?yàn)锽OR運(yùn)行時(shí)對象是客戶端相關(guān)的,所以客戶端可以不作為一個(gè)鍵字段。19第一單元:介紹

第一課:介紹BAPI的概念和使用業(yè)務(wù)應(yīng)用程序接口〔1〕業(yè)務(wù)應(yīng)用編程接口〔BAPI〕允許通過形式化、穩(wěn)定并且無需交互的接口來訪問SAP的函數(shù)。這些接口可以被由客戶和其他軟件合作伙伴開發(fā)的外部應(yīng)用所使用,也可以被其他SAP應(yīng)用使用。ABPI是為業(yè)務(wù)應(yīng)用系統(tǒng)精確定義的處理和數(shù)據(jù)的接口,它做為業(yè)務(wù)對象知識(shí)庫〔BOR〕中的對象的接口來實(shí)現(xiàn)。BAPI定義成SAP業(yè)務(wù)對象類型的API方法。這些對象類型在業(yè)務(wù)框架中使用,允許組件之間基于對象的通訊。業(yè)務(wù)對象和它們的BAPI讓面向?qū)ο罂梢栽诠镜闹行男畔⑻幚碇斜皇褂?。例如,現(xiàn)存的函數(shù)和數(shù)據(jù)都能被重用,可以到達(dá)無障礙的技術(shù)協(xié)同工作能力,并且可以實(shí)現(xiàn)非SAP組件。20第一單元:介紹

第一課:介紹BAPI的概念和使用業(yè)務(wù)應(yīng)用程序接口〔2〕-根本特征由于BAPI做為R/3系統(tǒng)的標(biāo)準(zhǔn)接口,它們需要特定的標(biāo)準(zhǔn)、認(rèn)同和可依賴的特征。在任何開發(fā)BAPI的時(shí)候都必須考慮這些特征。這些特征包括:面向?qū)ο螅築API做為在業(yè)務(wù)對象知識(shí)庫中定義的業(yè)務(wù)對象的對象方法來實(shí)現(xiàn)。穩(wěn)定的接口:BAPI的接口是固定的。內(nèi)部和外部使用:BAPI可以從R/3內(nèi)部使用也可以從外部系統(tǒng)調(diào)用。無表示層:BAPI不提供用戶接口功能。顯示請求的結(jié)果是調(diào)用者的指責(zé)。為消息使用參數(shù):成功和錯(cuò)誤消息在RETURN參數(shù)中處理。這可以是個(gè)結(jié)構(gòu)或是個(gè)表,由BAPI來決定。21第一單元:介紹

第一課:介紹BAPI的概念和使用業(yè)務(wù)應(yīng)用程序接口〔3〕-集成BAPI可以用于以下的集成類型:使用SAP業(yè)務(wù)連接器或者互聯(lián)網(wǎng)應(yīng)用組件〔IAC〕把R/3連接到互聯(lián)網(wǎng)上。BAPI還允許創(chuàng)立真實(shí)組件軟件,只要它們允許SAP組件間的標(biāo)準(zhǔn)通訊。最終目標(biāo)是把SAP系統(tǒng)的功能封裝到通過通用接口〔BAPI〕集成的獨(dú)立業(yè)務(wù)組件中。新的SAP組件、非SAP軟件和遺留系統(tǒng)的集成。實(shí)現(xiàn)使用應(yīng)用連接使能〔ALE〕異步連接的分布式R/3場景。使用PC程序做為R/3系統(tǒng)的前臺(tái),這可以用VisualBaisc〔Microsoft〕或者VisualAgeforJava〔IBM〕來開發(fā)。擴(kuò)展超越系統(tǒng)邊界的工作流應(yīng)用??蛻艉秃献骰锇榈淖灾鏖_發(fā)。22第一單元:介紹

第一課:介紹BAPI的概念和使用業(yè)務(wù)應(yīng)用程序接口〔4〕-集成和可用性目標(biāo)當(dāng)實(shí)現(xiàn)BAPI時(shí),應(yīng)該盡量防止以往接口的明信片效應(yīng)的缺點(diǎn):不區(qū)分內(nèi)容和傳輸。在明信片中,文本寫在卡片上,而卡片還充當(dāng)了信息媒介。如果信息媒介改變了,接收者就會(huì)以不同的方式讀到文本。這樣的結(jié)果是,對接口的更改會(huì)影響對類型的訪問。在BAPI里,清晰的把業(yè)務(wù)內(nèi)容與潛在的通訊技術(shù)區(qū)分開來。這個(gè)過程可以跟一封在信封中的信來比較:把一封信放到一個(gè)新信封里非常容易,同樣的,使用一個(gè)新的和〔或〕不同的通訊技術(shù)如COM/DCOM、CORBA標(biāo)準(zhǔn)或新的互聯(lián)網(wǎng)標(biāo)準(zhǔn)時(shí)也同樣容易。信封本身與理解新的內(nèi)容并不相關(guān)。在這個(gè)例子中,BAPI相當(dāng)于信,也就是說它們與程序語言和通訊機(jī)制都完全無關(guān)。23第一單元:介紹

第一課:介紹BAPI的概念和使用業(yè)務(wù)應(yīng)用程序接口〔5〕-通訊為了允許它們在任何情形下都能使用,BAPI必須支持所有通訊形式并能被所有類型的參與者使用。支持同步和異步通訊BAPI可以對SAP組件進(jìn)行同步或異步調(diào)用。如果調(diào)用是同步的,BAPI就被做為遠(yuǎn)程函數(shù)調(diào)用〔RFC〕來調(diào)用。當(dāng)BAPI在發(fā)送者系統(tǒng)被調(diào)用,就生成一個(gè)IDoc并分配給接收者系統(tǒng)。當(dāng)IDoc到達(dá)接收者,相應(yīng)BAPI的參數(shù)就會(huì)用IDoc數(shù)據(jù)自動(dòng)填充,BAPI再同步調(diào)用。支持機(jī)器到機(jī)器和人到機(jī)器的通訊24第一單元:介紹

第一課:介紹BAPI的概念和使用業(yè)務(wù)應(yīng)用程序接口〔6〕-通訊BAPI可以用在應(yīng)用系統(tǒng)集成和連接到各種前端上。應(yīng)用系統(tǒng)的集成可以稱為機(jī)器到機(jī)器的通訊。它在交換大量數(shù)據(jù)和需要很高系統(tǒng)性能時(shí)使用。這種情況下的BAPI應(yīng)用將提供很少的細(xì)節(jié)信息。各種前端的集成是人到機(jī)器的通訊。這時(shí)的BAPI使用有很多的細(xì)節(jié),它們必須設(shè)計(jì)為允許更靈活的通訊以減少錯(cuò)誤。對組件的通訊支持被精確連接并通過互聯(lián)網(wǎng)連接除了在CORBA和COM/DCOM這樣的通訊技術(shù)下使用BAPI外,它還可以通過SAP業(yè)務(wù)連接器在互聯(lián)網(wǎng)上被訪問。業(yè)務(wù)連接器從BAPI調(diào)用生成XML,或者傳遞一個(gè)內(nèi)含的XML文檔到BAPI調(diào)用中。這可以把BAPI調(diào)用分配成為XML文檔,允許通過互聯(lián)網(wǎng)連接的組件之間的通訊。25第一單元:介紹

第一課:介紹BAPI的概念和使用業(yè)務(wù)應(yīng)用程序接口〔7〕-優(yōu)點(diǎn)使用BAPI具有如下優(yōu)點(diǎn):BAPI表現(xiàn)為良好定義、內(nèi)部一致的單元,總是表示業(yè)務(wù)事實(shí),并且隱藏的數(shù)據(jù)庫狀態(tài)的一致性。業(yè)務(wù)內(nèi)容可以被標(biāo)準(zhǔn)化,因?yàn)锽API不僅在技術(shù)層面上允許SAP系統(tǒng)和其他軟件的集成,也在業(yè)務(wù)層面實(shí)現(xiàn)了集成。BAPI已經(jīng)成為業(yè)務(wù)系統(tǒng)間的通訊標(biāo)準(zhǔn),通過面向?qū)ο蠼涌诩夹g(shù)〔例如COM/DCOM〕的訪問已經(jīng)成為可能。SAP萬對象遵守OAG〔ObjectApplicationGroup〕的方針,并且適合于OMG〔ObjectManagementGroup〕的CORBA標(biāo)準(zhǔn)。26第一單元:介紹

第一課:介紹BAPI的概念和使用業(yè)務(wù)應(yīng)用程序接口〔8〕-優(yōu)點(diǎn)使用BAPI具有如下優(yōu)點(diǎn):當(dāng)SAP發(fā)布BAPI時(shí)能夠保證其穩(wěn)定性和兼容性。它的接口定義和參數(shù)將長期保持不變,這意味著應(yīng)用程序即使在SAP軟件或數(shù)據(jù)發(fā)生更改時(shí)也不受影響。如果給BAPI添加了向上兼容的增強(qiáng),現(xiàn)存應(yīng)用的穩(wěn)定性也不受影響。BAPI可以支持開放系統(tǒng),能被任何的開發(fā)平臺(tái)訪問。27第一單元:介紹

第一課:介紹BAPI的概念和使用業(yè)務(wù)對象知識(shí)庫〔1〕定義

業(yè)務(wù)對象知識(shí)庫〔BOR〕是SAP業(yè)務(wù)對象類型和它們的BAPI的中心訪問點(diǎn)。BOR最初為SAP業(yè)務(wù)工作流開發(fā)。今天,除了存儲(chǔ)SAP業(yè)務(wù)對象類型和它們的BAPI外,BOR還用于ArchiveLink、輸出控制以及它們的一般對象效勞。28第一單元:介紹

第一課:介紹BAPI的概念和使用業(yè)務(wù)對象知識(shí)庫〔2〕-效勞BOR在BAPI上下文提供了以下效勞:允許在SAP系統(tǒng)中所有數(shù)據(jù)和處理都以面向?qū)ο蟮慕嵌葋碛^察。把各種業(yè)務(wù)對象類型根據(jù)組件層級(jí)來組織,讓函數(shù)能被迅速簡單的查詢和取得。存儲(chǔ)所有相關(guān)信息。BOR包含了SAP業(yè)務(wù)對象類型的所有相關(guān)信息,它們的鍵字段、andtheirBAPImethodsthatareneededtointegratethecorrectobjecttypedefinitionsandBAPIcallsinanapplicationprogram〔慚愧,這句硬是讀不通〕。這使中間件集成〔例如DCOM連接器、ActiveX控件、CORBA網(wǎng)關(guān)等等〕成為可能。29第一單元:介紹

第一課:介紹BAPI的概念和使用業(yè)務(wù)對象知識(shí)庫〔3〕-效勞BOR在BAPI上下文提供了以下效勞:確保接口穩(wěn)定。任何接口變更都在BOR中進(jìn)行,會(huì)執(zhí)行語法兼容性的自動(dòng)檢查,防止與ABAP字典中相關(guān)開發(fā)對象發(fā)生不一致。以發(fā)行升級(jí)方式管理BAPI。添加參數(shù)類的BAPI接口增強(qiáng)記錄在BOR中。以前的接口版本可以在任何時(shí)候重建。當(dāng)BAPI創(chuàng)立時(shí),新BAPI的發(fā)行版本也記錄在BOR中。同樣,接口參數(shù)創(chuàng)立時(shí)也一樣。創(chuàng)立SAP業(yè)務(wù)對象的實(shí)例。BOR的運(yùn)行時(shí)環(huán)境從客戶端應(yīng)用接收創(chuàng)立運(yùn)行時(shí)對象的請求并且創(chuàng)立相應(yīng)的對象實(shí)例。30第一單元:介紹

第二課:介紹業(yè)務(wù)場景本課概覽在編寫B(tài)API之前,應(yīng)該清楚的定義這個(gè)BAPI將會(huì)使用到的過程和狀態(tài)。BAPI應(yīng)該只在有意義的業(yè)務(wù)場景環(huán)境中實(shí)現(xiàn)。本課目標(biāo)說明業(yè)務(wù)場景列出場景的步驟及其意圖業(yè)務(wù)例如如果你已經(jīng)參與過某個(gè)公司的新業(yè)務(wù)應(yīng)用的內(nèi)部開發(fā),就應(yīng)該知道分析現(xiàn)有系統(tǒng)的重要性。目標(biāo)是增加當(dāng)前沒有的新功能或者糾正和完善功能。只有在方案好新功能并且知道它如何被使用后才可以恰當(dāng)?shù)耐瓿伞?1第一單元:介紹

第二課:介紹業(yè)務(wù)場景說明場景〔1〕-場景業(yè)務(wù)步驟包含一系列獨(dú)立的業(yè)務(wù)功能。業(yè)務(wù)步驟的內(nèi)容應(yīng)該完全與技術(shù)細(xì)節(jié)分開描述。在一個(gè)分支機(jī)構(gòu)中創(chuàng)立一個(gè)銷售訂單會(huì)需要在公司總部執(zhí)行一系列信用檢查。要定義業(yè)務(wù)步驟,必須:定義這個(gè)業(yè)務(wù)步驟的意圖和范圍。在業(yè)務(wù)步驟中區(qū)分獨(dú)立的步驟。為此,可以使用一個(gè)過程模型或者用例工具。32第一單元:介紹

第二課:介紹業(yè)務(wù)場景說明場景〔2〕-業(yè)務(wù)步驟一個(gè)場景,是一個(gè)業(yè)務(wù)過程計(jì)算機(jī)化的執(zhí)行,描述了在參與組件之間的任務(wù)分布和交互。實(shí)現(xiàn)相同業(yè)務(wù)過程可以有幾個(gè)場景。必須在不同R/3系統(tǒng)〔中央財(cái)務(wù)、分散銷售和分銷〕中創(chuàng)立需要信用檢查的銷售訂單。定義場景的步驟包括:確定相關(guān)的組件和它們執(zhí)行的任務(wù)。決定是否應(yīng)用系統(tǒng)要集成在場景中,或者要連接其他前端。例如,這可以影響到步驟的粒度。33第一單元:介紹

第二課:介紹業(yè)務(wù)場景說明場景〔3〕-業(yè)務(wù)步驟定義場景的步驟包括:決定信息和過程流。這里必須要:確定哪些步驟要在系統(tǒng)范圍處理,哪些步驟僅在一個(gè)組件內(nèi)處理。確定哪些數(shù)據(jù)要與哪些組件進(jìn)行交換,和誰發(fā)起這個(gè)交換。確定各個(gè)步驟的處理順序。說明屬于一個(gè)獨(dú)立事務(wù)的步驟〔工作邏輯單元或者LUW〕。例如,開發(fā)者必須問自己,是否需要在一個(gè)LUW中創(chuàng)立客戶然后在同一個(gè)LUW里創(chuàng)立銷售訂單。以比本地應(yīng)用更加精確和全面的方式處理錯(cuò)誤。34第一單元:介紹

第二課:介紹業(yè)務(wù)場景說明場景〔4〕-業(yè)務(wù)步驟必須決定場景的系統(tǒng)耦合是寬一些還是窄一些。應(yīng)該考慮諸如系統(tǒng)可用性、性能和場景的使用頻度等因素。應(yīng)該確定必須被定義的所有關(guān)鍵步驟。還應(yīng)該考慮場景能夠被哪些R/3版本支持。對于每個(gè)場景,必須確定一個(gè)責(zé)任人來確保場景正確和及時(shí)。35第一單元:介紹

第二課:介紹業(yè)務(wù)場景說明場景〔5〕-業(yè)務(wù)對象類型和BAPI在場景中的每個(gè)組件必須提供效勞,以便跨組件步驟可以被執(zhí)行。必須設(shè)計(jì)出如何在業(yè)務(wù)對象類型和它們的BAPI之間為效勞分發(fā)責(zé)任。例如,業(yè)務(wù)對象類型SalesOrder的BAPICreateFromData用來根據(jù)一個(gè)外部應(yīng)用在R/3系統(tǒng)中創(chuàng)立一個(gè)銷售訂單。36第一單元:介紹

第二課:介紹業(yè)務(wù)場景說明場景〔6〕-業(yè)務(wù)對象類型和BAPI對于每個(gè)組件,必須首先確定需要的業(yè)務(wù)對象類型。應(yīng)該考慮以下問題:在業(yè)務(wù)對象類型中封裝所需功能。這包括把整個(gè)系統(tǒng)拆分成獨(dú)立的職責(zé)。這個(gè)拆分和功能的封裝必須是顯式的并且完全區(qū)別開。是否業(yè)務(wù)對象類型已經(jīng)存在于這些職責(zé)中?是否設(shè)計(jì)模式已經(jīng)存在?找出是否問題已經(jīng)都被處理?例如,銷售訂單和采購訂單的表頭/行工程模式等。與其他業(yè)務(wù)對象類型劃清指責(zé)。確定在已定義責(zé)任上所提供的效勞。37第一單元:介紹

第二課:介紹業(yè)務(wù)場景說明場景〔7〕-業(yè)務(wù)對象類型和BAPI對于確定的每個(gè)業(yè)務(wù)對象類型,必須確定分配給它的效勞如何用BAPI實(shí)現(xiàn)。應(yīng)該考慮以下問題:每個(gè)效勞被一個(gè)或多個(gè)BAPI〔業(yè)務(wù)對象類型的方法〕實(shí)現(xiàn)。BAPI讓一個(gè)業(yè)務(wù)對象類型的功能可以使用。應(yīng)該能夠在單獨(dú)的或不同的場景中獨(dú)立的使用它們。為了讓BAPI在不同場景中使用更方便,BAPI處理應(yīng)該能夠根據(jù)應(yīng)用不同而各自分配BAPI參數(shù)和字段。注意這種類型的場景可以影響B(tài)API的粒度。

應(yīng)用系統(tǒng)的集成方式與不同前端的集成不太一樣。

對于應(yīng)用系統(tǒng)集成:應(yīng)用系統(tǒng)集成一般包含程序?qū)Τ绦虻耐ㄓ?、自由的異步耦合、大?shù)據(jù)量的交換。這種情況下,業(yè)務(wù)對象類型和BAPI的主要需求是高性能,例如,盡量減少調(diào)用次數(shù)。結(jié)果是由寬泛的BAPI來實(shí)現(xiàn)粗粒度的應(yīng)用。例如,程序自動(dòng)生成銷售訂單,程序用業(yè)務(wù)對象類型SalesOrder和BAPICreateFromData,完整的銷售訂單在發(fā)送系統(tǒng)中創(chuàng)立,然后發(fā)送給接收系統(tǒng)。38第一單元:介紹

第二課:介紹業(yè)務(wù)場景說明場景〔8〕-業(yè)務(wù)對象類型和BAPI對于確定的每個(gè)業(yè)務(wù)對象類型,必須確定分配給它的效勞如何用BAPI實(shí)現(xiàn)。應(yīng)該考慮以下問題:對于各種前端集成:各種前端的場景表現(xiàn)為人對機(jī)器的通訊、既可以同步也可以異步實(shí)現(xiàn)。業(yè)務(wù)對象類型和BAPI必須被構(gòu)在以確保伸縮性、可配置性和最少的錯(cuò)誤情況。結(jié)果是應(yīng)用的較好粒度,以符合R/3的會(huì)話過程。這個(gè)例子可以是在互聯(lián)網(wǎng)上交互式創(chuàng)立一個(gè)客戶銷售訂單,這個(gè)銷售訂單可以用業(yè)務(wù)對象類型SalesOrder的兩個(gè)方法CreateFromData和AddItem來創(chuàng)立,這里方法CreateFromData只創(chuàng)立訂單表頭,而方法AddItem添加新的銷售訂單行。這個(gè)場景必須構(gòu)造好,以便預(yù)先獲取所有BAPI調(diào)用所需的信息。如果有定制相關(guān)的BAPI,那么必須能同時(shí)導(dǎo)出定制設(shè)置。39第一單元:介紹

第二課:介紹業(yè)務(wù)場景定義場景先決條件在定義前必須完整描述場景,這個(gè)描述要包含實(shí)際定義的輸入信息。定義過程BAPI的整個(gè)開發(fā)過程都在模板控制的工程框架中執(zhí)行,以獲得BAPI的最大質(zhì)量、穩(wěn)定性和可用行。BAPI資源管理器在一個(gè)集成編程環(huán)境中提供了創(chuàng)立BAPI的所有工具和所需開發(fā)對象。對每個(gè)工程,有個(gè)工程模板引導(dǎo)一步一步的走過整個(gè)開發(fā)過程,并提供了所需開發(fā)工具和信息的直接瀏覽選項(xiàng)。在工程管理中,可以保存和刪除工程,還可以選擇其他用戶來編輯其他用戶管理的工程。更多訪問和使用這個(gè)工具的信息在課程《工具和命名規(guī)那么》中提供。40第一單元:介紹

第二課:介紹業(yè)務(wù)場景回憶場景在場景被轉(zhuǎn)換和具體定義開始和實(shí)現(xiàn)成BAPI前,應(yīng)該回憶這個(gè)場景。所有在BAPI開發(fā)和對質(zhì)量控制承擔(dān)責(zé)任的人都要參與回憶。為了讓回憶有意義,要答復(fù)以下問題:這個(gè)場景是否象方案中一樣有意義?場景描述中所需的全部任務(wù)是否都已經(jīng)完成?是否所有場景中的BAPI都平滑組合?只有當(dāng)成功完成回憶之后才可以開始BAPI的開發(fā)。41第一單元:介紹

第三課:介紹BAPI事務(wù)模型本課概覽讓每個(gè)場景自己的設(shè)備分別創(chuàng)立自己的功能,很多程序可能會(huì)創(chuàng)立很多相似卻又不完全相同的方法來滿足需要。如果功能是獨(dú)立的,或者不需要與整個(gè)處理配合,這是沒有問題的。然而,如果局部功能會(huì)成為過程的一局部,并且功能會(huì)以多種方法在很多時(shí)候被使用,功能就必須被構(gòu)造好,在清晰的、一致的和可靠的方法下執(zhí)行。事務(wù)模型是一個(gè)模板,可以用來指導(dǎo)一個(gè)事務(wù)中的組件如何配合。組件的列表、這些組件的順序、它們都做什么,這些因素共同決定了業(yè)務(wù)過程如何執(zhí)行。BAPI中的事務(wù)模型用來決定如何編寫B(tài)API。42第一單元:介紹

第三課:介紹BAPI事務(wù)模型本課目標(biāo)描述BAPI事務(wù)模型列出事務(wù)步驟和它們的時(shí)機(jī)業(yè)務(wù)例如如果沒有完全理解事務(wù)模型的事件順序,應(yīng)用就可能工作不正確甚至完全不工作。43第一單元:介紹

第三課:介紹BAPI事務(wù)模型事務(wù)和工作邏輯單元在用來開發(fā)BAPI的事務(wù)模型上下文中,一個(gè)事務(wù)表示一個(gè)過程步驟或者一個(gè)工作邏輯單元〔LUW〕。一個(gè)R/3LUW是包含在一個(gè)更新數(shù)據(jù)庫事務(wù)內(nèi)的所有步驟。ACID的原那么應(yīng)用于事務(wù)模型,意味著事務(wù)是:原子的:當(dāng)一個(gè)事務(wù)被調(diào)用,數(shù)據(jù)庫操作或者完全執(zhí)行或者完全不執(zhí)行。所有相關(guān)數(shù)據(jù)或者全部在數(shù)據(jù)庫中更改或者完全不變。一致的:如果事務(wù)被屢次調(diào)用,每個(gè)調(diào)用都有相同的結(jié)果。導(dǎo)入的數(shù)據(jù)都不會(huì)間接影響結(jié)果。獨(dú)立的:在兩個(gè)事務(wù)間不能有功能性依賴,一個(gè)事務(wù)絕對不能影響其他事務(wù)。持久的:修改不能被反轉(zhuǎn),事務(wù)不能被取消。44第一單元:介紹

第三課:介紹BAPI事務(wù)模型特性〔1〕-面向事務(wù)BAPI必須被實(shí)現(xiàn)才是事務(wù)性的,換句話說,它尊許ACID原那么。BAPI事務(wù)模型也必須允許用戶把多個(gè)BAPI合并到一個(gè)LUW中。這樣,BAPI事務(wù)模型就意味著各個(gè)獨(dú)立的BAPI都是事務(wù)性的,并且多個(gè)BAPI合并到一個(gè)LUW中是也要遵循ACID原那么。45第一單元:介紹

第三課:介紹BAPI事務(wù)模型特性〔2〕-客戶端的事務(wù)控制BAPI的事務(wù)模型必須給用戶提供顯式的事務(wù)控制。這樣,如果多個(gè)BAPI被一起調(diào)用,調(diào)用者可以決定何時(shí)執(zhí)行COMMITWORK〔或者ROLLBACKWORK〕。這意味著BAPI本身〔一般〕不能執(zhí)行COMMITWORK命令。以下限制應(yīng)用于多個(gè)BAPI合并到一個(gè)LUW的情況:如果一個(gè)實(shí)例被寫B(tài)API創(chuàng)立、修改或刪除,那么讀BAPI只能訪問COMMITWORK發(fā)生前最近的數(shù)據(jù)。不允許在一個(gè)LUW對相同實(shí)例執(zhí)行兩次寫訪問。例如,不能在一個(gè)LUW中先創(chuàng)立然后在修改對象。但可以在一個(gè)LUW中創(chuàng)立相同對象類型的多個(gè)實(shí)例。46第一單元:介紹

第三課:介紹BAPI事務(wù)模型特性〔3〕-通過效勞BAPI的事務(wù)處理職務(wù)在使用了COMMITWORK命令或者ROLLBACKWORK命令之后完成。BAPI事務(wù)必須在調(diào)用了BAPIBapiService.TransactionCommit()或者BapiService.TransactionRollback()之后結(jié)束。注意:事務(wù)控制BAPIBapiService.TransactionCommit和BapiService.TransactionRollback只在4.5版后可用,在4.0版,使用BAPI_TRANSACTION_COMMIT和BAPI_TRANSACTION_ROLLBACK.這個(gè)函數(shù)模塊的結(jié)果同樣是調(diào)用BAPI。47第一單元:介紹

第三課:介紹BAPI事務(wù)模型特性〔4〕-更新任務(wù)的使用修改數(shù)據(jù)庫的操作必須通過更新過程來執(zhí)行,否那么,就可能在RFC調(diào)用中發(fā)生未檢查或者不希望的數(shù)據(jù)庫提交。另外,對BAPI的調(diào)用絕對不能觸發(fā)獨(dú)立于BAPI之外的更多LUW。因此,BAPI中不能包含以下命令:CALLTRANSACTIONSUBMITREPORTSUBMITREPORTANDRETURN注意,如果BAPI執(zhí)行了COMMITWORK命令,就必須在BAPI文檔中說明。SAP提供的BAPI也在SAP網(wǎng)上說明,參見Notes131838〔4.5版以前〕。48第一單元:介紹

第三課:介紹BAPI事務(wù)模型不帶提交的BAPI事務(wù)模型〔1〕下面的例子演示了外部系統(tǒng)調(diào)用BAPI修改R/3系統(tǒng)的數(shù)據(jù),說明了這種事務(wù)模型是如何影響B(tài)API開發(fā)的。例如,這可以是一個(gè)用VisualBasic實(shí)現(xiàn)的事務(wù),而只有R/3系統(tǒng)的數(shù)據(jù)被修改了。在外部系統(tǒng)登錄在R/3系統(tǒng)的整個(gè)過程中,RFC連接保持活潑,以防止重復(fù)的連接和斷開連接。當(dāng)RFC連接建立以后,從本質(zhì)上說RFC調(diào)用并不會(huì)比在R/3系統(tǒng)中直接調(diào)用函數(shù)模塊占用更多的CPU時(shí)間。49第一單元:介紹

第三課:介紹BAPI事務(wù)模型不帶提交的BAPI事務(wù)模型〔2〕程序的處理流程包括以下步驟:登錄〔源代碼〕調(diào)用BAPI〔源代碼〕調(diào)用BAPI〔源代碼〕調(diào)用BAPIBapiService.TransactionCommit()〔源代碼〕調(diào)用BAPI登出50第一單元:介紹

第三課:介紹BAPI事務(wù)模型不帶提交的BAPI事務(wù)模型〔3〕上圖描繪了前頁的調(diào)用過程。VisualBasicR/3(ABAP)登錄BAPI調(diào)用BAPI調(diào)用調(diào)用BAPIBapiService.TransactionCommit()工作邏輯單元提交工作登出時(shí)間RFC會(huì)話51第一單元:介紹

第三課:介紹BAPI事務(wù)模型帶提交的BAPI事務(wù)模型〔舊〕〔1〕在以前的事務(wù)模型中還有一種每個(gè)事務(wù)調(diào)用BAPI的方法,這時(shí)BAPI只能同步調(diào)用。一個(gè)BAPI調(diào)用本質(zhì)上是潛在的允許RFC的函數(shù)模塊的調(diào)用。這個(gè)程序的過程流包括以下步驟。登錄〔源代碼〕調(diào)用BAPI讀取和/或修改數(shù)據(jù)〔源代碼〕調(diào)用BAPI讀取和/或修改數(shù)據(jù)〔源代碼〕登出52第一單元:介紹

第三課:介紹BAPI事務(wù)模型帶提交的BAPI事務(wù)模型〔舊〕〔2〕上圖描繪了前頁的調(diào)用過程,該過程僅在R/33.1版實(shí)現(xiàn),現(xiàn)在已經(jīng)不需要掌握了。VisualBasicR/3(ABAP)登錄BAPI調(diào)用〔函數(shù)模塊的RFC調(diào)用〕工作邏輯單元提交工作登出時(shí)間RFC會(huì)話工作邏輯單元工作邏輯單元提交工作提交工作53第一單元:介紹

第四課:介紹工具和命名規(guī)那么本課概覽一旦完成了BAPI的概念設(shè)計(jì),關(guān)于SAP的信息現(xiàn)在就進(jìn)入到實(shí)現(xiàn)階段。例如,要決定SAP的數(shù)據(jù)結(jié)構(gòu)和為BAPI參數(shù)實(shí)現(xiàn)程序邏輯。本課就提供相關(guān)組件和工具的概覽。本課目標(biāo)找到和訪問開發(fā)BAPI所需的工具使用現(xiàn)有工具定位現(xiàn)存的BAPI說出與BAPI及相關(guān)組件有關(guān)的命名規(guī)那么54第一單元:介紹

第四課:介紹工具和命名規(guī)那么業(yè)務(wù)例如現(xiàn)在就要用BAPI開發(fā)一個(gè)業(yè)務(wù)場景了。在開始以前,需要使用一些有用的工具來找到現(xiàn)存的BAPI以減少開發(fā)時(shí)間。實(shí)現(xiàn)過程

BAPI在業(yè)務(wù)對象知識(shí)庫〔BOR〕中做為SAP業(yè)務(wù)對象類型的API方法被定義。業(yè)務(wù)對象類型和它們的BAPI在BOR中描述和創(chuàng)立。BAPI通常被實(shí)現(xiàn)為允許RFC的函數(shù)模塊,這些函數(shù)模塊在函數(shù)制作器中創(chuàng)立和描述。BAPI所使用的數(shù)據(jù)結(jié)構(gòu)的定義和描述在ABAP字典中定義。55第一單元:介紹

第四課:介紹工具和命名規(guī)那么業(yè)務(wù)例如〔續(xù)〕過程流

ABAP工作臺(tái)中工具的結(jié)構(gòu)決定了BAPI如何實(shí)現(xiàn)。所有三個(gè)步驟在相應(yīng)工具中創(chuàng)立時(shí)都會(huì)伴隨有文檔。所有必須的工作步驟都可以從BAPI資源管理器開始。

用來開發(fā)BAPI最重要的工具是BAPI資源管理器、ABAP字典、函數(shù)制作器和業(yè)務(wù)對象知識(shí)庫。ABAP工作臺(tái)業(yè)務(wù)對象知識(shí)庫函數(shù)制作器ABAP字典數(shù)據(jù)結(jié)構(gòu)的定義和描述函數(shù)模塊1函數(shù)模塊2業(yè)務(wù)對象類型方法1方法256第一單元:介紹

第四課:介紹工具和命名規(guī)那么BAPI資源管理器〔1〕BAPI資源管理器是R/3系統(tǒng)為開發(fā)BAPI和用這些BAPI進(jìn)行開發(fā)的工作環(huán)境。使用BAPI資源管理器從4.6A版開始出現(xiàn),增強(qiáng)或替換了以前版本中的BAPI瀏覽器。BAPI資源管理器使用了最新的HTML控件技術(shù)。為了使用BAPI資源管理器,必須使用4.6A以后版本的SAPgui,如果是用以前的版本,那么自動(dòng)調(diào)用BAPI瀏覽器。57第一單元:介紹

第四課:介紹工具和命名規(guī)那么BAPI資源管理器〔2〕使用〔續(xù)〕從BAPI資源管理器中,應(yīng)用開發(fā)這可以在BOR中獲得BAPI狀態(tài)的概覽。既可以在BOR中的組件層級(jí)結(jié)構(gòu)中相關(guān)對象或接口類型的位置中確定BAPI,也可以按照字母順序來查找。BAPI資源管理器提供了使用某個(gè)特定BAPI所需的全部信息。BAPI資源管理器在SAP公司內(nèi)部用來開發(fā)BAPI,也可以被客戶和合作伙伴使用。BAPI資源管理器是一個(gè)集成編程環(huán)境,提供了各種工具可以用來創(chuàng)立BAPI和所需開發(fā)對象。58第一單元:介紹

第四課:介紹工具和命名規(guī)那么BAPI資源管理器〔3〕結(jié)構(gòu)BAPI資源管理器被分為兩個(gè)區(qū)域:層級(jí)顯示

所有定義了BAPI的業(yè)務(wù)對象類型或者接口類型都顯示在這里。工作區(qū)

這里可以選擇層級(jí)顯示區(qū)中的開發(fā)對象的細(xì)節(jié)和文檔。用來開發(fā)BAPI的工具也可以從工作區(qū)中找到。訪問調(diào)用BAPI資源管理器,使用路徑“工具-業(yè)務(wù)框架-BAPI資源管理器”,或者直接用事務(wù)碼BAPI。59第一單元:介紹

第四課:介紹工具和命名規(guī)那么BAPI資源管理器〔4〕使用顯示功能所有定義了BAPI的業(yè)務(wù)對象類型或接口類型都顯示在BAPI資源管理器的層級(jí)顯示區(qū)。使用層級(jí)顯示區(qū)的字母表派訊或者層級(jí)排序選項(xiàng)卡,可以選擇如何在BOR中顯示業(yè)務(wù)對象類型和接口類型。展開相關(guān)節(jié)點(diǎn)就可以查看到每個(gè)獨(dú)立BAPI的參數(shù)。下面提供的顯示功能就可以在BOR中直接訪問BAPI及其細(xì)節(jié)。60第一單元:介紹

第四課:介紹工具和命名規(guī)那么BAPI資源管理器〔5〕顯示細(xì)節(jié)在工作區(qū)的“細(xì)節(jié)”選項(xiàng)卡,可以看到選中開發(fā)對象的技術(shù)細(xì)節(jié)。通??梢栽诩?xì)節(jié)視圖雙擊某個(gè)字段到達(dá)開發(fā)環(huán)境或顯示更多信息。例如,在某個(gè)特定方法的細(xì)節(jié)顯示時(shí),雙擊函數(shù)模塊的名字就會(huì)翻開函數(shù)制作器。顯示和打印文檔開發(fā)對象的文檔會(huì)出現(xiàn)在工作區(qū)的“文檔”選項(xiàng)卡。每個(gè)參數(shù)字段的數(shù)據(jù)元素文檔包含在BAPI參數(shù)的文檔中。如果在前端瀏覽器安裝了InternetExplorer4.0以上版本,就可以使用標(biāo)準(zhǔn)SAPgui的打印功能來打印文檔。61第一單元:介紹

第四課:介紹工具和命名規(guī)那么BAPI資源管理器〔6〕修改層級(jí)顯示的級(jí)別組件層級(jí)可能太深,為了更容易的找到某個(gè)業(yè)務(wù)對象類型及其BAPI,可以使用菜單“轉(zhuǎn)到-變更層級(jí)”來限制顯示兩層。指定要顯示的BAPI默認(rèn)只會(huì)顯示業(yè)務(wù)對象類型中發(fā)布的BAPI。選擇菜單“轉(zhuǎn)到-要顯示的BAPI”就可以顯示BOR中包含的所有BAPI,包括SAP接口類型的BAPI和未發(fā)布的BAPI。業(yè)務(wù)對象類型和接口類型用不同符號(hào)區(qū)分,要顯示這個(gè),選擇菜單“轉(zhuǎn)到-顯示圖例”。62第一單元:介紹

第四課:介紹工具和命名規(guī)那么BAPI資源管理器〔7〕查找BAPI使用標(biāo)準(zhǔn)功能查找和查找下一個(gè),就可以用特定條件〔包括通配符*〕來查找顯示的業(yè)務(wù)對象類型或接口類型,例如:對象名,BusinessProcess對象類型,SAP0001對象描述,Plan*方法名,GetList方法描述,Objectlist*63第一單元:介紹

第四課:介紹工具和命名規(guī)那么BAPI資源管理器〔8〕使用工具和工程工作區(qū)的“工具”和“工程”選項(xiàng)卡主要用來開發(fā)BAPI。根據(jù)選中的開發(fā)對象,在“工具”選項(xiàng)卡會(huì)提供以下工具和導(dǎo)航選項(xiàng):直接訪問業(yè)務(wù)對象制作器、函數(shù)制作器和ABAP字典。使用特定的選擇條件列出BAPI的生成者。在“工程”選項(xiàng)卡,可以創(chuàng)立工程來幫助跟蹤開發(fā)過程并生成文檔:實(shí)現(xiàn)新的BAPI修改發(fā)布的BAPI創(chuàng)立新的業(yè)務(wù)對象類型對于每個(gè)工程,有個(gè)工程表格來一步一步引導(dǎo)你完成整個(gè)開發(fā)過程,并提供所需的開發(fā)工具和信息。64第一單元:介紹

第四課:介紹工具和命名規(guī)那么ABAP字典〔1〕所有系統(tǒng)中使用的數(shù)據(jù)定義都可以在ABAP字典中描述和管理。新的或修改的信息會(huì)自動(dòng)讓所有系統(tǒng)組件使用,確保數(shù)據(jù)完整性、一致性和平安性。實(shí)現(xiàn)步驟的第一步就是在ABAP字典中定義所有的數(shù)據(jù)結(jié)構(gòu)〔包括域和數(shù)據(jù)元素〕。這些數(shù)據(jù)結(jié)構(gòu)是要實(shí)現(xiàn)的BAPI的必要參數(shù)??梢詮腂API資源管理器中的工程表格中訪問ABAP字典,也可以使用菜單或事務(wù)碼SE11。65第一單元:介紹

第四課:介紹工具和命名規(guī)那么ABAP字典〔2〕使用約定為了確保BAPI的可用性標(biāo)準(zhǔn),以下約定是重要的:每個(gè)參數(shù)必須引用ABAP字典中的數(shù)據(jù)結(jié)構(gòu)。對于結(jié)構(gòu)參數(shù),通常對應(yīng)完整的BAPI數(shù)據(jù)結(jié)構(gòu)。如果參數(shù)只包含一個(gè)字段,它必須引用BAPI結(jié)構(gòu)的一個(gè)字段。必須為BAPI創(chuàng)立不同于R/3應(yīng)用一般使用的數(shù)據(jù)結(jié)構(gòu)的獨(dú)立數(shù)據(jù)結(jié)構(gòu)。原因是:當(dāng)BAPI發(fā)布后,所包含的結(jié)構(gòu)都凍結(jié)了,如果以后想修改結(jié)構(gòu),就會(huì)出現(xiàn)限制。在BAPI數(shù)據(jù)結(jié)構(gòu)中一定不能使用APPEND和INCLUDE,這是因?yàn)槿绻鸅API數(shù)據(jù)結(jié)構(gòu)被更改了,APPEND和INCLUDE可能造成不兼容。在字段中盡量使用現(xiàn)有的核心數(shù)據(jù)元素和域。66第一單元:介紹

第四課:介紹工具和命名規(guī)那么ABAP字典〔3〕使用約定〔續(xù)〕必須為域定義單值或值表,以便使用F4搜索幫助。必須為數(shù)據(jù)結(jié)構(gòu)/數(shù)據(jù)元素定義有用的輸入幫助〔可以被效勞BapiHelpvalues.GetList使用〕。為此,必須在BAPI結(jié)構(gòu)的字段中指定外鍵。如果在字段的域定義了值表,外鍵也必須定義。內(nèi)部數(shù)據(jù)格式用于所有參數(shù)字段。如果在數(shù)據(jù)庫中定義了外部鍵和內(nèi)部鍵,外部鍵總是要用在BAPI接口。對于跟ISO〔國家、語言、測量單位、金額〕相關(guān)的字段,必須要提供附加的ISO代碼字段。所有金額字段使用域BAPICURR,特殊情況下也可以使用BAPICUREXT。67第一單元:介紹

第四課:介紹工具和命名規(guī)那么ABAP字典〔4〕使用約定〔續(xù)2〕必須總是使用句號(hào)做為小數(shù)點(diǎn)。所有金額和測量數(shù)據(jù)必須在正確位置點(diǎn)小數(shù)點(diǎn),因?yàn)锽API總是使用標(biāo)準(zhǔn)的逗號(hào)數(shù)量格式。要轉(zhuǎn)換金額數(shù)量時(shí),使用函數(shù)模塊:BAPI_CURRENCY_CONV_TO_EXTERNAL和BAPI_CURRENCY_CONV_TO_INTERNAL。對數(shù)量字段,參考字段或參考表必須正確的設(shè)置在測量單位字段中。所有日期字段的數(shù)據(jù)元素必須是YYYYMMDD的格式。數(shù)據(jù)結(jié)構(gòu)中的單獨(dú)字段最多250個(gè)字節(jié),這樣才可以從BAPI生成異步通訊的IDoc。68第一單元:介紹

第四課:介紹工具和命名規(guī)那么函數(shù)制作器用函數(shù)制作器可以創(chuàng)立、實(shí)現(xiàn)、測試函數(shù)模塊和編寫它的文檔。函數(shù)制作器包含一個(gè)函數(shù)庫,做為所有函數(shù)模塊的中心存儲(chǔ)??梢詮腂API資源管理器或菜單訪問,也可以用事務(wù)碼SE37。定義了參數(shù)后,函數(shù)模塊就可以用于要?jiǎng)?chuàng)立的BAPI。當(dāng)創(chuàng)立函數(shù)模塊時(shí),必須遵守以下規(guī)那么:所有屬于一個(gè)SAP業(yè)務(wù)對象類型的BAPI必須創(chuàng)立在一個(gè)函數(shù)組里。只有在非常特殊的情況下才不這么做,即屬于一個(gè)SAP業(yè)務(wù)對象類型的BAPI偶爾可以放在多個(gè)函數(shù)組里。但是,屬于不同SAP業(yè)務(wù)對象類型的BAPI一定不能放在一個(gè)函數(shù)組里。69第一單元:介紹

第四課:介紹工具和命名規(guī)那么業(yè)務(wù)對象知識(shí)庫〔1〕業(yè)務(wù)對象知識(shí)庫〔BOR〕包含了SAP業(yè)務(wù)對象類型和SAP接口類型以及它們的組件,例如方法、屬性和時(shí)間。BAPI在BOR中定義為SAP業(yè)務(wù)對象類型的方法。BOR為SAP業(yè)務(wù)對象類型及其BAPI提供以下功能:允許以面向?qū)ο蟮挠^點(diǎn)看待R/3系統(tǒng)的數(shù)據(jù)和處理。R/3應(yīng)用功能用SAP業(yè)務(wù)對象的方法〔BAPI〕來訪問。實(shí)現(xiàn)信息被封裝了,用戶只能看見方法的接口功能。使用組件層級(jí)來安排各種接口。功能就可以被快速簡單的被搜索和取得。70第一單元:介紹

第四課:介紹工具和命名規(guī)那么業(yè)務(wù)對象知識(shí)庫〔2〕BOR提供的功能〔續(xù)〕以發(fā)行更新方式管理BAPI。在BOR中記錄增加的參數(shù)來制作BAPI接口增強(qiáng)。以前的接口版本就可以在任何時(shí)候被重建。當(dāng)BAPI創(chuàng)立后,新BAPI的發(fā)行版就記錄在BOR中。當(dāng)創(chuàng)立了接口參數(shù)時(shí)也一樣。函數(shù)制作器管理BAPI所依賴的函數(shù)模塊的版本控制。確保接口的穩(wěn)定。任何在BOR中的接口修改都自動(dòng)檢查與ABAP字典中相關(guān)的開發(fā)對象的語法兼容性。首先必須定義BAPI的名字、參數(shù)和特性,并且決定BAPI所基于的ABAP字典對象的接口。只有完成了這些,才可以在函數(shù)制作器中實(shí)現(xiàn)BAPI和在BOR中創(chuàng)立所需編程對象。71第一單元:介紹

第四課:介紹工具和命名規(guī)那么業(yè)務(wù)對象知識(shí)庫〔3〕在BOR中查找相關(guān)SAP業(yè)務(wù)對象類型通過路徑“工具-業(yè)務(wù)框架-BAPI開發(fā)-業(yè)務(wù)對象制作器”,事務(wù)碼〔SWO1〕翻開業(yè)務(wù)對象制作器。如果知道SAP業(yè)務(wù)對象類型或者接口類型的技術(shù)名稱,可以在業(yè)務(wù)對象制作器的初始屏幕輸入并直接訪問。否那么,就選擇業(yè)務(wù)對象知識(shí)庫。要顯示對象類型,在下一個(gè)對話框中選擇是顯示所有對象類型還是只顯示業(yè)務(wù)對象類型。要顯示SAP接口類型,在下一個(gè)對話框選擇“其他設(shè)置”,然后選擇“接口”。就顯示應(yīng)用層級(jí)。在應(yīng)用層級(jí)中查找所需的業(yè)務(wù)對象類型或接口類型,并且選中翻開它。72第一單元:介紹

第四課:介紹工具和命名規(guī)那么其他工具〔1〕盡管上述工具在BAPI開發(fā)中最為重要,但是經(jīng)常還會(huì)使用其他的工具,最常用的有下面這些:知識(shí)庫信息系統(tǒng) 可以用知識(shí)庫信息系統(tǒng)來執(zhí)行對R/3系統(tǒng)中大多數(shù)對象的一般查找。要訪問知識(shí)庫信息系統(tǒng),在ABAP工作臺(tái)中選擇菜單“概覽-知識(shí)庫信息系統(tǒng)”或使用事務(wù)碼SE84。這個(gè)工具可以不必訪問相關(guān)開發(fā)工具的首頁就查找諸如函數(shù)模塊或字典結(jié)構(gòu)等對象。這個(gè)工具最強(qiáng)大的功能是使用屬性或一般特征做為查詢條件。73第一單元:介紹

第四課:介紹工具和命名規(guī)那么其他工具〔2〕數(shù)據(jù)瀏覽器 使用數(shù)據(jù)瀏覽器來訪問表?xiàng)l目,而不用ABAP程序。用數(shù)據(jù)瀏覽器可以顯示表記錄、顯示表的所有字段值和相關(guān)文本字段值,還能從表?xiàng)l目找到它們相關(guān)的檢查表?xiàng)l目。 要翻開數(shù)據(jù)瀏覽器,從工作臺(tái)初始屏幕選擇“概覽-數(shù)據(jù)瀏覽器”。還可以從知識(shí)庫瀏覽器的“環(huán)境”菜單或者ABAP編輯器的“實(shí)用工具”菜單翻開。事務(wù)碼SE16。消息維護(hù) 消息可以讓程序與用戶進(jìn)行溝通。通常在用戶從屏幕輸入錯(cuò)誤信息或者說明請求操作的結(jié)果時(shí)使用。 從ABAP編輯器選擇“轉(zhuǎn)到-消息”,出現(xiàn)維護(hù)消息屏幕,缺省情況下顯示關(guān)聯(lián)到當(dāng)前程序的消息類。系統(tǒng)路徑是“工具-ABAP工作臺(tái)-開發(fā)-編程環(huán)境-消息”。事務(wù)碼SE91。74第一單元:介紹

第四課:介紹工具和命名規(guī)那么命名規(guī)那么〔1〕以下命名規(guī)那么都很重要。如果IBU〔這是哪三個(gè)單詞的縮寫?誰知道請告訴我〕、合作伙伴和客戶要?jiǎng)?chuàng)立數(shù)據(jù)結(jié)構(gòu),都必須遵守SAP提供的命名空間。BAPI數(shù)據(jù)結(jié)構(gòu)所有數(shù)據(jù)結(jié)構(gòu)名必須用<namespace>BAPI開始。BAPI結(jié)構(gòu)名稱應(yīng)該盡量有意義。如果數(shù)據(jù)結(jié)構(gòu)用于ALE集成,那么BAPI結(jié)構(gòu)名字不能長于27個(gè)字符,否那么相關(guān)片斷自動(dòng)生成的名字會(huì)太長,而必須在以后手工修改。75第一單元:介紹

第四課:介紹工具和命名規(guī)那么命名規(guī)那么〔2〕字段結(jié)構(gòu)中的字段必須用最長30個(gè)字符的有意義的英文名字。必須為每個(gè)數(shù)據(jù)元素定義最長30個(gè)字符的有意義的英文字段名〔顯示文字〕。函數(shù)模塊所有函數(shù)模塊必須遵守以下命名標(biāo)準(zhǔn):<namespace>BAPI_<businessobject>_<method>。最多允許30個(gè)字符,如果需要的話,可以縮寫名字,但是必須遵守上述規(guī)那么。必須能夠識(shí)別出業(yè)務(wù)對象類型。76第二單元:BAPI根底

單元概覽與標(biāo)準(zhǔn)函數(shù)模塊不同,BAPI具有必須遵守的充分結(jié)構(gòu)化的組件規(guī)那么。它們還必須特別考慮諸如錯(cuò)誤處理、數(shù)量和金額轉(zhuǎn)換處理等事項(xiàng)。還必須限定BAPI的唯一性。本單元將初步揭示各種結(jié)構(gòu)化組件和特殊本卷須知。單元內(nèi)容BAPI根本的結(jié)構(gòu)組件BAPI根本的特殊本卷須知77第二單元:BAPI根底

學(xué)習(xí)本單元后應(yīng)該可以定義與BAPI接口相關(guān)的組件概要描述用來書寫B(tài)API源代碼的結(jié)構(gòu)化組件解釋BAPI文檔的重要意義解釋BAPI中用到的各種類型的參數(shù)描述在錯(cuò)誤處理中使用的RETURN結(jié)構(gòu)說明使用數(shù)量和金額字段轉(zhuǎn)換的重要性解釋一些BAPI中的限制78第二單元:BAPI根底

第一課:BAPI根本結(jié)構(gòu)化組件本課概覽定義BAPI及其接口本課目標(biāo)定義與BAPI接口關(guān)聯(lián)的組件描繪在書寫B(tài)API源代碼時(shí)所用的結(jié)構(gòu)化組件解釋BAPI文檔的重要意義業(yè)務(wù)例如你是一名銷售人員,需要獲得客戶及其聯(lián)系方式的清單。為此,需要一個(gè)開發(fā)者創(chuàng)立一個(gè)BAPI。在他們創(chuàng)立BAPI前,必須考慮一系列的問題。79第二單元:BAPI根底

第一課:BAPI根本結(jié)構(gòu)化組件定義接口〔1〕要定義BAPI的接口參數(shù),需要做兩件事:1、需要檢查所使用的SAP業(yè)務(wù)對象的鍵字段,并在BAPI接口中說明它們將如何被使用。SAP業(yè)務(wù)對象的鍵字段是最重要的一些BAPI參數(shù)。

如果調(diào)用程序把鍵值傳遞給BAPI,那么鍵字段必須在BAPI的函數(shù)模塊中被設(shè)置成一個(gè)輸入?yún)?shù)。這樣就可以唯一確定業(yè)務(wù)對象的某個(gè)特定實(shí)例。例如,這可能是BAPISalesOrder中的銷售憑證的號(hào)碼。如果想要?jiǎng)?chuàng)立自己的業(yè)務(wù)對象,就必須知道哪些因素可能會(huì)在BAPI中決定鍵字段。80第二單元:BAPI根底

第一課:BAPI根本結(jié)構(gòu)化組件定義接口〔2〕2、指定其他數(shù)據(jù)都對應(yīng)于BAPI的輸入、輸出或表參數(shù)。

必須創(chuàng)立一個(gè)輸出參數(shù)RETURN,用來把消息傳回給調(diào)用程序。例如,想要讀取SAP業(yè)務(wù)對象債權(quán)人的數(shù)據(jù),就必須從調(diào)用程序接收債權(quán)人的ID和公司代碼。可能會(huì)需要接收一般細(xì)節(jié)、特殊細(xì)節(jié)和銀行細(xì)節(jié)。要在BAPI接口中描繪上述需求,就必須在BAPI對應(yīng)的函數(shù)模塊中設(shè)置以下參數(shù):鍵字段CreditorID做為輸入?yún)?shù)公司代碼做為輸入?yún)?shù)RETURN返回參數(shù)向調(diào)用程序報(bào)告消息債權(quán)人的一般信息參數(shù)債權(quán)人的特殊信息參數(shù)債權(quán)人的銀行信息參數(shù)81第二單元:BAPI根底

第一課:BAPI根本結(jié)構(gòu)化組件源代碼〔1〕準(zhǔn)備書寫B(tài)API的代碼時(shí),必須遵守一些重要的方針。下面是局部最重要的:BAPI一定不能調(diào)用COMMITWORK命令。這會(huì)有助于在更新數(shù)據(jù)庫時(shí)最小化鎖定時(shí)間,還會(huì)降低數(shù)據(jù)庫鎖的持續(xù)時(shí)間。BAPI一定不能包含任何CALLTRANSACTION、SUBMITREPORT或SUBMITREPORTANDRETURN命令。BAPI一定不能處理任何屏幕輸出。盡量少使用那些依賴于以前數(shù)據(jù)庫COMMIT的讀取事務(wù),防止等待以前更新所產(chǎn)生的時(shí)間損失。接下頁82第二單元:BAPI根底

第一課:BAPI根本結(jié)構(gòu)化組件源代碼〔2〕當(dāng)處理大批量數(shù)據(jù)時(shí),ABAP程序用SAPgui做為前端,這意味著大量數(shù)據(jù)保存在應(yīng)用效勞器上,并且只有顯示的數(shù)據(jù)被發(fā)送給前端。用VisualBasic,所有數(shù)據(jù)會(huì)被發(fā)送給客戶端系統(tǒng),而不會(huì)保存在應(yīng)用效勞器上,這會(huì)增加網(wǎng)絡(luò)負(fù)載和客戶端系統(tǒng)的內(nèi)存占用。下面方法可以提升BAPI的性能:只使用完整的WHERE條件來最小化被傳輸?shù)臄?shù)據(jù)數(shù)量防止不必要的數(shù)據(jù)庫訪問利用數(shù)組不要在運(yùn)行時(shí)生成程序83第二單元:BAPI根底

第一課:BAPI根本結(jié)構(gòu)化組件文檔〔1〕BAPI是R/3系統(tǒng)的業(yè)務(wù)接口,用戶不需要必須十分了解R/3系統(tǒng)和R/3開發(fā)環(huán)境。文檔必須提供足夠的細(xì)節(jié)信息,讓熟悉業(yè)務(wù)背景但不熟悉R/3系統(tǒng)的外部開發(fā)者能夠使用BAPI。BAPI的文檔包含四個(gè)方面:1、業(yè)務(wù)對象類型文檔。BAPI資源管理器包含業(yè)務(wù)對象中每個(gè)工程的非常詳細(xì)的文檔,包括字段、方法、結(jié)構(gòu)等。如果雙擊左邊窗口的某一項(xiàng),并且選擇右邊窗口的“文檔”選項(xiàng)卡,就會(huì)獲得該對象的細(xì)節(jié)信息。84第二單元:BAPI根底

第一課:BAPI根本結(jié)構(gòu)化組件文檔〔2〕2、方法文檔。因?yàn)闃I(yè)務(wù)對象的方法是函數(shù)模塊,因此要在函數(shù)制作器里書寫這些文檔。這個(gè)文檔的意圖是說明方法究竟能做些什么。文檔應(yīng)該能夠幫助客戶確定是否一個(gè)方法能夠執(zhí)行所需任務(wù)和答復(fù)以下問題:這個(gè)BAPI的業(yè)務(wù)功能是什么,可以用于什么情況?這個(gè)BAPI確實(shí)切功能是什么?有沒有特別重要的限制,就是說,這個(gè)BAPI不能做什么?用這個(gè)BAPI需要特別注意的事情,例如,使用這個(gè)BAPI是否需要特別授權(quán)?這個(gè)BAPI與其他BAPI有何依賴關(guān)系,以及獨(dú)立的方法參數(shù)間有何依賴關(guān)系?BAPI是否包含COMMITWORK命令?85第二單元:BAPI根底

第一課:BAPI根本結(jié)構(gòu)化組件文檔〔3〕3、BAPI參數(shù)文檔。各個(gè)參數(shù)的文檔寫在函數(shù)制作器的相關(guān)函數(shù)模塊中。參數(shù)文檔應(yīng)該答復(fù)以下問題:參數(shù)是做什么用的?哪些是強(qiáng)制的參數(shù)?參數(shù)的缺省值是什么?如果沒有確定的值,該如何做?哪些返回碼需要直接返回給調(diào)用程序或者需要通過RETURN參數(shù)間接返回?如果BAPI中止,是否需要做為異常來執(zhí)行數(shù)據(jù)庫回滾?如果是,就必須在文檔的返回參數(shù)中說明這個(gè)過程。在擴(kuò)展參數(shù)〔擴(kuò)展輸入ExtensionIn、擴(kuò)展輸出ExtensionOut〕的文檔中是否列出了所有的BAPI表擴(kuò)展?86第二單元:BAPI根底

第一課:BAPI根本結(jié)構(gòu)化組件文檔〔4〕4、數(shù)據(jù)元素文檔。調(diào)用程序可以使用效勞BAPIBapiService.FieldHelpGetDocu來調(diào)用BAPI參數(shù)中的字段的數(shù)據(jù)元素文檔〔F1幫助〕。由于這個(gè)原因,必須為每個(gè)BAPI參數(shù)中的字段編寫數(shù)據(jù)元素文檔。數(shù)據(jù)元素文檔在數(shù)據(jù)字典中編寫。注意,確保函數(shù)模塊和參數(shù)文檔必須保存在活動(dòng)版本中,這樣才會(huì)顯示在翻譯者的工作列表中。87第二單元:BAPI根底

第二課:BAPI根本特殊本卷須知本課概覽本課討論一些關(guān)于BAPI的特殊本卷須知。還要討論一些BAPI中需要使用的各種參數(shù),包括返回參數(shù)、擴(kuò)展參數(shù)和選擇參數(shù)。本課還解釋了在BAPI中使用RETURN參數(shù)執(zhí)行的標(biāo)準(zhǔn)錯(cuò)誤處理。本課包含了在為BAPI的金額和數(shù)量字段傳入傳出數(shù)據(jù)時(shí)執(zhí)行的轉(zhuǎn)換。還解釋了一些BAPI的限制。88第二單元:BAPI根底

第二課:BAPI根本特殊本卷須知本課目標(biāo)解釋BAPI中使用的各種類型的參數(shù)描繪用RETURN結(jié)構(gòu)處理錯(cuò)誤的方法說明使用數(shù)量和金額字段轉(zhuǎn)換的重要性解釋一些BAPI的限制業(yè)務(wù)例如一個(gè)客戶以為單位是英寸,就輸入了24,但是實(shí)際是英尺,這會(huì)造成物料數(shù)量的夸大。此外,如果客戶輸入了可能造成錯(cuò)誤消息的值,就需要有個(gè)方法來把錯(cuò)誤消息返回給客戶。89第二單元:BAPI根底

第二課:BAPI根本特殊本卷須知確定參數(shù)在所有BAPI中都有一些標(biāo)準(zhǔn)的參數(shù)提供相同或類似的數(shù)據(jù),如果可能的話就應(yīng)該在所有BAPI中以相同方式實(shí)現(xiàn)它們。重要的一些包括:RETURN參數(shù)

用來返回消息給調(diào)用系統(tǒng)。它們提供了BAPI調(diào)用中一致的錯(cuò)誤處理過程。擴(kuò)展參數(shù)

允許應(yīng)用程序員使用預(yù)編些好的用戶出口來增強(qiáng)BAPI接口,而無需進(jìn)行修正。選擇參數(shù)

用來查找業(yè)務(wù)對象的特定實(shí)例,例如,BAPIGetList,允許BAPI調(diào)用者指定適當(dāng)?shù)牟樵儣l件。90第二單元:BAPI根底

第二課:BAPI根本特殊本卷須知錯(cuò)誤處理〔RETURN〕由于歷史的原因,BAPI的RETURN會(huì)有BAPIRETURN、BAPIRET1、BAPIRET2等幾個(gè)不同的結(jié)構(gòu),但是從4.5A版以后,就必須使用BAPIRET1或BAPIRET2。RETURN結(jié)構(gòu)的主要字段有:TYPE〔消息類型:(S)uccess成功、(E)rror錯(cuò)誤、(W)aring警告、(I)nformation消息〕ID〔消息類〕NUMBER〔消息號(hào)〕MESSAGE〔消息文本〕MESSAGE_V1-V4〔消息變量〕91第二單元:BAPI根底

第二課:BAPI根本特殊本卷須知金額和數(shù)量的轉(zhuǎn)換〔1〕在R/3系統(tǒng)中,金額數(shù)量字段只有在伴隨有金額代碼的時(shí)候才有用,只有這樣數(shù)額的小數(shù)點(diǎn)才會(huì)正確設(shè)置。金額代碼字段必須指派給每個(gè)金額數(shù)量字段。例如,在數(shù)據(jù)庫中2日元會(huì)在CURR數(shù)據(jù)類型字段中存儲(chǔ)成0.02。在BAPI中使用金額數(shù)量字段時(shí),需要遵守以下方針:在接口中一定不能使用數(shù)據(jù)類型CURR做為參數(shù)和字段。所有金額數(shù)量的參數(shù)和字段都必須使用域BAPICURR。在金額數(shù)量字段的小數(shù)點(diǎn)位置必須正確轉(zhuǎn)換。例如,10.12必須格式化成10.12而不能是1012。92第二單元:BAPI根底

第二課:BAPI根本特殊本卷須知金額和數(shù)量的轉(zhuǎn)換〔2〕可以用兩個(gè)函數(shù)模塊來執(zhí)行這些轉(zhuǎn)換。函數(shù)模塊BAPI_CURRENCY_CONV_TO_EXTERNAL把金額從R/3內(nèi)部數(shù)據(jù)格式轉(zhuǎn)換成外部數(shù)據(jù)格式。函數(shù)模塊BAPI_CURRENCY_CONV_TO_INTERNAL把金額從外部數(shù)據(jù)格式轉(zhuǎn)化成內(nèi)部數(shù)據(jù)格式。數(shù)量字段也必須被轉(zhuǎn)換。必須給每個(gè)數(shù)量字段指定測量單位字段。數(shù)量字段沒有能夠用于BAPI結(jié)構(gòu)的通用域。93第二單元:BAPI根底

第二課:BAPI根本特殊本卷須知限制再次強(qiáng)調(diào),源代碼中不能包含COMMITWORK命令,不能使用任何可能產(chǎn)生屏幕輸出的命令,無論輸出列表、查詢或者會(huì)話屏幕都不允許。此外還有以下BAPI規(guī)那么:不能使用INCLUDE結(jié)構(gòu)。不要使用全局內(nèi)存區(qū)域傳遞值。不要使用SET和GET語句。BAPI必須自己執(zhí)行權(quán)限檢查。此外,BPAI不能發(fā)出A或E類型的消息。任何需要被報(bào)告給調(diào)用者的錯(cuò)誤消息必須使用返回參數(shù)。94第三單元:創(chuàng)立RFC函數(shù)模塊

單元概覽本單元描述、定義和預(yù)覽業(yè)務(wù)場景,決定業(yè)務(wù)過程都需要哪些BAPI。本單元還說明了如何創(chuàng)立一個(gè)名為GetList的允許RFC的函數(shù)模塊,并測試它的正確性。單元內(nèi)容創(chuàng)立RFC業(yè)務(wù)場景創(chuàng)立允許RFC的函數(shù)模塊編寫GetList函數(shù)模塊的文檔測試允許RFC的函數(shù)模塊95第三單元:創(chuàng)立RFC函數(shù)模塊

學(xué)習(xí)本單元后應(yīng)該可以描述業(yè)務(wù)場景定義業(yè)務(wù)場景回憶業(yè)務(wù)場景創(chuàng)立允許RFC的函數(shù)模塊測試文檔的正確性和完整性測試允許RFC的函數(shù)模塊96第三單元:創(chuàng)立RFC函數(shù)模塊

第一課:創(chuàng)立RFC業(yè)務(wù)場景本課概覽本單元討論了如何設(shè)置一個(gè)業(yè)務(wù)場景,以便用它來創(chuàng)立BAPI。這包含了三個(gè)步驟:描述場景、定義場景、回憶場景。本課目標(biāo)描述業(yè)務(wù)場景定義業(yè)務(wù)場景回憶業(yè)務(wù)場景97第三單元:創(chuàng)立RFC函數(shù)模塊

第一課:創(chuàng)立RFC業(yè)務(wù)場景業(yè)務(wù)例如現(xiàn)在有一個(gè)業(yè)務(wù)需要從某個(gè)客戶端的特定客戶獲取R/3系統(tǒng)中的信息。為了進(jìn)行分析,這個(gè)業(yè)務(wù)過程和實(shí)現(xiàn)這個(gè)業(yè)務(wù)過程的場景必須被詳細(xì)描述。在這個(gè)場景中使用的業(yè)務(wù)對象類型和它們的BAPI也必須明確。開發(fā)BAPI最主要的困難是互相抵觸的需要:一方面,BAPI要能夠用于各種不同的場景,但是接口還必須結(jié)構(gòu)清晰。重要的是不能保證這個(gè)階段設(shè)計(jì)的各個(gè)BAPI能象外表上那樣特征鮮明。場景中的BAPI只是被簡單說明,它們的功能和數(shù)據(jù)還需要定義。這個(gè)分析可以分成三個(gè)階段:描述業(yè)務(wù)場景、定義業(yè)務(wù)場景和回憶業(yè)務(wù)場景。98第三單元:創(chuàng)立RFC函數(shù)模塊

第一課:創(chuàng)立RFC業(yè)務(wù)場景描述業(yè)務(wù)場景〔1〕業(yè)務(wù)流程業(yè)務(wù)流程包含一系列獨(dú)立的業(yè)務(wù)功能。業(yè)務(wù)流程的內(nèi)容應(yīng)該用與技術(shù)細(xì)節(jié)無關(guān)的語言獨(dú)立描述。例如:在中心組織中創(chuàng)立一個(gè)包含信用檢查的銷售訂單。要定義業(yè)務(wù)流程就必須:定義業(yè)務(wù)流程的意圖和范圍。說明業(yè)務(wù)流程的獨(dú)立步驟。為此,可以使用一個(gè)過程模型或者用例工具。用例文檔與UML文檔相似?,F(xiàn)在,SAP不再提供業(yè)務(wù)流程步驟的工具了。99第三單元:創(chuàng)立RFC函數(shù)模塊

第一課:創(chuàng)立RFC業(yè)務(wù)場景描述業(yè)務(wù)場景〔2〕場景場景就是業(yè)務(wù)流程的計(jì)算機(jī)化實(shí)現(xiàn)。它描述了特定組件之間的分布和交互任務(wù)。可以有多個(gè)場景來實(shí)現(xiàn)同一個(gè)業(yè)務(wù)流程。例如:在不同的R/3系統(tǒng)中〔中心財(cái)務(wù)、分散的銷售和分銷〕創(chuàng)立銷售訂單和信用檢查。定義場景的過程包括:確定是否要把應(yīng)用系統(tǒng)集成在場景中,或者要連接其他前端。這可能影響步驟的粒度。確定相關(guān)組件和它們執(zhí)行的任務(wù)。100第三單元:創(chuàng)立RFC函數(shù)模塊

第一課:創(chuàng)立RFC業(yè)務(wù)場景描述業(yè)務(wù)場景〔3〕場景〔續(xù)〕定義場景的過程包括:決定信息和處理流程。這里必須要:確定哪些步驟要在系統(tǒng)范圍內(nèi)處理,哪些步驟只需要在單獨(dú)組件內(nèi)部處理。定義在組件間進(jìn)行交換的數(shù)據(jù)和誰來發(fā)起交換。確定各個(gè)獨(dú)立步驟被處理的順序。確定屬于一個(gè)獨(dú)立事務(wù)〔LUW〕的步驟。例如:開發(fā)者必須問自己,在一個(gè)LUW中創(chuàng)立一個(gè)客戶之后立即再在其中創(chuàng)立一個(gè)銷售訂單是否有意義。比本地應(yīng)用更加準(zhǔn)確和全面的處理錯(cuò)誤。101第三單元:創(chuàng)立RFC函數(shù)模塊

第一課:創(chuàng)立RFC業(yè)務(wù)場景描述業(yè)務(wù)場景〔4〕場景〔續(xù)2〕必須決定對于該場景的系統(tǒng)耦合度是高還是低。應(yīng)該從系統(tǒng)可用性、性能和場景被使用的頻度等角度考慮。必須考慮所有對性能有重大影響的步驟。還需要考慮,哪個(gè)R/3版本可以支持這個(gè)場景。對于每個(gè)場景,必須確定一個(gè)人可以保證場景的正確和及時(shí)。102第三單元:創(chuàng)立RFC函數(shù)模塊

第一課:創(chuàng)立RFC業(yè)務(wù)場景描述業(yè)務(wù)場景〔5〕業(yè)務(wù)對象類型和BAPI考慮這樣一個(gè)場景,需要用BAPI讀取債權(quán)人的列表并且顯示他們,就會(huì)看到首先要用一個(gè)BAPI來選擇債權(quán)人,然后用另一個(gè)BAPI來指定這個(gè)要被顯示的債權(quán)人的細(xì)節(jié)。這里,該場景相關(guān)的業(yè)務(wù)對象就是Creditor。符合場景的概念,要?jiǎng)?chuàng)立一個(gè)完整的場景就必須用多個(gè)BAPI互相補(bǔ)充,互相之間的關(guān)系必須定義清晰。要在上面描述的例如場景中讀取一個(gè)債權(quán)人的細(xì)節(jié),就需要兩個(gè)BAPI,顯示債權(quán)人的列表和顯示指定債權(quán)人的細(xì)節(jié)。103第三單元:創(chuàng)立RFC函數(shù)模塊

第一課:創(chuàng)立RFC業(yè)務(wù)場景描述業(yè)務(wù)場景〔6〕業(yè)務(wù)對象類型和BAPI這兩個(gè)BAPI的互相依賴性是很明顯的,因?yàn)槭紫纫@示出債權(quán)人列表供搜尋,以獲得指定債權(quán)人的ID,從這個(gè)ID,才可以顯示該債權(quán)人的細(xì)節(jié)。然而,這兩個(gè)BAPI還保存著互相的功能獨(dú)立,因?yàn)槿绻懒藗鶛?quán)人的ID,就可以直接使用顯示指定債權(quán)人細(xì)節(jié)的BPAI,而無需調(diào)用顯示債權(quán)人列表的BAPI。更進(jìn)一步,上面例如場景中讀取債權(quán)人細(xì)節(jié)的BAPI只能用于SAP業(yè)務(wù)對象Creditor,不能用于其他對象類型。一旦考慮了上述條件,就可以獲得方案的BAPI功能上的清晰概念。也就能夠確定與BAPI場景相關(guān)的SAP業(yè)務(wù)對象。104第三單元:創(chuàng)立RFC函數(shù)模塊

第一課:創(chuàng)立RFC業(yè)務(wù)場景定義業(yè)務(wù)場景現(xiàn)在已經(jīng)描述了業(yè)務(wù)場景,就需要定義工程。可以在BAPI資源管理器找到工程表格:使用事務(wù)碼BAPI〔4.6A版以上〕在相關(guān)的開發(fā)系統(tǒng)翻開BAPI資源管理器。選擇“工程”選項(xiàng)卡,創(chuàng)立一個(gè)工程來實(shí)現(xiàn)新的BAPI。出現(xiàn)工程表單引導(dǎo)你創(chuàng)立BAPI的整個(gè)過程。在第一個(gè)屏幕,可以創(chuàng)立定義場景的根本數(shù)據(jù)。105第三單元:創(chuàng)立RFC函數(shù)模塊

第一課:創(chuàng)立RFC業(yè)務(wù)場景回憶業(yè)務(wù)場景在場景可以被轉(zhuǎn)化成BAPI并且開始具體定義和實(shí)施之前,需要再回憶一下場景。所有跟BAPI開發(fā)以及與質(zhì)量控制相關(guān)的人員都應(yīng)該參與回憶。需要答復(fù)以下問題:這個(gè)場景是否與它的方案相符?這個(gè)場景描述中所有必須的任務(wù)是否都已完成?這個(gè)場景中所有的BAPI是否都能共同平滑的工作?只有在成功完成回憶之后才可以開始開發(fā)BAPI。106第三單元:創(chuàng)立RFC函數(shù)模塊

第二課:創(chuàng)立允許RFC的函數(shù)模塊本課概覽本課討論了實(shí)現(xiàn)BAPI的各個(gè)步驟,包括在ABAP字典中創(chuàng)立BAPI函數(shù)模塊中用到的結(jié)構(gòu)、創(chuàng)立BAPI函數(shù)模塊、編寫B(tài)API的文檔。本課目標(biāo)創(chuàng)立允許RFC的函數(shù)模塊業(yè)務(wù)例如需要給銷售人員提供一個(gè)調(diào)用接口,讓他們在R/3外部就能夠獲得客戶和合同的清單。現(xiàn)在沒有完成這個(gè)功能的BAPI,需要新建一個(gè)。107第三單元:創(chuàng)立RFC函數(shù)模塊

第二課:創(chuàng)立允許RFC的函數(shù)模塊為BAPI創(chuàng)立結(jié)構(gòu)BAPI中使用的數(shù)據(jù)結(jié)構(gòu)都在ABAP字典中定義和描述。組件之間的關(guān)系請參見第56頁的圖片。實(shí)現(xiàn)階段的第一個(gè)步驟是在ABAP字典中定義所有的數(shù)據(jù)結(jié)構(gòu)〔包括域和數(shù)據(jù)元素〕。這些數(shù)據(jù)結(jié)構(gòu)是給BAPI所需的參數(shù)使用的??梢詮腂API資源管理器的工程表單直接訪問ABAP字典。以下約定非常重要:每個(gè)參數(shù)必須引用ABAP字典中的數(shù)據(jù)結(jié)構(gòu)。對于結(jié)構(gòu)型的參數(shù),這通常引用整個(gè)BAPI數(shù)據(jù)結(jié)構(gòu),但是如果參數(shù)只包含一個(gè)字段,就必須指向BAPI結(jié)構(gòu)中的一個(gè)字段〔為什么不能是一個(gè)獨(dú)立數(shù)據(jù)元素,而必須是結(jié)構(gòu)?〕。108第三單元:創(chuàng)立RFC函數(shù)模塊

第二課:創(chuàng)立允許RFC的函數(shù)模塊為BAPI創(chuàng)立結(jié)構(gòu)〔2〕必須為BAPI定義與R/3應(yīng)用中通常使用的數(shù)據(jù)結(jié)構(gòu)獨(dú)立無關(guān)的數(shù)據(jù)結(jié)構(gòu)。原因是:一旦BAPI被發(fā)布,相關(guān)的結(jié)構(gòu)就被凍結(jié),如果想要修改這些結(jié)構(gòu)就會(huì)受到限制。所有數(shù)據(jù)結(jié)構(gòu)的名字必須用<命名空間>BAPI開始。BAPI結(jié)構(gòu)名稱必須盡量有意義。在BAPI數(shù)據(jù)結(jié)構(gòu)中一定不能使用APPEND和INCLUDE。因?yàn)椋涸贐API數(shù)據(jù)結(jié)構(gòu)修改后,APPEND和INCLUDE可以造成不兼容。還必須為域定義單值或者值表,以便使用F4幫助。必須為數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)元素定義所有有用的輸入幫助。為此,必須在BAPI結(jié)構(gòu)的字段指定外鍵。如果在字段域定義的值表,也必須定義外鍵。盡量為字段使用現(xiàn)存的中心數(shù)據(jù)元素和域。109第三單元:創(chuàng)立RFC函數(shù)模塊

第二課:創(chuàng)立允許RFC的函數(shù)模塊創(chuàng)立BAPI函數(shù)模塊〔1〕在創(chuàng)立BAPI的時(shí)候,必須考慮

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論