- FM創建
首先,執行Tcode:SE37,進入函數創建界面。
在創建函數之前,先創建一個Function Group,或者使用系統中已經創建好的Function Group。自定義函數組方法如下:
執行Create Group功能后,彈出如下圖所示對話框:
錄入信息后,點擊保存。然后返回到Function Builder界面,在Function Module文本框錄入FM的名稱:Z_CALCULATE,點擊創建按鈕,如下圖所示:
點擊保存按鈕,進入FM編輯頁面。如下圖所示:
在Attributes面板中,Processing Type選擇Remote-Enabled Module單選按鈕,然后進入Import/Export/Changing/Tables/Exceptions面板,如下圖所示:
錄入參數,並勾選Pass Value復選框,否則將無法成功發布webService。然后進入Source Code進行代碼編輯,如下圖所示:
點擊檢查按鈕,然后保存激活改FM。
- webService發布
在FM激活之后,在菜單Utilities中選擇More Utilities→Create webService→From the Function Module。如下圖所示:
執行菜單功能按鈕后,將彈出以下對話框:
定義服務,點擊繼續按鈕,如下圖所示:
點擊繼續。
點擊繼續。
勾選Local Object復選框,若不勾選,則必須要在相應文本框錄入當前所要應用的Package名稱,及所創建的Transport Request。然后點擊繼續按鈕。
點擊完成按鈕,此時ZSAP_CALCULATE服務已經創建完成了。
在當前系統訪問事務碼:SOAMANAGER,進入SOA Management界面。如下圖所示:
在Business Administration面板,執行Web Service Administration,如下圖所示:
創建查詢服務,點擊Start按鈕。選中剛創建好的服務,點擊Apply Selection。如下圖所示:
點擊Configurations→Create Service。
在彈出的SOA Management界面,錄入相應信息后,點擊Apply Settings。然后在Overview面板,執行Open WSDL document for selected binding。如下圖所示:
我們所要的URL鏈接地址即為地址欄中顯示的內容。
然后在當前系統中執行Tcode:SICF,進入Maintain Services界面,如下圖所示:
然后在Service Name文本框中錄入服務名稱,點擊執行按鈕。
選中ZSAP_CALCULATE,右鍵執行Test Service功能。測試結果如下圖所示:
地址欄中顯示的內容即為我們要找的EndPoint地址。
- webService調用配置
webService發布之后,我們就需要到調用該webService的系統進行一些相關配置,實現調用之前的接口函數。
在要調用該webService的SAP系統,執行事務碼SE80。
在相應對象上右鍵選擇Create→Enterprise Service,並執行該菜單功能,進入如下圖所示界面:
選擇Service Consumer,點擊繼續。
選擇URL/HTTP Destination,點擊繼續。
在URL文本框中錄入之前查詢的URL。錄入之后點擊繼續。
填寫Prefix信息,勾選Local Object復選框,將對象保存到本地,否則錄入相應的package和Request/Task,點擊繼續按鈕。
點擊完成按鈕。
錄入webService所在系統的用戶名、密碼,點擊確定按鈕。
點擊激活按鈕。然后執行事務碼LPCONFIG,進入Display/Create Logical Port界面,創建邏輯端口。
點擊創建,進入編輯頁面。
按照上圖進行相關配置。在General Settings面板,打開Call Parameter面板,如下圖所示:
URL為EndPoint地址,經檢查后激活該邏輯端口。
- Report開發
*&---------------------------------------------------------------------*
*& Report ZTEST_SCREEN
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_WEBSERVICE.
DATA: CONVERT TYPE REF TO ZCO_ZSAP_CALCULATECO_ZSAP_CALC,
INPUT_PAR TYPE ZCO_ZSAP_CALCULATEZCALCULATE,
OUTPUT_PAT TYPE ZCO_ZSAP_CALCULATEZCALCULATE_R.
CREATE OBJECT CONVERT.
INPUT_PAR-NUMBER1 = '1'.
INPUT_PAR-NUMBER2 = '3'.
INPUT_PAR-ZOPERATOR = '+'.
TRY.
CALL METHOD CONVERT->ZCALCULATE
EXPORTING
INPUT = INPUT_PAR
IMPORTING
OUTPUT = OUTPUT_PAT.
CATCH CX_AI_SYSTEM_FAULT .
WRITE 'Error:Communication Error'.
CATCH CX_AI_APPLICATION_FAULT .
WRITE 'Error:Application Error'.
ENDTRY.
WRITE: OUTPUT_PAT-RESULT.