常玉慧
(江蘇理工學(xué)院計(jì)算機(jī)工程學(xué)院,江蘇 常州 213001)
隨著企業(yè)信息化水平的不斷提高,成熟的ERP管理系統(tǒng)在企業(yè)的信息化進(jìn)程中扮演越來越重要的角色。SAP作為全球ERP管理軟件和業(yè)務(wù)解決方案的領(lǐng)導(dǎo)者,通過其自身應(yīng)用軟件,服務(wù)支持和開放性平臺(tái),為全球各個(gè)行業(yè)的企業(yè)用戶提供全面先進(jìn)的企業(yè)管理軟件解決方案。SAP系統(tǒng)完美的實(shí)現(xiàn)企業(yè)生產(chǎn)管理,倉(cāng)庫(kù)管理,物流管理,銷售管理和財(cái)務(wù)成本的無縫集成,方便得出具各種分析報(bào)表,快速準(zhǔn)確地為企業(yè)的管理層提供全面的決策信息。SAP系統(tǒng)提供了各種接口技術(shù),使得企業(yè)用戶在實(shí)施SAP的過程中能夠和原有的信息管理系統(tǒng)通過SAP接口技術(shù)進(jìn)行數(shù)據(jù)的交互,在SAP實(shí)施的過程中,打破企業(yè)在管理中存在的信息孤島。
SAP的接口技術(shù)主要有:RFC,BAPI,ALE/IDOC,EDI,WEB SERVICE等,這些接口技術(shù)采用 SAP的標(biāo)準(zhǔn)技術(shù)進(jìn)行開發(fā),可以方便的從SAP系統(tǒng)存取各種業(yè)務(wù)數(shù)據(jù),和其他信息系統(tǒng)進(jìn)行交互,這樣就可以保持原有系統(tǒng)的穩(wěn)定運(yùn)行,節(jié)省企業(yè)的開發(fā)實(shí)施成本,企業(yè)在實(shí)施過程中可以根據(jù)自己的實(shí)際情況,選擇相應(yīng)的接口實(shí)現(xiàn)企業(yè)各個(gè)信息系統(tǒng)的全面集成。
而對(duì)于超大數(shù)據(jù)量的數(shù)據(jù)交互,企業(yè)在實(shí)施SAP的過程中,采用非結(jié)構(gòu)化的文件交互方式來實(shí)現(xiàn)。筆者針對(duì)利用SAP系統(tǒng)的文件傳輸技術(shù),實(shí)現(xiàn)SAP系統(tǒng)和其他信息系統(tǒng)的非結(jié)構(gòu)化文件傳輸交互。
SAP系統(tǒng)從業(yè)務(wù)上來講,包含資產(chǎn)會(huì)計(jì)(AM)、財(cái)務(wù)會(huì)計(jì)(FI)、管理會(huì)計(jì)(CO)、物料管理(MM)、生產(chǎn)計(jì)劃控制(PP)、銷售分銷(SD)、人力資源(HR)等企業(yè)在生產(chǎn)管理經(jīng)營(yíng)各個(gè)業(yè)務(wù)模塊的管理,這些不同的模塊在SAP系統(tǒng)中實(shí)現(xiàn)了全面的集成,各個(gè)模塊的在SAP系統(tǒng)上共同運(yùn)行,實(shí)現(xiàn)企業(yè)經(jīng)營(yíng)的全面管理,如圖 1 所示:[1]
圖1 SAP系統(tǒng)業(yè)務(wù)模塊
在技術(shù)架構(gòu)上,SAP系統(tǒng)是一個(gè)三層架構(gòu)的系統(tǒng),分為表示服務(wù)器、應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器(有點(diǎn)類似于在用JAVA等其他語(yǔ)言開發(fā)基于WEB的系統(tǒng)時(shí)候的MVC模式)。SAP的三層架構(gòu)不但能實(shí)現(xiàn)系統(tǒng)邏輯上的分離,也能實(shí)現(xiàn)硬件上的分隔。即表示服務(wù)器、應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器可以分別安裝在不同的硬件服務(wù)器上,以實(shí)現(xiàn)系統(tǒng)能夠?qū)崿F(xiàn)最大的效能。圖2就形象的說明了SAP的三層架構(gòu)的分布[2]。
圖2 SAP系統(tǒng)分層架構(gòu)
其中SAP的所用標(biāo)準(zhǔn)程序和自定義開發(fā)的程序都是在應(yīng)用服務(wù)器上運(yùn)行的。
接下來,我們就詳細(xì)闡述幾種SAP系統(tǒng)利用文件和外部系統(tǒng)如何進(jìn)行交互的方法。
利用SAP應(yīng)用服務(wù)器,作為文件的存儲(chǔ)媒介,來實(shí)現(xiàn)SAP系統(tǒng)與其他外部系統(tǒng)的文件數(shù)據(jù)的交互。利用這種方式,我們可以通過后臺(tái)作業(yè)的方式,定期從SAP的服務(wù)器中讀取外部系統(tǒng)的生成的文件,并在處理完文件里面的數(shù)據(jù)后,生成新的文件存儲(chǔ)在SAP應(yīng)用服務(wù)器中,供外部非SAP系統(tǒng)讀取,接受處理的反饋信息。
在使用這種存儲(chǔ)方式實(shí)現(xiàn)文件數(shù)據(jù)交互的時(shí)候,可以通過SAP的OPEN DATASET的命令來實(shí)現(xiàn),這個(gè)命令可以實(shí)現(xiàn)SAP系統(tǒng)把文件數(shù)據(jù)讀入到SAP系統(tǒng)中,也可以把SAP系統(tǒng)中的數(shù)據(jù)生成數(shù)據(jù)文件存放在SAP應(yīng)用服務(wù)器中。
當(dāng)從SAP的應(yīng)用服務(wù)器上讀取文件到SAP系統(tǒng)的時(shí)候,使用以下的示例步驟來實(shí)現(xiàn):
(1)在服務(wù)器上打開文件;
(2)運(yùn)用READ DATASET把數(shù)據(jù)讀入體統(tǒng)變量;
(3)判斷數(shù)據(jù)是否讀取完畢;
(4)讀取數(shù)據(jù)并處理完畢后,關(guān)閉文件。
在服務(wù)器上打開文件:
讀取文件中的數(shù)據(jù)到SAP系統(tǒng)變量中:
此處省略對(duì)數(shù)據(jù)的處理邏輯:
讀取完成后,需要關(guān)閉文件:
要把SAP系統(tǒng)里的數(shù)據(jù)生成文件放到SAP服務(wù)器的時(shí)候,可以參考如下步驟:
(1)在服務(wù)器上打開文件;
(2)把系統(tǒng)的數(shù)據(jù)寫入應(yīng)用服務(wù)器;
(3)寫入數(shù)據(jù)完畢后,關(guān)閉文件。
在服務(wù)器上打開文件,在此處沒有使用默認(rèn)的編碼方式,而是采用的帶有BOM的UTF-8的編碼方式,主要是考慮到了不同國(guó)家的語(yǔ)言的兼容。UTF-8可以很好的兼容各個(gè)國(guó)家的文字,避免國(guó)家間的數(shù)據(jù)傳輸亂碼:
往文件中寫入SAP內(nèi)表中的數(shù)據(jù),在寫入文件的時(shí)候,使用TAB制表符作為字段間的間隔。
文件寫結(jié)束以后,需要關(guān)畢文件:
這種方式在國(guó)際某高端自行車零配件的生產(chǎn)集團(tuán)得到了很好的應(yīng)用,由于集團(tuán)的產(chǎn)品很多,每周都會(huì)有一個(gè)外部系統(tǒng)要安排每種產(chǎn)品以后三個(gè)月的生產(chǎn)計(jì)劃,然后把排好的生產(chǎn)計(jì)劃,通過接口技術(shù)把數(shù)據(jù)導(dǎo)入SAP系統(tǒng)中,由于數(shù)據(jù)量非常龐大,通過常規(guī)的接口技術(shù)實(shí)時(shí)的交互,會(huì)對(duì)系統(tǒng)造成很大的壓力。該集團(tuán)采用了后臺(tái)作業(yè)和SAP文件處理的方案,成功的實(shí)現(xiàn)了SAP系統(tǒng)和外部排產(chǎn)系統(tǒng)產(chǎn)品生產(chǎn)計(jì)劃的交互,如圖3所示。
圖3 某自行車配件工廠生產(chǎn)計(jì)劃文件傳輸流程
此外,利用FTP協(xié)議,也是傳輸文件數(shù)據(jù)常用的一種方法。FTP協(xié)議是一個(gè)客戶/服務(wù)器架構(gòu)的系統(tǒng),是TCP/IP協(xié)議之一,利用FTP協(xié)議,可以完成兩臺(tái)計(jì)算機(jī)上的文件的上傳和下載,從而實(shí)現(xiàn)文件數(shù)據(jù)的交互。通過SAP系統(tǒng)提供的標(biāo)準(zhǔn)的函數(shù)也能實(shí)現(xiàn)利用FTP服務(wù)器實(shí)現(xiàn)文件的DownLoad和Up-Load。這樣的功能也在某省的國(guó)家電網(wǎng)系統(tǒng)中得到了很好的應(yīng)用。
圖4簡(jiǎn)單的說明了FTP協(xié)議在總部和網(wǎng)省的文件交互的具體實(shí)現(xiàn):當(dāng)總部有文件下達(dá)的時(shí)候,會(huì)首先把文件放到FTP文件服務(wù)器上面,然后通過兩個(gè)系統(tǒng)之間的消息服務(wù),通知網(wǎng)省的SAP ERP系統(tǒng)到FTP文件服務(wù)器上去取文件,網(wǎng)省在文件獲取成功以后,又會(huì)通過系統(tǒng)間的消息服務(wù)反饋給總部ERP系統(tǒng)。這樣的一個(gè)流程,就完成了總部和網(wǎng)省系統(tǒng)的文件交互的整個(gè)過程。這個(gè)流程可以在有文件傳輸?shù)臅r(shí)候時(shí)候,實(shí)時(shí)的去通知對(duì)方系統(tǒng),不需要通過后臺(tái)來實(shí)現(xiàn),是整個(gè)傳輸過程更加清晰易于控制。
下面介紹一下,怎么樣在SAP系統(tǒng)里通過FTP協(xié)議實(shí)現(xiàn)文件的上傳和下載的功能,在編寫代碼實(shí)現(xiàn)功能前,要先檢查系統(tǒng)是否配置的FTP的客戶端,確保系統(tǒng)已經(jīng)安裝SAPFTP.EXE。并且通過RSFTP005命令經(jīng)行SAPFTP檢查。完成相關(guān)的檢查后,就可以通過代碼實(shí)現(xiàn)FTP的相關(guān)操作了。
首先先看如何SAP如何從FTP服務(wù)器中下載文件,需要完成以下幾個(gè)步驟:
(1)把登陸密碼轉(zhuǎn)換為SAP的內(nèi)部編碼;
(2)建立FTP的鏈接;
(3)從FTP的文件服務(wù)器下載數(shù)據(jù);
(4)完成下載后關(guān)閉文件服務(wù)器。
圖4 某省電網(wǎng)文件傳輸結(jié)構(gòu)圖
對(duì)訪問的密碼根據(jù)SAP的要求做轉(zhuǎn)換:
建立和FTP服務(wù)器的鏈接。SAPFTPA參數(shù)表示在服務(wù)器端建立和FTP的鏈接。
從FTP服務(wù)器下載文件數(shù)據(jù)到SAP系統(tǒng):
關(guān)閉SAP和FTP服務(wù)器的鏈接:
同樣要實(shí)現(xiàn)上傳的功能,也要分為以下幾個(gè)步驟:
(1)把登陸密碼轉(zhuǎn)換為SAP的內(nèi)部編碼;
(2)建立FTP的鏈接;
(3)把系統(tǒng)中的數(shù)據(jù)上傳到FTP服務(wù)器;
(4)上傳后關(guān)閉文件服務(wù)器。
對(duì)訪問的密碼根據(jù)SAP的要求做轉(zhuǎn)換:
建立和FTP服務(wù)器的鏈接。SAPFTPA參數(shù)表示在服務(wù)器端建立和FTP的鏈接:
從SAP系統(tǒng)傳輸數(shù)據(jù)到FTP服務(wù)器:
關(guān)閉FTP連接服務(wù)器:
也可以通過HTTP協(xié)議來傳輸文件,在SAP中創(chuàng)建類似其他語(yǔ)言(例JAVA等)HTTP_CLIENT對(duì)象,模擬HTTP協(xié)議,利用HTTP Request對(duì)象來傳輸文件。這種方法要在系統(tǒng)里面配置和外部系統(tǒng)的鏈接,通過SM59命令來實(shí)現(xiàn),鏈接類型設(shè)置為G,即HTTP協(xié)議,創(chuàng)建成功以后,在系統(tǒng)中顯示如圖5所示,利用這個(gè)鏈接,創(chuàng)建CL_HTTP_CLIENT類的對(duì)象,模仿HTTP協(xié)議實(shí)現(xiàn)文件的傳輸FTP agreement。
圖5 Connection Test圖
在SAP的系統(tǒng)開發(fā)中,提供了多種和外部系統(tǒng)交互的方法,在實(shí)施SAP之前,也可以通過接口技術(shù)把原來的系統(tǒng)和SAP系統(tǒng)進(jìn)行集成,以減少SAP實(shí)施的風(fēng)險(xiǎn),降低實(shí)施的成本。以上就是在SAP二次開發(fā)中常用的幾種文件傳輸?shù)姆椒ǎ瑢?duì)于實(shí)施人員,可以根據(jù)自己的需要,選擇合適的技術(shù)來實(shí)現(xiàn)數(shù)據(jù)的交互。
[1]黃佳.SAP高級(jí)應(yīng)用開發(fā):RFC、BAPI、ALE、Workflow、SAP連接器、WebDynpro及 BSP[M].北京:人民郵電出版社,2008:5-6.
[2]唐駿華.工程師突擊——SAP ABAP實(shí)用程序開發(fā)攻略[M].北京:機(jī)械工業(yè)出版社,2010:3-5.
江蘇理工學(xué)院學(xué)報(bào)2014年2期