常玉慧
(江蘇理工學院計算機工程學院,江蘇 常州 213001)
隨著企業信息化水平的不斷提高,成熟的ERP管理系統在企業的信息化進程中扮演越來越重要的角色。SAP作為全球ERP管理軟件和業務解決方案的領導者,通過其自身應用軟件,服務支持和開放性平臺,為全球各個行業的企業用戶提供全面先進的企業管理軟件解決方案。SAP系統完美的實現企業生產管理,倉庫管理,物流管理,銷售管理和財務成本的無縫集成,方便得出具各種分析報表,快速準確地為企業的管理層提供全面的決策信息。SAP系統提供了各種接口技術,使得企業用戶在實施SAP的過程中能夠和原有的信息管理系統通過SAP接口技術進行數據的交互,在SAP實施的過程中,打破企業在管理中存在的信息孤島。
SAP的接口技術主要有:RFC,BAPI,ALE/IDOC,EDI,WEB SERVICE等,這些接口技術采用 SAP的標準技術進行開發,可以方便的從SAP系統存取各種業務數據,和其他信息系統進行交互,這樣就可以保持原有系統的穩定運行,節省企業的開發實施成本,企業在實施過程中可以根據自己的實際情況,選擇相應的接口實現企業各個信息系統的全面集成。
而對于超大數據量的數據交互,企業在實施SAP的過程中,采用非結構化的文件交互方式來實現。筆者針對利用SAP系統的文件傳輸技術,實現SAP系統和其他信息系統的非結構化文件傳輸交互。
SAP系統從業務上來講,包含資產會計(AM)、財務會計(FI)、管理會計(CO)、物料管理(MM)、生產計劃控制(PP)、銷售分銷(SD)、人力資源(HR)等企業在生產管理經營各個業務模塊的管理,這些不同的模塊在SAP系統中實現了全面的集成,各個模塊的在SAP系統上共同運行,實現企業經營的全面管理,如圖 1 所示:[1]

圖1 SAP系統業務模塊
在技術架構上,SAP系統是一個三層架構的系統,分為表示服務器、應用服務器和數據庫服務器(有點類似于在用JAVA等其他語言開發基于WEB的系統時候的MVC模式)。SAP的三層架構不但能實現系統邏輯上的分離,也能實現硬件上的分隔。即表示服務器、應用服務器和數據庫服務器可以分別安裝在不同的硬件服務器上,以實現系統能夠實現最大的效能。圖2就形象的說明了SAP的三層架構的分布[2]。

圖2 SAP系統分層架構
其中SAP的所用標準程序和自定義開發的程序都是在應用服務器上運行的。
接下來,我們就詳細闡述幾種SAP系統利用文件和外部系統如何進行交互的方法。
利用SAP應用服務器,作為文件的存儲媒介,來實現SAP系統與其他外部系統的文件數據的交互。利用這種方式,我們可以通過后臺作業的方式,定期從SAP的服務器中讀取外部系統的生成的文件,并在處理完文件里面的數據后,生成新的文件存儲在SAP應用服務器中,供外部非SAP系統讀取,接受處理的反饋信息。
在使用這種存儲方式實現文件數據交互的時候,可以通過SAP的OPEN DATASET的命令來實現,這個命令可以實現SAP系統把文件數據讀入到SAP系統中,也可以把SAP系統中的數據生成數據文件存放在SAP應用服務器中。
當從SAP的應用服務器上讀取文件到SAP系統的時候,使用以下的示例步驟來實現:
(1)在服務器上打開文件;
(2)運用READ DATASET把數據讀入體統變量;
(3)判斷數據是否讀取完畢;
(4)讀取數據并處理完畢后,關閉文件。
在服務器上打開文件:

讀取文件中的數據到SAP系統變量中:

此處省略對數據的處理邏輯:

讀取完成后,需要關閉文件:

要把SAP系統里的數據生成文件放到SAP服務器的時候,可以參考如下步驟:
(1)在服務器上打開文件;
(2)把系統的數據寫入應用服務器;
(3)寫入數據完畢后,關閉文件。
在服務器上打開文件,在此處沒有使用默認的編碼方式,而是采用的帶有BOM的UTF-8的編碼方式,主要是考慮到了不同國家的語言的兼容。UTF-8可以很好的兼容各個國家的文字,避免國家間的數據傳輸亂碼:

往文件中寫入SAP內表中的數據,在寫入文件的時候,使用TAB制表符作為字段間的間隔。


