前言:在專案中遇到任務PO介面,需求是SRM傳送採購訂單資訊給SAP,SAP根據資訊呼叫BAPI同步資料,在此作為案例記錄。
本次介面採用的協議是SOAP,當然也有其他的協議比如REST等等,在此不做說明。
同步PO介面開發步驟:
- 通過SAP NetWeaver註冊PO介面服務;
- 通過SAP SPROXY建立服務實施代理類;
1.註冊介面服務
1.1 登入SAP NetWeaver網頁
根據BASIC提供的PO元件網址以及賬號密碼登入:https://{ip}:{port}/dir/start/index.jsp
PO介面配置相關的屬性都會在這個網頁中進行。
1.2 配置ESR( Enterprise Services Repository)
會下載一個repository.jnlp檔案,這個檔案必須用java開發工具集JDK裡面的JRE執行環境中的javaws.exe檔案執行開啟,在java高版本中JRE裡面是沒有這個檔案的,本人親測大概只有JDK1.8.2-1.8.5這幾個版本目前存在javaws.exe檔案,如果電腦無法執行jnlp檔案可以嘗試更換JDK版本。
在此附上幾個國內JDK映象下載地址:
確認電腦JRE中存在javaws.exe檔案後,我們用下載repository.jnlp檔案後,選擇用電腦JRE中的javaws.exe檔案開啟:
有些瀏覽器可能會報異常訊息,忽略保留檔案
上圖的Java(TM) Web Start Launcher 就是用來開啟jnlp檔案的應用,這裡顯現是因為我已經不是第一次開啟了,如果你是第一次開啟jnlp,需要選擇下面的更多應用,找到JRE中的javaws.exe檔案開啟,後續就會出現JWSL圖示,不用再重新選擇。
開啟後會有陸續畫面閃過,第一次可能還要同意,允許之類的,我們都選擇允許。
最後會開啟一個如下圖的介面:
裡面有多個已經建立好的技術系統,我們這次的例子是跟SRM進行互動,所以介面配置會放在SRM下,如果是剛開始配置PO介面,我們就需要從頭開始建立產品、技術系統等等,本例中因篇幅的關係不做過多說明。
1.3 ESR詳細配置
1.3.1 建立名稱空間
開啟SRM技術系統後看見多個名稱空間,我們的介面配置屬性都會放在名稱空間下,名稱空間能夠保證介面的唯一性。
名稱空間的命名規則:一般為技術系統域名/平臺/模組,如上面的:https://srm.com/SAP/MM
如何建立名稱空間:
1.3.2 建立資料夾
開啟名稱空間,發現有許多的資料夾,這裡每一個資料夾對應一個介面,我們要配置採購訂單建立修改介面,自然也需要建立一個資料夾.
選中名稱空間:
建立完成後,在名稱空間裡就能看到資料夾,左上角有個紅色標記,表示未啟用,所以我們需要啟用資料夾:
啟用完成後,紅色標識會消失,表示成功啟用
1.3.3 建立DT(Data Type)
命名規則:DT_{系統}_{介面描述:首字母大寫}_In/Out
建立:DT_ERP_Po_Create_And_Update_In
選擇資料夾,右鍵New:
同樣的步驟建立採購訂單建立修改介面傳出資料型別結構:DT_ERP_Po_Create_And_Update_Out
1.3.4 建立MT(Message Type)
命名規則:MT_{系統}_{介面描述:首字母大寫}_In/Out
建立:MT_ERP_Po_Create_And_Update_In
選擇資料夾,右鍵New:
先儲存,再啟用;然後以同樣的步驟建立:MT_ERP_Po_Create_And_Update_Out
1.3.5 建立SI(Service Interface)
命名規則:SI_{系統}_{介面描述:首字母大寫}_In/Out
建立:SI_ERP_Po_Create_And_Update_In
選擇資料夾,右鍵New:
先儲存,再啟用;然後以同樣的步驟建立:SI_ERP_Po_Create_And_Update_Out 但是有些區別:如下圖
1.3.6 建立MM(Message Mapping)
命名規則:MM_{系統}_{介面描述:首字母大寫}_In/Out
建立:MM_ERP_Po_Create_And_Update_In
選擇資料夾,右鍵New:
右邊也是選擇同一個MT
先儲存,再啟用;然後以同樣的步驟建立:MM_ERP_Po_Create_And_Update_Out
1.3.7 建立OM(Operation Mapping)
命名規則:OM_{系統}_{介面描述:首字母大寫}
OM只需要建立一個,所以不分In和Out
建立:MM_ERP_Po_Create_And_Update
選擇資料夾,右鍵New:
如此我們在ESR中的配置就完成了,接下來需要去配置IB
1.4 配置ID(Integration Directory)
點選IB之後會現在一個directory.jnlp檔案。我們同樣下載並開啟。
最後開啟一個如下介面:
開啟社群元件,看到有Business System 和 Business Component,由於本介面是SRM作為傳送方,SAP作為接收方,所以需要在各自業務系統裡建立用於接受資料協議的介面卡型別.
SRM方面:作為傳送方
SAP方面:作為接收方
在IC(Integration Configuration)裡面建立BS:
Inbound Processing:
Receiver:
Receiver Interfaces:
Outbound Processing:
啟用BS:
上面WSDL的地址就是該介面的訪問地址,等下在後面測試的時候要用到,回頭提供給第三方SRM呼叫。
注意:如果後來有調整DT的欄位,一定要重新對映下欄位即把之前MM的對映刪除,重聯一下。
2.SAP端建立代理實施類
登入SAP GUI,使用事務碼:SPROXY
在這個事務碼下可以看見之前在ESR配置技術系統下的所有介面資訊,依次開啟路徑:Source->ESR->技術系統->名稱空間,找到我們配置的介面SI:
同步代理類啟用的時候會自動產生一些結構和代理實施類,我們可以在類方法中檢視引數,進行邏輯處理,後續有介面欄位調整,需要右鍵重新生成,然後再啟用。
然後啟用代理類,這樣整個介面從配置到開發就完成了,接下來測試下我們開發的介面
3.測試
如果是同步介面,可以直接通過SPROXY測試,點選啟用按鈕旁邊的執行,可以看到介面的XML形參,點選工具欄的編輯按鈕,輸入實際資料,再點選執行,就可以看到介面的返回結果;
除此之外,還可以用第三方工具測試介面的功能,介面測試工具很多,本次選擇SOAP UI,是一款免費開源的介面測試工具,同意有付費版本,不過免費的就可以滿足日常的使用了,這裡簡單介紹如何用SOAP UI測試我們開發的介面。
3.1 開啟SOAP UI軟體,新建SOAP PROJECT:
新建一個SOAP PROJECT:MM_Po_Create_And_Update
將之前在BS中複製的WSDL地址填入:
登入PO賬號:
檢視報文格式:
新增訪問授權:
輸入測試資料,執行
介面返回結果;
看到以上就說明我們PO介面開發從配置->開發->測試圓滿的成功了。本次案例是一個同步介面作為說明,至於非同步模式以及其他協議的介面,以後有機會再說明。