記錄ABAP開發的日常——SAP_PO開發同步介面案例

秋の夕發表於2022-01-20

前言:在專案中遇到任務PO介面,需求是SRM傳送採購訂單資訊給SAP,SAP根據資訊呼叫BAPI同步資料,在此作為案例記錄。

本次介面採用的協議是SOAP,當然也有其他的協議比如REST等等,在此不做說明。

同步PO介面開發步驟:

  1. 通過SAP NetWeaver註冊PO介面服務;
  2. 通過SAP SPROXY建立服務實施代理類;

1.註冊介面服務

1.1 登入SAP NetWeaver網頁

根據BASIC提供的PO元件網址以及賬號密碼登入:https://{ip}:{port}/dir/start/index.jsp

image

PO介面配置相關的屬性都會在這個網頁中進行。

1.2 配置ESR( Enterprise Services Repository)

image

會下載一個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檔案開啟:

image
有些瀏覽器可能會報異常訊息,忽略保留檔案
image

上圖的Java(TM) Web Start Launcher 就是用來開啟jnlp檔案的應用,這裡顯現是因為我已經不是第一次開啟了,如果你是第一次開啟jnlp,需要選擇下面的更多應用,找到JRE中的javaws.exe檔案開啟,後續就會出現JWSL圖示,不用再重新選擇。

開啟後會有陸續畫面閃過,第一次可能還要同意,允許之類的,我們都選擇允許。

image

最後會開啟一個如下圖的介面:

image

裡面有多個已經建立好的技術系統,我們這次的例子是跟SRM進行互動,所以介面配置會放在SRM下,如果是剛開始配置PO介面,我們就需要從頭開始建立產品、技術系統等等,本例中因篇幅的關係不做過多說明。

1.3 ESR詳細配置

1.3.1 建立名稱空間

開啟SRM技術系統後看見多個名稱空間,我們的介面配置屬性都會放在名稱空間下,名稱空間能夠保證介面的唯一性。

image

名稱空間的命名規則:一般為技術系統域名/平臺/模組,如上面的:https://srm.com/SAP/MM
如何建立名稱空間

image
image

1.3.2 建立資料夾

開啟名稱空間,發現有許多的資料夾,這裡每一個資料夾對應一個介面,我們要配置採購訂單建立修改介面,自然也需要建立一個資料夾.
選中名稱空間:

image
image

建立完成後,在名稱空間裡就能看到資料夾,左上角有個紅色標記,表示未啟用,所以我們需要啟用資料夾:

image
image
image

啟用完成後,紅色標識會消失,表示成功啟用

image

1.3.3 建立DT(Data Type)

命名規則:DT_{系統}_{介面描述:首字母大寫}_In/Out
建立:DT_ERP_Po_Create_And_Update_In
選擇資料夾,右鍵New:

image
image
image
image
image
image
image
image
image

同樣的步驟建立採購訂單建立修改介面傳出資料型別結構:DT_ERP_Po_Create_And_Update_Out

1.3.4 建立MT(Message Type)

命名規則:MT_{系統}_{介面描述:首字母大寫}_In/Out
建立:MT_ERP_Po_Create_And_Update_In
選擇資料夾,右鍵New:

image
image
image

先儲存,再啟用;然後以同樣的步驟建立:MT_ERP_Po_Create_And_Update_Out

1.3.5 建立SI(Service Interface)

命名規則:SI_{系統}_{介面描述:首字母大寫}_In/Out
建立:SI_ERP_Po_Create_And_Update_In
選擇資料夾,右鍵New:

image
image

先儲存,再啟用;然後以同樣的步驟建立:SI_ERP_Po_Create_And_Update_Out 但是有些區別:如下圖

image

1.3.6 建立MM(Message Mapping)

命名規則:MM_{系統}_{介面描述:首字母大寫}_In/Out
建立:MM_ERP_Po_Create_And_Update_In
選擇資料夾,右鍵New:

image
image

右邊也是選擇同一個MT

image
image

先儲存,再啟用;然後以同樣的步驟建立:MM_ERP_Po_Create_And_Update_Out

1.3.7 建立OM(Operation Mapping)

命名規則:OM_{系統}_{介面描述:首字母大寫}
OM只需要建立一個,所以不分In和Out
建立:MM_ERP_Po_Create_And_Update
選擇資料夾,右鍵New:

image
image

如此我們在ESR中的配置就完成了,接下來需要去配置IB

1.4 配置ID(Integration Directory)

image

點選IB之後會現在一個directory.jnlp檔案。我們同樣下載並開啟。

image

最後開啟一個如下介面:

image
開啟社群元件,看到有Business System 和 Business Component,由於本介面是SRM作為傳送方,SAP作為接收方,所以需要在各自業務系統裡建立用於接受資料協議的介面卡型別.

SRM方面:作為傳送方

image
image
image

SAP方面:作為接收方

image

IC(Integration Configuration)裡面建立BS:

image

Inbound Processing:

image

Receiver:

image

Receiver Interfaces:

image

Outbound Processing:

image

啟用BS:

image
image

上面WSDL的地址就是該介面的訪問地址,等下在後面測試的時候要用到,回頭提供給第三方SRM呼叫
注意:如果後來有調整DT的欄位,一定要重新對映下欄位即把之前MM的對映刪除,重聯一下。

2.SAP端建立代理實施類

登入SAP GUI,使用事務碼:SPROXY
在這個事務碼下可以看見之前在ESR配置技術系統下的所有介面資訊,依次開啟路徑:Source->ESR->技術系統->名稱空間,找到我們配置的介面SI:

image
image
image

同步代理類啟用的時候會自動產生一些結構和代理實施類,我們可以在類方法中檢視引數,進行邏輯處理,後續有介面欄位調整,需要右鍵重新生成,然後再啟用。

image
image
image

然後啟用代理類,這樣整個介面從配置到開發就完成了,接下來測試下我們開發的介面

3.測試

如果是同步介面,可以直接通過SPROXY測試,點選啟用按鈕旁邊的執行,可以看到介面的XML形參,點選工具欄的編輯按鈕,輸入實際資料,再點選執行,就可以看到介面的返回結果;
除此之外,還可以用第三方工具測試介面的功能,介面測試工具很多,本次選擇SOAP UI,是一款免費開源的介面測試工具,同意有付費版本,不過免費的就可以滿足日常的使用了,這裡簡單介紹如何用SOAP UI測試我們開發的介面。

3.1 開啟SOAP UI軟體,新建SOAP PROJECT:

新建一個SOAP PROJECT:MM_Po_Create_And_Update

image

將之前在BS中複製的WSDL地址填入:

image

登入PO賬號:

image

檢視報文格式:

image

新增訪問授權:

image
image

輸入測試資料,執行

image

介面返回結果;

image

看到以上就說明我們PO介面開發從配置->開發->測試圓滿的成功了。本次案例是一個同步介面作為說明,至於非同步模式以及其他協議的介面,以後有機會再說明。

相關文章