文件寫結束以后,需要關畢文件:

這種方式在國際某高端自行車零配件的生產集團得到了很好的應用,由于集團的產品很多,每周都會有一個外部系統要安排每種產品以后三個月的生產計劃,然后把排好的生產計劃,通過接口技術把數據導入SAP系統中,由于數據量非常龐大,通過常規的接口技術實時的交互,會對系統造成很大的壓力。該集團采用了后臺作業和SAP文件處理的方案,成功的實現了SAP系統和外部排產系統產品生產計劃的交互,如圖3所示。

圖3 某自行車配件工廠生產計劃文件傳輸流程
此外,利用FTP協議,也是傳輸文件數據常用的一種方法。FTP協議是一個客戶/服務器架構的系統,是TCP/IP協議之一,利用FTP協議,可以完成兩臺計算機上的文件的上傳和下載,從而實現文件數據的交互。通過SAP系統提供的標準的函數也能實現利用FTP服務器實現文件的DownLoad和Up-Load。這樣的功能也在某省的國家電網系統中得到了很好的應用。
圖4簡單的說明了FTP協議在總部和網省的文件交互的具體實現:當總部有文件下達的時候,會首先把文件放到FTP文件服務器上面,然后通過兩個系統之間的消息服務,通知網省的SAP ERP系統到FTP文件服務器上去取文件,網省在文件獲取成功以后,又會通過系統間的消息服務反饋給總部ERP系統。這樣的一個流程,就完成了總部和網省系統的文件交互的整個過程。這個流程可以在有文件傳輸的時候時候,實時的去通知對方系統,不需要通過后臺來實現,是整個傳輸過程更加清晰易于控制。
下面介紹一下,怎么樣在SAP系統里通過FTP協議實現文件的上傳和下載的功能,在編寫代碼實現功能前,要先檢查系統是否配置的FTP的客戶端,確保系統已經安裝SAPFTP.EXE。并且通過RSFTP005命令經行SAPFTP檢查。完成相關的檢查后,就可以通過代碼實現FTP的相關操作了。
首先先看如何SAP如何從FTP服務器中下載文件,需要完成以下幾個步驟:
(1)把登陸密碼轉換為SAP的內部編碼;
(2)建立FTP的鏈接;
(3)從FTP的文件服務器下載數據;
(4)完成下載后關閉文件服務器。

圖4 某省電網文件傳輸結構圖
對訪問的密碼根據SAP的要求做轉換:

建立和FTP服務器的鏈接。SAPFTPA參數表示在服務器端建立和FTP的鏈接。

從FTP服務器下載文件數據到SAP系統:

關閉SAP和FTP服務器的鏈接:


同樣要實現上傳的功能,也要分為以下幾個步驟:
(1)把登陸密碼轉換為SAP的內部編碼;
(2)建立FTP的鏈接;
(3)把系統中的數據上傳到FTP服務器;
(4)上傳后關閉文件服務器。
對訪問的密碼根據SAP的要求做轉換:

建立和FTP服務器的鏈接。SAPFTPA參數表示在服務器端建立和FTP的鏈接:

從SAP系統傳輸數據到FTP服務器:

關閉FTP連接服務器:

也可以通過HTTP協議來傳輸文件,在SAP中創建類似其他語言(例JAVA等)HTTP_CLIENT對象,模擬HTTP協議,利用HTTP Request對象來傳輸文件。這種方法要在系統里面配置和外部系統的鏈接,通過SM59命令來實現,鏈接類型設置為G,即HTTP協議,創建成功以后,在系統中顯示如圖5所示,利用這個鏈接,創建CL_HTTP_CLIENT類的對象,模仿HTTP協議實現文件的傳輸FTP agreement。

圖5 Connection Test圖
在SAP的系統開發中,提供了多種和外部系統交互的方法,在實施SAP之前,也可以通過接口技術把原來的系統和SAP系統進行集成,以減少SAP實施的風險,降低實施的成本。以上就是在SAP二次開發中常用的幾種文件傳輸的方法,對于實施人員,可以根據自己的需要,選擇合適的技術來實現數據的交互。
[1]黃佳.SAP高級應用開發:RFC、BAPI、ALE、Workflow、SAP連接器、WebDynpro及 BSP[M].北京:人民郵電出版社,2008:5-6.
[2]唐駿華.工程師突擊——SAP ABAP實用程序開發攻略[M].北京:機械工業出版社,2010:3-5.