有关BAPI
BAPI(business application programming interface)是面向對象程序設計方法中的一組程序接口。它允許程序員通過SAP將第三方軟件整合成R/3專有產(chǎn)品。為了完成一些特殊的商業(yè)任務,如上傳交易數(shù)據(jù)等,R/3系統(tǒng)中內置了BAPI。
ABAP中有關BAPI的介紹
1.BAPI – business application programming interface
2.它實際上是一種特殊的Remote Function Modules (RFC)是為了提供使用外部程序來進行交易活動
3.它提供的基于企業(yè)目標(Business Object) 技術的接口應用界面
4.SAP采用了Object-oriented技術,邏輯定義了SAP R/3系統(tǒng)的所有功能目標,并且將所有的目標(Objects) 和BAPIs存儲于企業(yè)勘昕釨OR(Business Objects Repository).
5.SAP R/3 企業(yè)目標的目標類型(Object Type) 相當于目標設計語言中類(Class) 的概念,其定義結構由以下幾部分組成:基本數(shù)據(jù),接口界面,鍵(Key Fields),方法(Methods),特征(Attributes),事件(Events)
--如何創(chuàng)建BAPI程序
1.定義BAPI Structure (Structure不能在BAPI中重復使用,因為一旦BAPI被釋放,其Structure被凍結)
2.創(chuàng)建FUNCTION MODULE
每個BAPI必須有自己的Function Group,Function Group屬性必須為RFC
3.創(chuàng)建Business Object
4.使用BAPI WIZARD創(chuàng)建API Method
這樣BAPI可以被外部程序調用
5.Function Module符合BOR Method
4.釋放BAPI Function Module,
釋放Business Object Type,
釋放BAPI作為BOR的一種Method
SAP BAPI
BAPI是 Business Application Programming Interface的縮寫.
BAPI是SAP以外程序訪問SAP內部數(shù)據(jù)和程序的標準方式
?
BAPI在SAP系統(tǒng)內部以Function Modulede的方式實現(xiàn).所有的BAPI Function都
- 支持Remote Function Call (RFC)
- 處理過程中不激活對話窗口
?
BAPI是被定義為Business Object Repository(BOR)中的SAP Business Object類型或SAP interface類型的方法,并且以Function Module方式實現(xiàn)的. 這種定義和實現(xiàn)分離的方式是我們可以通過2中方式訪問BAPI.
- 通過面向對象的方法調用BOR中的BAPI
- 通過RFC直接調用Function Module
?
BAPI的簡單實現(xiàn)步驟
一,創(chuàng)建Function Module
1,在SM11,創(chuàng)建需要的structure
2,在SE80,建Function group
3,在SE37,創(chuàng)建Function Module
Note:一個Function Group只能包含一個BAPI;參數(shù)傳值;必須有有一個BAPIRETURN類型的EXPORT參數(shù)
二,封裝
1,在SWO1,建Object Type
2,把Function Module作為一個Method加入,utilities->API Methods->Add Method
3,release Object和Module。使在BAPI Browser 中可以看到。也就是外部能夠調用。
三,調用
1,如在另一系統(tǒng)中用ABAP調用,先在SM59中建RFC聯(lián)到有BAPI的R/3,(ZGOGO)
在SE38的程序中調用,Call Function "ZBAPIXXXXX" DESTINATION ZGOGO EXPORTING ...
2,如用JAVA調用
引入包;(不一定要用IBM的)
import com.sap.rfc.*;
import com.sap.rfc.exception.*;
import com.ibm.sap.bapi.*;
import com.ibm.sap.bapi.generated.*;
建立連接;調用。。。(See CALL_BAPI.java)
VBA for SAP
Private Sub CommandButton1_Click()
Set oFunction = CreateObject("SAP.LogonControl.1")
Set oConnection = oFunction.NewConnection
oConnection.Client = "500"
oConnection.Language = "EN"
oConnection.User = "user"
oConnection.Password = "pasword"
oConnection.ApplicationServer = "sap1.yok.com.cn"
oConnection.SystemNumber = "01"
result = oConnection.Logon(0, True)
Set ofun = CreateObject("SAP.FUNCTIONS")
Set ofun.Connection = oConnection
Set func = ofun.Add("RFC_READ_TABLE")
func.Exports("QUERY_TABLE") = "MARA"
If func.Call = True Then
Set oline = func.tables.Item("DATA")
Row = oline.rowcount
i = 1
Do While i <= Row
? ?Cells(i, 1) = Mid(Trim(oline.Value(i, 1)), 4, 22)
??? ?i = i + 1
? ?Loop
? ?Else
? ?MsgBox "FAIL"
End If
End Sub
VBA2
Private Sub CommandButton1_Click()
Dim sapFunctionCtrl As Object???????? 'Function Control (Collective object)
Dim sapConnection As Object?????????? 'Connection object
Dim theFunc As Object???????????????? 'Function object
???
Set sapFunctionCtrl = CreateObject("SAP.Functions")
Set sapConnection = sapFunctionCtrl.Connection
sapConnection.Client = "800"
sapConnection.user = "user"
sapConnection.Language = "EN"
If sapConnection.logon(0, False) <> True Then
MsgBox "No connection to R/3!"
End If
Set theFunc = sapFunctionCtrl.Add("ZRFCPING")
If theFunc.call Then ' call the RFC FM
MsgBox "RFC call is okay"
End If
sapFunctionCtrl.Connection.logoff
Set sapConnection = Nothing
Set sapFunctionCtrl = Nothing
End Sub
?
總結
- 上一篇: 常用函数一览
- 下一篇: SAP报表的性能优化SAP报表的性能优化