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()):
' 通過rfc介面遠端執行sap內部函式rfc_customer_get
' 賦要呼叫的sap內建函式名
set getcustomers = functions.add("rfc_customer_get")
getcustomers.exports("kunnr") = "0000
000103" ' 向函式入口賦值(客戶**)
' 向函式入口賦查詢表名稱
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介面開發技術。
利用VB開發SAP介面程式初探
sap r 3系統是業界最先進 最穩定的erp系統,國際和國內大型企業採用該系統的比例遙遙領先於其它erp系統的總和。sap r 3內建了二次開發平台,使用的開發語言叫做abap,是一種類似於cobol的程式語言。abap在報表輸出方面功能相對較弱 只能按行列印在螢幕上或者匯出到excel中處理 所...
開發SAP介面程式初探
sap r 3系統是業界最先進 最穩定的erp系統,國際和國內大型企業採用該系統的比例遙遙領先於其它erp系統的總和。sap r 3內建了二次開發平台,使用的開發語言叫做abap,是一種類似於cobol的程式語言。abap在報表輸出方面功能相對較弱 只能按行列印在螢幕上或者匯出到excel中處理 所...
利用wxWindows開發介面程式
wxwindows是一套跨平台的元件庫。borland將推出的bluiderx將以wxwindows作為其介面元件庫。前面我們並沒有提到全域性程式集快取的概念,是因為我們前面的程式基本都使用的mono的程式集快取。即使在mysql資料庫操作的時候,需要第三方的程式集,我們只是copy過來即可。你至少...