- 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.