SAP與JAVA接口技術研究與應用

導語:SAP系統架構之下的組件數量龐大,各個組件間需要無縫地銜接,而且開放性的SAP系統還要實現與其他系統平臺隨時通信,讓用戶感覺只是在一個系統中進行工作。下面就由小編爲大家介紹一下SAP與JAVA接口技術研究與應用,歡迎大家閱讀!

SAP與JAVA接口技術研究與應用

  一、SAP系統接口技術

(一)SAP RFC接口技術

RFC是遠程函數調用的縮寫,是SAP系統之間以及SAP與外部系統之間程序通信的基本接口技術,諸多其他更高層的SAP接口和通信技術,如BAPI,ALE等,都是基於RFC實現的。是SAP公司最早提供的與其他系統的接口解決方案。

在系統間通信過程中,需區分發送系統和接受系統。RFC調用請求從發送系統中傳至接受系統,其中發送請求的系統在通信過程中又稱爲RFC客戶端,通信的另一方則稱爲RFC服務器。RFC客戶端發起遠程功能調用以執行RFC服務器提供的功能。其中調用系統和被調用系統可以是SAP系統或非SAP系統,此外還可以在SAP系統內部將特定的應用服務器指定爲目標系統。

RFC方式簡單易行,它只需要通過Java將所需參數傳遞給RFC,SAP會自動將結果集返還給Java的List、Vector等可以用於存儲數據的方法。

(二)BAPI(Business AppIication Programming Interface)接口技術

BAPl是指SAP中經過精確定義的業務應用的數據和處理接口。SAP採用了Object―Oriented技術,邏輯定義了系統的所有功能目標,並且將所有的目標和BAPIs存儲於企業目標庫BOR,藉助於BOR和BAPI,整個SAP系統中的業務對象均可以通過面向對象的視圖進行組織,並使用BAPI進行訪問操作。在SAP內部組件及SAP與非SAP組件之間的技術整合和業務數據交換過程中起着非常重要的作用。SAP通過BAPI實現組件間的信息和數據交換,並通過該標準接口把整個系統鏈接爲一個整體。

BOR能提供的目標類相當於程序設計語言中的`Class概念,其定義的接口主要包括基本數據和接口界面。基本數據包含了所有目標類的通用屬性,接口界面包括主字段、方法、特徵、事件等功能。

(三)ALE-IDoc接口技術

ALE(Application Link and Enabling)應用連接授權,是專門爲SAP與SAP之間所設計的整合中間件,它採用分佈――集成式的SAP系統實現基礎,包括經系統控制的業務消息交換以及鬆散連接的SAP系統間的數據一致性管理。在ALE中,系統間的數據集成過程並不是通過共享一箇中心數據庫,而是通過異步或同步傳輸從而實現了業務分佈化,管理集中化,即使接受方網絡中斷,在下一個連通時刻,數據仍可發送到目的系統。從技術角度來說,ALE主要應用於兩個有業務聯繫的SAP系統之間的數據同步,但也支持在SAP和非SAP系統間的數據同步的實現。

  二、SAP與Java程序的接口分析應用

(一)JCO與JAVA連接

1.建立連接池。連接池的創建通過調用JCO方法addClientPool()來實現。

2.創建原數據。原數據對象通過調用方法createRepository()來創建。原數據對象包含了所有在運行期間函數組的其中的數據。

3.創建函數模版。函數模版對象通過調用方法getFunctionTempIate()獲得。

4.創建函數。通過調用方法getFunction()創建函數對象。

5.獲取連接。通過調用getClient()從連接池中獲取連接對象。

6.提供輸入參數。通過調用getImportParameterList()給函數賦輸人蔘數值。

7.執行函數。通過調用方法execute()來執行函數。

8.獲取結果集。通過調用方法getExportParameterList()獲取RFC的結果集。

9.斷開連接池。通過調用方法removeClientPool()來斷開連接。

(二)接口性能優化

1.因爲連接池中的連接是可重用和可保持的,所以可以降低系統開銷,最大併發連接數量的限制避免過多地佔用SAP系統的資源,儘管如此,也不要使用過小的最大併發連接數從而造成應用系統的性能瓶頸,爲了容納由應用系統造成的額外負載,SAP系統要經過一些配置。

2.使用一個新的function對象時,爲了提高性能而重用已有的function對象,不僅是多於的,而且還很危險,因爲JCo的Repository爲每個function模塊緩存了元數據,如果重用一個含有表參數的function,而這個function中的表中的行數據沒有被清除,那麼更多的行數據會添加到這個表上,從而會造成錯誤的結果,這是使用一個新的function對象時要注意的。

3.只需使用一個Repository對象,因爲Repository對象可以動態重新得到SAP function模塊中的元數據並重新緩存,所以使用一個就夠了,如果使用過多的Repository對象,會降低應用系統和SAP系統的性能

4.應用系統只使用了function中的一小部分參數,爲了提高性能,可以使用setActive()方法將那些應用程序不使用的參數設置爲非活動狀態,包括Table Parameter、ParameterList以及est對象

5.添加多行數據到JCO的Table對象中時,使用appendRows方法代替appendRow()方法,這樣可以提高性能

6.爲了提高性能,JCO只在訪問連接池和Repository對象時採取同步,其他的操作都是異步的,在多線程的環境下,不同線程之間共享對象(比如Table對象)是值得警惕的,並且一個連接對象是不能共享訪問的,這樣導致發生異常Exception

  三、結論

JCO是一個高性能的,基於JNI的中間件,它實現了SAP的RFC協議。當用戶面臨流程或者數據整合方面的需求的時候,就迫切需要一種高效的方式,在SAP系統和Java平臺之間實時地交換數據。本文主要通過對SAP接口和JCO組件的重點介紹,讓大家對此類接口有一個直觀的認識,爲日常接口開發工作提供參考。