EEP.NET - SAP整合方案
訊光科技 / 許以撒
前言
市面上沒有一套ERP系統,可以完全適用於全世界各行各業的不同業務需求,即使是軟體商或本身IT部門有能力進行客製化開發,也會是一個浩大的工程。在國內中型以上企業的ERP市場當中,就有為數不少的企業使用了SAP ERP系統,為了方便SAP的功能延伸與其他系統的整合,SAP提供了RFC (Remote Function Call)的溝通介面來讓客戶自行開發一些API與其他系統介接。在.NET中可以透過NCO 3來呼叫這個RFC,因此,在EEP2015的版本中,就可以使用訊光的EEP A/P Server連上SAP的RFC,並使用EEP強大的UI元件(如JQuery或Mobile)來呈現SAP的資料,甚至可以實現資料輸入與回寫工作。
EEP整合SAP之架構
如下圖所示,只在要在SAP上做好Remote Function Call的Function(這Function必須事先在RFC中開發好),就可以用EEP.NET開發工具來進行開發。透過EEP的數據連線設定(連到SAP RFC須另行設定),然後透過EEP的InfoCommand元件抓取RFC的數據,轉換成JSON格式後供應給Web畫面上的JQuery組件來呈現;如果有數據異動,也可以透過EEP.Net的UpdateComponent元件叫用RFC的Function來達成新增、更改、刪除等動作。
案例開發
1.用SAP .Net Connector 3.0 (NCO3.0) Client來連接SAP RFC Server。如圖:在EEPNetServer上設定連接參數設定。
2.先準備好SAP的RFC Function,確認好這個Function所要給的每個參數,以及此Function傳回來的每個參數。比如一張訂單的資料,這些資料可能在SAP是放在很多資料表,但是在RFC Function中會把這些資料整合成少數幾個資料表來處理。本實作案例是以SAP的ABAP開發系統裏的SFLIGHT範例為例,這個功能是用來取得飛行數據和觸發預定。
這個SFLIGHT範例已經做好這4個功能: BAPI_SFLIGHT_GETLIST BAPI_SFLIGHT_GETDETAIL BAPI_SBOOK_CREATEFROMDATA BAPI_TRANSACTION_COMMIT
使用這個做好的RFC服務,我們就可以用EEP.NET 來做一個使用者介面,來查詢飛行航班資料和維護飛行航班資料。
3.用EEP的Wizard做一個EEP.NET Server的資料存取服務,和原來存取資料庫的服務比較不同的地方,就如以下的4個畫面所示,要分別設定查詢、新增、修改、刪除時叫用的SAP RFC Function的Function名稱和傳入和傳出的參數。
接著將這個新的商業模組編譯一下,產生了EEPNetServer上的資料存取服務的DLL。
4.接著就用EEP.NET原本方式去設計JQuery或Mobile表單即可。如用Wizard產生一個JQuery表單或以元件設定屬性的方式去設計表單,如下是以Wizard來產生一個JQuery的Web表單,這樣就可以正常用EEP去執行該表單並存取SAP RFC的資料。
5.執行時,EEP.NET Server的InfoCommand元件會叫用SAP的RFC Function取得資料。(如下圖)
此時,如果畫面上有使用者操作查詢介面,EEP Server上的InfoCommand也會自動以Filter來過濾資料;另一種方式是如果RFC上面有查詢的Parameters時,也可以透過InfoCommand來下達這個參數給RFC,實現遠端的查詢功能。
6.如果畫面上使用者做了新增、修改、刪除的動作後,也可以配合EEP UpdateComp元件來自動叫用RFC上面的Insert/Update/Delete的對應Function。
結語
資訊科技日新月異,系統經常面臨升級與UI改朝換代、客製開發、以及系統或企業之間的資料交換等,總是無法避免,EEP2015整合了NCO 3與SAP的RFC方式,讓企業可以更快速更有效率來開發SAP的客製功能,也能將SAP輕量存取或罕用User的查詢或輸入功能,部分轉移使用EEP.NET來實現,除了開發上可以更快速更方便之外,也能降低SAP的授權成本,或許,對企業來說這是個最大的誘因。 |