利用Visual Basic開發SAP介面程式初探-RFC
SAP R/3系統是業界最先進、最穩定的ERP系統,國際和國內大型企業採用該系統的比例遙遙領先於其它ERP系統的總和。SAP R/3內建了二次開發平臺,使用的開發語言叫做ABAP,是一種類似於COBOL的程式語言。ABAP在報表輸出方面功能相對較弱(只能按行列印在螢幕上或者匯出到Excel中處理),所以日常工作中經常需要在外部開發程式。透過程式介面自動讀取SAP R/3的資料表(檢視),在外部進行處理和利用水晶報表等工具生成符合中國人習慣的報表樣式。
SAP R/3的介面方式主要有RFC、IDOC、BAPI三種,本文要介紹的是相對比較簡單的RFC(Romote Function Call,遠端函式呼叫)。SAP系統RFC呼叫的原理其實很簡單,有一些類似於三層構架的C/S系統,第三方的客戶程式透過介面呼叫SAP內部的標準或自定義函式,獲得函式返回的資料進行處理後顯示或列印。下面是RFC呼叫的模型:
本文主要不是討論SAP R/3函式的開發,因為使用SAP的公司一般都有專門的ABAP開發人員。大家如果有機會接觸ABAP平臺,可以透過事務程式碼SE37進入ABAP開發平臺的"函式編制器"進行函式開發測試。
下面主要以VB為例介紹一下SAP介面RFC的開發思路。在SAP客戶端SAP Gui Client安裝的時候,注意選擇安裝附帶的SDK包(最保險是選擇完全安裝)。RFC介面程式開發,主要用的是"SAP.Functions"這個控制元件,透過控制元件在外部程式模擬SAP Gui Client的使用者登入和函式呼叫,然後返回函式的值。請看下面的程式片段和重點註解(尤其是test_Click()):
Private Sub Command1_Click() ' 定義R/3使用者名稱和密碼變數(使用者名稱應由SAP管理員開執行函式的許可權) Dim logname As String * 22, password As String * 22 Call logonr3(logname, password) ' 呼叫SAP登入介面程式 If logflag Then ' 呼叫生產、開發系統開關 StatusBar1.Visible = True StatusBar1.SimpleText = "正在登入SAP R/3系統..." Dim R3AppServer As String, R3Client As String, R3SystemNo As String If Form2.opPRD.Value Then ' 以下伺服器引數請根據客戶配置情況更改 R3AppServer = "10.3.1.4" ' 生產系統伺服器IP R3Client = "800" '生產系統集團程式碼 R3SystemNo = "00" '生產系統號 Else R3AppServer = "10.3.3.1" ' 開發系統伺服器IP R3Client = "101" R3SystemNo = "00" End If Unload Form2 ' 釋放 Form2 , 所有控制元件及值不可用 Set Functions = CreateObject("Sap.Functions") ' 建立RFC的本地物件 Set Connect = Functions.Connection ' 設定連線 Connect.ApplicationServer = R3AppServer ' 賦值伺服器IP Connect.Client = R3Client ' 賦值SAP集團程式碼 Connect.Language = "ZH" ' 置SAP系統介面中文 Connect.User = Trim(logname) ' 賦值SAP登入使用者名稱 Connect.password = Trim(password) ' 賦值SAP登入使用者密碼 Connect.SystemNumber = R3SystemNo ' 賦值SAP系統號 If Not Connect.Logon(0, True) Then ' 軟體登入SAP並判斷 MsgBox "登入SAP R/3失敗,請重新登入!", vbOKOnly + vbExclamation, "系統提示" Command1.SetFocus Else ' 登入SAP成功 Command1.Enabled = False Command2.Enabled = True test.Enabled = True End If StatusBar1.SimpleText = "" StatusBar1.Visible = False End If End Sub Private Sub Command2_Click() ' 登出SAP登入 Connect.LogOff Command2.Enabled = False Command1.Enabled = True test.Enabled = False End Sub Private Sub Command3_Click() ' 退出SAP介面演示程式 If Form1.Command2.Enabled Then MsgBox "退出前請斷開SAP R/3系統!", vbOKOnly + vbInformation, "系統提示" Else End End If End Sub Private Sub Form_Load() Command2.Enabled = False test.Enabled = False logoflag = False End Sub Private Sub test_Click() ' SAP RFC遠端呼叫處理主演示 Dim GetCustomers As Object Dim Customers As Object Dim i As Integer ' 透過RFC介面遠端執行SAP內部函式RFC_CUSTOMER_GET ' 賦要呼叫的SAP內建函式名 Set GetCustomers = Functions.Add("RFC_CUSTOMER_GET") GetCustomers.Exports("KUNNR") = "0000000103" ' 向函式入口賦值(客戶程式碼) ' 向函式入口賦查詢表名稱 Set Customers = GetCustomers.Tables("CUSTOMER_T") If GetCustomers.Call Then ' 呼叫成功遍歷顯示客戶所有資訊條目 For i = 1 To Customers.rowcount MsgBox Customers(i, "KUNNR") Next i Else MsgBox " 搜尋出錯! 出錯資訊: " + GetCustomers.Exception End If End Sub |
SAP的RFC呼叫是其介面技術中最簡單和易用的一種方式,該方式開發比較簡便,特別適合於外部報表開發,但對於大資料量的查詢效率相對較低。大家在熟練掌握後,可以進一步學習高階的IDOC和BAPI介面開發技術。
- 來源:天極網
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/90072/viewspace-978374/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於Visual Basic 6.0類開發(下) (轉)
- 關於Visual Basic 6.0類開發(上) (轉)
- Visual Basic for ApplicationAPP
- 用Visual Basic設計更好的使用者介面 (轉)
- Visual Basic 程式設計標準(1) (轉)程式設計
- 特性(C# 和 Visual Basic) BASIC 快速建模特性的程式語言C#
- SAP ABAP RFC介面通用日誌工具:abap fm logger
- 小程式雲開發初探
- 開發整合Microsoft Visual Basic for Application的應用系統(一) (轉)ROSAPP
- SAP 介面程式設計之 RFC系列(14) : C# 版獲取 DDIC 的資料欄位程式設計C#
- Visual Basic 14 的 14 大新特性
- VS2005 之 Visual Basic 程式語言介紹
- 用Visual Basic自編小遊戲 (轉)遊戲
- OLE程式開發利用(開發EXCEL) (轉)Excel
- Visual Studio 開發彙編程式
- 雲開發初探 —— 更簡便的小程式開發模式模式
- Flutter開發初探Flutter
- SAP HUM事務程式碼 HUMAT 之初探
- 利用mock發現介面Mock
- C#和Visual Basic之匿名型別C#型別
- 在Visual Basic 中使用C++ 類 (轉)C++
- 在Visual Basic中終止Windows 95 (轉)Windows
- 記錄ABAP開發的日常——SAP_PO開發同步介面案例
- 將資料從 Visual Basic 傳輸到 ExcelExcel
- Java Agent 開發初探Java
- SAP Distribution Model初探
- SAP 客供料管理初探
- 利用Easy Mock簡單模擬開發資料介面Mock
- SAP MM MI01介面上的‘Freeze book inventory’標記初探
- Visual Basic設計圖形瀏覽器示例 (轉)瀏覽器
- Spark開發-RDD介面程式設計Spark程式設計
- SAP QM-IDI 初探
- Visual Basic 6.0(VB6.0)詳細安裝過程
- Visual Basic.NET 中的語言新變化 (轉)
- P-code & visual basic雜談(一) (2千字)
- Visual Basic的類對於物件導向的支援 (轉)物件
- [英文]利用Visual Studio.NET 進行 ASP.NET的WEB開發 (轉)ASP.NETWeb
- 最新.net和Java呼叫SAP RFC中介軟體下載Java