基于BAPI的ERP與MES集成研究 |
發布時間: 2012/8/15 11:02:08 |
企業資源計劃ERP(Enterprise Resource Plan)已經發展成為當今企業管理軟件的主流,越來越多的系統開始考慮與ERP的集成,制造執行系統MES(Manufacturing Execution System)就是其中之一。 MES是制造業中的一種車間層控制系統,它定位于上層計劃管理與底層控制系統之間,所以為了實現企業的整體信息化,在實施了ERP和MES的制造業企業中,將這兩個系統實現集成是必要的。要實現這兩個系統的集成,ERP和MES的開放性是前提,1996年,SAP公司和微軟共同制訂的商業應用編程接口BAPI(Business Application Programming Interface)是一個很好的開放性規范。當前許多ERP廠商已經在研究并已實現BAPI,提出了集成解決方案。其中SAP R/3就是一個很好的應用產品,它實現了更大的靈活開放性,提高了產品的競爭力。 本文通過對BAPI概念、設計以及調用方法的研究,設計了一個ERP與MES的集成案例來實現對BAPI的應用。 2 ERP中的業務框架 2.1 業務框架技術 框架的概念已經廣泛應用于編程中,它可以更好地集成各個獨立的應用程序從而便于將來的程序標準化。SAP將這種思想應用到了企業軟件中,形成了業務框架的思想。這種思想實質上是面向對象技術在企業軟件中的應用擴展。業務組件可以看成是ERP中的模塊(例如人力資源模塊就是一個業務組件),它是由一些業務對象及其功能組成的。業務對象是面向對象技術的應用,它封裝定義了一些業務數據、函數和接口。而且所有的業務對象都存放在ERP的業務對象倉庫BOR(Business Object Repository)中。同時每個業務對象都提供一些業務應用程序接口。程序可以通過一些預定的通訊方式進行接口訪問,通過面向對象的方式與業務對象進行通訊。 2.2 業務對象體系結構 在業務對象倉庫中包含許多業務對象,通過業務對象的方法來提供BAPI。它們提供了與ERP軟件的高級接口,使得ERP組件能夠進行面向對象的通訊。業務對象封裝業務數據和業務過程,同時隱含最底層的數據結構和實現方法。 2.3 業務框架中數據訪問的方式 通常ERP系統中數據的訪問是通過直接訪問底層數據庫的方式來實現的,要實現系統之間的集成,數據的傳輸和訪問是最基礎的。由各種語言開發的外部系統要訪問ERP系統的數據,最基本的是利用JDBC/ODBC方式進行數據的直接訪問。但是,有時ERP系統的數據庫并不是完全開放的。隨著業務框架技術的引入以及業務應用程序接口(BAPI)的出現,ERP的數據訪問就有了一個高效的接口。同時業務框架提供了一個數據庫的接口――數據字典,它是一種能夠定義和管理數據類型和結構,以及定義管理數據表及其視圖的工具。通過數據字典可以進行底層數據庫的基本操作,這樣就為用戶對ERP的二次開發提供了很方便的工具。 3 BAPI實現 業務應用程序接口(BAPI)被定義為業務對象的方法,內部軟件組件的集成和外部客戶開發的應用系統的集成都能使用BAPI。BAPI是在業務對象倉庫(BOR)中定義的業務對象的方法,通過能被遠程調用的功能模塊(Function Module)來實現。功能模塊是在功能模塊庫中設計定義的,用于對可供訪問輸入輸出參數。BAPI實施的步驟如下:1) 在數據字典中定義BAPI中需要用到的數據結構;2) 實現BAPI的基于RFC協議的功能模塊設計;3) 在業務對象倉庫中將BAPI定義為商業對象的方法。 4 ERP與MES集成信息分析 MES作為一個車間層的信息采集處理系統,并沒有一個共同的標準,也就是說不同行業的MES系統可能差別很大。因此先行的MES系統一般都是具體針對某個行業開發的,但是通過分析它與ERP系統的聯系,我們發現MES系統主要需要的是ERP的數據,包括物料、生產數量、完工日期、標準物料、標準生產工藝等信息,這些信息主要包含在ERP中的物料主數據以及生產訂單中。MES系統收集到這些信息后可以用來指導底層控制系統從而控制車間的生產。 另一方面,為了便于信息的分析與處理,我們可以將MES采集的信息傳遞到ERP中,通過ERP比較強大的報表處理功能來進行信息的統計與處理。 5 ERP與MES集成模型設計與實現 5.1 集成方案設計 根據某半導體企業的MES系統需求,通過分析系統數據,我們需要將ERP中的信息傳遞到MES系統中,同時也需要傳遞一些MES系統的信息到ERP中以實現信息的交互。基于這樣的分析,設計了一個ERP與MES系統集成的模型。所采用的ERP系統是SAP R/3系統,MES系統是基于C#語言開發的,底層數據庫采用Access數據庫。整個系統的集成方案設計步驟如下: 1) 在原有MES系統中附加數據庫表以收集從ERP中下載的數據。 2) 在ERP中開發BAPI接口,用于實現數據的傳遞。 3) 在MES系統中附加一個模塊,用于調用BAPI接口來實現到MES系統附加的數據庫表中的數據傳遞,并且從這個附加數據庫表中抽取數據以更新原有數據庫。這個模塊采用VB語言進行開發。同時,通過調用BAPI接口來實現原有MES系統的數據信息上傳到ERP中。 通過對集成信息的分析,在集成功能上,根據從ERP下載還是上傳數據,可以分為兩個方面。一方面,開發BAPI接口實現從ERP下載數據到MES系統中,設計了三個接口:1)下載物料組接口;2)下載物料主數據接口;3)下載工作訂單接口;另一方面,開發BAPI接口實現從MES上傳數據到ERP系統中,設計了一個接口:上傳完工信息接口。通過對這些接口的調用,可以實現數據的傳遞,最終實現系統的集成。 5.2 BAPI接口設計 下面通過一個例子來說明BAPI接口的設計。在ERP中采用了R/3的開發語言ABAP/4來開發BAPI接口。 根據對下載物料組接口的設計過程的描述來說明BAPI接口的設計。對BAPI接口設計,首先在業務對象庫(BOR)的業務對象MaterialGroup中添加方法MaterialGroup.GetList, 其次,在Function Builder中創建實現方法MaterialGroup的功能模塊,命名為BAPI_MATERIALGROUP _GET_LIST,該功能模塊是RFC功能模塊,可以從外部系統調用該功能模塊。功能模塊包含輸入輸出參數和實現代碼,輸入輸出參數的設計在數據字典中進行。 功能模塊的實現代碼是采用ABAP/4語言編寫的,實現代碼的數據聲明定義部分如下: FUNCTION BAPI_MATERIALGROUP_GET_LIST. CLEAR RETURN. REFRESH RETURN. CLEAR R_MATKL. REFRESH R_MATKL. CLEAR: PI_SPRAS, PI_LANGUAGE, PI_LANGUAGE_ISO, PI_MATKL,PI_FLAG_WGBEZ. CLEAR: G_MSGV1, G_MSGV2, G_MSGV3, G_MSGV4. CLEAR: BAPIWWG5_LANGUAGE, WWG5_LANGUAGE. PI_FLAG_WGBEZ = SHORTDESCRIPTIONFLAG. PI_LANGUAGE = LANGUAGE. PI_LANGUAGE_ISO = LANGUAGEISO. R_MATKL[] = MATERIALGROUPRANGE[]. CLEAR: G_SUBRC, G_SUBRC_LANGU_PARAMS. G_SUBRC_CHECKS = 4. 最后,通過將功能模塊BAPI_MATERIALGROUP_GET_ LIST指定給業務對象的方法MaterialGroup.GetList實現BAPI接口的設計。 5.3 調用BAPI接口實現系統集成 在實現系統集成數據傳遞的這個附加模塊的開發中,首先要連接ERP系統,即連接R/3系統。通過VB程序來實現,連接界面如圖1。實現連接ERP系統的代碼從略。 連接到SAP后我們就可以通過調用BAPI接口來實現數據的傳輸了。調用BAPI(BAPI_MATERIALGROUP_GET_LIST)的VB代碼從略。 6 總結與展望 BAPI技術和業務對象技術為ERP接口的標準化提供了很好的方法。ERP系統的不斷擴展使得ERP的集成需求越來越多,MES系統作為制造業中的一個重要系統,它同ERP系統的集成實現了整個制造型企業內部信息的完整集成交換,這樣的集成提高了企業的生產效率。本文通過對集成相關技術的介紹以及集成模型的設計開發,展現了如何通過BAPI接口實現企業系統之間的集成途徑。隨著網絡技術的發展,越來越多的系統開始考慮在Web上的應用,ERP系統也要跟蹤這一發展方向。Web上的ERP系統的應用必然導致在Web上集成ERP系統以及其他應用系統方向上的研究,面向對象技術形成的業務框架、業務對象以及BAPI同樣會有一個很好的應用空間。 本文出自:億恩科技【www.artduck.net】 本文出自:億恩科技【www.enidc.com】 --> |