资源描述
SAP ECC系统Web Service服务发布与调用
SAP ECC系统Web Service服务发布与调用
目录
Web Service概念 5
ECC 6.0 SP14之后版本 6
发布Web Service服务: 6
1. SE37创建Function 6
2. SE80创建服务 7
3. SOAMANAGER配置服务 9
调用SAP系统发布的Web Service服务 14
1. SE80创建代理 14
2. LPCONFIG创建Logical Port 15
3. 测试代理 18
调用外部异构系统发布的Web Service服务 21
1. SE80创建代理 21
2. LPCONFIG创建Logical Port 22
3. 测试代理 24
ECC 6.0 SP14之前版本 26
发布Web Service服务: 26
1. SE37创建Function 26
2. SE80创建服务 27
3. WSCONFIG 31
4. WSADMIN 33
调用Web Service服务。 35
1. SE80创建代理 35
2. LPCONFIG创建Logical Port 36
3. 测试代理 37
Web Service概念
简单来说,Web Service就是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用。注:SOAP协议(Simple Object Access Protocol,简单对象访问协议),它是基于XML的用于分散和分布式环境下网络信息交换的通讯协议。在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。
优势
1.跨平台。
2.支持度高,SOAP协议是基于XML和HTTP这些业界的标准的。
3.数据是以ASCII文本的方式而非二进制传输,调试方便,并实现跨防火墙通信。
4.技术难度低,开发周期短,Web Service实现的技术难度远远低于CORBA和DCOM。
5.实现代码和数据的重用。
6.成本低,在B2B集成方面, Web Service可以低成本的实现。
7.用Web service来集成各种应用中的功能,能为用户提供一个统一的界面
局限性
1.使用了XML对数据封装,会造成大量的数据要在网络中传输。
2.没有规定任何与实现相关的细节,包括对象模型、编程语言。
3.单机应用程序和局域网上的同构应用程序不适用Web Service。
ECC 6.0 SP14之后版本
发布Web Service服务:
1. SE37创建Function
选择Remote-Enabled Module。
完成Function代码,包括输入输出参数。
2. SE80创建服务
SE80à选择开发包或者本地对象à右键CreateàEnterprise Service/Web ServiceàWeb Service
选择Service Provider,点击Continue。
选择Existing ABAP Objects,点击Continue。
填入Service Definition和Short Text,Endpoint Type选择FUNC Function Module,点击Continue。
填入Function Module名称,点击Continue。
Profile一般选择PRF_DT_IF_SEC_NO即可。
PRF_DT_IF_SEC_HIGH
Authentication using certificates and transport guarantees
PRF_DT_IF_SEC_LOW
Authentication using UserID and password, no transport guarantee
PRF_DT_IF_SEC_MEDIUM
Authentication using UserID and password and transport guarantee
PRF_DT_IF_SEC_NO
No authorization and no transport guarantee
Package/Request勾选Local Object即可。
系统提示Web Service服务将被创建。
3. SOAMANAGER配置服务
SOAMANAGER需要的权限
Role
Description
SAP_BC_WEBSERVICE_SERVICE_USER
Role for background users of the Web service runtime
SAP_BC_WEBSERVICE_ADMIN_TEC
Role for technical administrator of Web services
Monitoring of sequences, messages, logging, tracing, bgRFC, process integration
Monitoring of payload for component SAP_BASIS
Administration of tracing and logging, bgRFC, RFC
Definition, execution, and publication of Web services
Administration of the Internet Communication Framework
Administration of the RFC destination
Administration of the Task Watcher and the Event Handler
SAP_BC_WEBSERVICE_ADMIN_BIZ
Role for the business administrator
SAP_BC_WEBSERVICE_CONSUMER
Users of a Web service
SAP_BC_WEBSERVICE_OBSERVER
User role for viewing all information on Web Services
SAP_BC_WEBSERVICE_DEBUGGER
Role with debugging authorization
SAP_BC_WEBSERVICE_ADMIN
Administration authorization for Web Services in AS ABAP – old version, but still valid
执行T-code:SOAMANAGER,浏览器会打开一个页面:
http://hnepcd16:8000/sap/bc/webdynpro/sap/appl_soap_management?sap-language=EN
系统提示无法打开页面。这是因为主机名hnepcd16不符合webdynpro的规范。
解决方法一:在C:\WINDOWS\system32\drivers\etc文件中添加映射,讲主机名改成hostname. domain的形式。解决方法二:RZ10添加参数icm/host_name_full=(hostname).domain。解放方法三:如果主机加入了域,将地址中的主机名改成域名。本例中采用第三种方案,打开如下地址。
:8000/sap/bc/webdynpro/sap/appl_soap_management?sap-language=EN
系统弹出登录界面,点击Log On,输入用户名密码。
选择Business Administration页签,点击Web Service Administration。
Search by选择Service,点击Go。
选中刚才创建的服务名,点击Apply Selection。
在Configurations页签中可以看见该服务处于Active状态。
在Overview页签中,点击Open WSDL document for selected binding。
系统会打开一个页面,地址如下:
http://hnepcd16:8000/sap/bc/srt/wsdl/bndg_4A0C6BE061170CE5E10000000ADF0216/wsdl11/allinone/ws_policy/document?sap-client=200
系统提示无法打开网页,同样是因为主机名的原因。
将主机名替换成IP地址。
http://10.223.2.22:8000/sap/bc/srt/wsdl/bndg_4A0C6BE061170CE5E10000000ADF0216/wsdl11/allinone/ws_policy/document?sap-client=200
现在可以看到服务说明。
调用SAP系统发布的Web Service服务
1. SE80创建代理
SE80à选择开发包或者本地对象à右键CreateàEnterprise Service/Web ServiceàProxy Object
选择Service Consumer。
选择URL/HTTP Destination。
URL中填入SOAMANAGER得到的地址(主机名换成IP地址)。
选择Package,创建Prefix。
系统提示代理将被创建,并提示保存和激活代理。
输入Client,User name和Password。
系统提示已经创建代理,同时需要保存和激活。
系统显示代理ZLWSTest的状态为NEW(Revised),需要激活。
2. LPCONFIG创建Logical Port
执行T-code:LPCONFIG,填入Proxy Class和Logical Port,勾选Default Port,点击生成。
输入Description。
在Call Parameters页签中填入URL,不能采用上面的URL。
执行T-code:SICF。
找到服务名,路径为:/default_host/sap/bc/srt/rfc/sap/zlwstest/200/zlwstest/。右键单击服务明,选择Test Service。
系统打开页面,地址为:
http://hnepcd16:8000/sap/bc/srt/rfc/sap/zlwstest/200/zlwstest/zlwstest?sap-client=200
讲主机名替换为IP地址,这就是我们需要的URL。
http://10.223.2.22:8000/sap/bc/srt/rfc/sap/zlwstest/200/zlwstest/zlwstest?sap-client=200
勾选Message ID和State Management参数。
保存à激活(再次保存之后Logical Port将处于inactive状态)。
3. 测试代理
SE38创建程序Z_WS_TEST测试接口。代码如下:
REPORT Z_WS_TEST NO STANDARD PAGE HEADING MESSAGE-ID 00.
DATA:
* Reference variables for proxy and exception class
lo_clientproxy TYPE REF TO ZWSTEST_CO_ZLWSTEST,
lo_sys_exception TYPE REF TO cx_ai_system_fault,
* Structures to set and get message content
ls_helloworld TYPE ZZHUL_TEST_CHAR20,
ls_request TYPE ZWSTEST_ZWS_DEV1,
ls_response TYPE ZWSTEST_ZWS_DEV1RESPONSE.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS: RAD_A RADIOBUTTON GROUP RAD1 DEFAULT ‘X’.
PARAMETERS: RAD_B RADIOBUTTON GROUP RAD1.
PARAMETERS: RAD_C RADIOBUTTON GROUP RAD1.
SELECTION-SCREEN END OF BLOCK B1.
****Set the input parameter into the Request of the SOAP Object
****Create the Proxy and Clall it.
CREATE OBJECT lo_clientproxy.
IF RAD_A = ‘X’.
ls_request-INPUTDATE = ‘X’.
ENDIF.
IF RAD_B = ‘X’.
ls_request-INPUTDATE = ‘Y’.
ENDIF.
IF RAD_C = ‘X’.
ls_request-INPUTDATE = ‘ ‘.
ENDIF.
TRY.
CALL METHOD lo_clientproxy->ZWS_DEV1
EXPORTING
INPUT = ls_request
IMPORTING
OUTPUT = ls_response.
****Write Out the Basic Information
ls_helloworld = ls_response-OUTPUTDATE.
WRITE /1 ls_helloworld.
CATCH cx_ai_system_fault INTO lo_sys_exception.
write: / lo_sys_exception->ERRORTEXT.
* Error handling
ENDTRY.
测试效果如下:
调用外部异构系统发布的Web Service服务
本例:调用.NET创建Web Service服务,
URL为:http://10.232.19.37:8008/webservice/service1.asmx?WSDL
1. SE80创建代理
SE80à选择开发包或者本地对象à右键CreateàEnterprise Service/Web ServiceàProxy Object
选择Service Consumer。
选择URL/HTTP Destination。
URL中填入SOAMANAGER得到的地址(主机名换成IP地址)。
选择Package,创建Prefix。
系统提示代理将被创建,并提示保存和激活代理。
系统提示已经创建代理,同时需要保存和激活。
2. LPCONFIG创建Logical Port
执行T-code:LPCONFIG,填入Proxy Class和Logical Port,勾选Default Port,点击生成。
输入Description。
在Call Parameters页签中填入URL。
在Operations页签中填入SOAP Action。
在http://10.232.19.37:8008/webservice/service1.asmx?WSDL中找到如下代码:
<wsdl:binding name=”Service1Soap” type=”tns:Service1Soap”>
<soap:binding transport=”http://schemas.xmlsoap.org/soap/http” />
<wsdl:operation name=”HelloWorld”>
<soap:operation soapAction=”http://tempuri.org/HelloWorld” style=”document” />
将”http://tempuri.org/HelloWorld”填入SOAP Action。
勾选Message ID和State Management参数。
保存à激活(再次保存之后Logical Port将处于inactive状态)。
3. 测试代理
SE38创建程序Z_NETWS_TEST测试接口。代码如下:
REPORT Z_NETWS_TEST NO STANDARD PAGE HEADING MESSAGE-ID 00.
----------------------------------------------------------------------
*数据定义
&---------------------------------------------------------------------
DATA:
* Reference variables for proxy and exception class
lo_clientproxy TYPE REF TO ZWSNET_CO_SERVICE1SOAP,
lo_sys_exception TYPE REF TO cx_ai_system_fault,
* Structures to set and get message content
ls_helloworld TYPE ZWSNET_HELLO_WORLD_SOAP_OUT-HELLO_WORLD_RESULT,
ls_request TYPE ZWSNET_HELLO_WORLD_SOAP_IN,
ls_response TYPE ZWSNET_HELLO_WORLD_SOAP_OUT.
****Set the input parameter into the Request of the SOAP Object
****Create the Proxy and Clall it.
CREATE OBJECT lo_clientproxy.
TRY.
CALL METHOD lo_clientproxy->HELLO_WORLD
EXPORTING
INPUT = ls_request
IMPORTING
OUTPUT = ls_response.
****Write Out the Basic Information
ls_helloworld = ls_response-HELLO_WORLD_RESULT.
WRITE /1 ls_helloworld.
CATCH cx_ai_system_fault INTO lo_sys_exception.
write: / lo_sys_exception->ERRORTEXT.
* Error handling
ENDTRY.
测试效果如下:
ECC 6.0 SP14之前版本
发布Web Service服务:
1. SE37创建Function
选择Remote-Enabled Module。
完成Function代码,包括输入输出参数。
2. SE80创建服务
SE80à选择开发包或者本地对象à右键CreateàEnterprise Service/Web ServiceàWeb Service
点击Continue。
填入Service Definition和Short Text,Endpoint Type选择FUNC Function Module。
在Function Module中填入第一步创建的Function名称。
关于Name Mapping:If the flag ‘Mapping of Names’ is set, the existing labels for the endpoint are copied. Only the beginning letters are uppercase letters and underscores are removed.一般情况下不用勾选。
Profile选择Basic Authorization:SOAP Profile,勾选Release Service for Runtime。
点击Complete,完成Web Service服务发布。
可以看见Web Service服务ZLIDES处于Active状态。
3. WSCONFIG
填入Service Definition和Variant,回车,双击Web Service ZLIDES。
单击ICF Details。
双击ZLIDES。
在Logon Data中可以配置登录的集团号、用户名和密码。
系统会提示don’t use dialog users,一般都采用后台用户。
4. WSADMIN
WSADMINàZLIDESà ZLIDES àWeb Service ZLIDES
Web ServiceàWSDL
选择RPC Style。
在浏览器中可看到如下界面。
地址为:
:8003/sap/bc/srt/rfc/sap/ZLIDES?sap-client=700&wsdl=1.1&style=rpc。
5) 通过SE37直接发布Web Service服务
SE37àUtilitiesàMore Utilities àCreate Web ServiceàFrom the Function Module。
后续步骤参见SE80发布方式。
调用Web Service服务。
1. SE80创建代理
SE80à选择开发包或者本地对象à右键CreateàEnterprise Service/Web ServiceàProxy Object
选择URL/HTTP Destination。
填入我们在创建服务时得到的地址。
填入Package和Prefix。
激活。
2. LPCONFIG创建Logical Port
填入Proxy Class和Logical Port,勾选Default Port,点击生成。
填入Description,点击保存。
系统提述Logical Port处于Inactive状态,点击激活。
3. 测试代理
l SE80à本地对象àEnterprise ServicesàClient ProxiesàZIDES_CO_ZLIDES
l 点击Test Interface或者直接F8执行。
直接执行。
系统提示Services Processed Without Error。
32 / 32
展开阅读全文