1、SAP ECC系统Web Service服务发布与调用SAP ECC系统Web Service服务发布与调用目录Web Service概念5ECC 6.0 SP14之后版本6发布Web Service服务:61. SE37创建Function62. SE80创建服务73. SOAMANAGER配置服务9调用SAP系统发布的Web Service服务141. SE80创建代理142. LPCONFIG创建Logical Port153. 测试代理18调用外部异构系统发布的Web Service服务211. SE80创建代理212. LPCONFIG创建Logical Port223. 测试代理2
2、4ECC 6.0 SP14之前版本26发布Web Service服务:261. SE37创建Function262. SE80创建服务273. WSCONFIG314. WSADMIN33调用Web Service服务。351. SE80创建代理352. LPCONFIG创建Logical Port363. 测试代理37Web Service概念简单来说,Web Service就是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web Ser
3、vice可以在任何支持这些标准的环境(Windows,Linux)中使用。注:SOAP协议(Simple Object Access Protocol,简单对象访问协议),它是基于XML的用于分散和分布式环境下网络信息交换的通讯协议。在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。 优势 1.跨平台。2.支持度高,SOAP协议是基于XML和HTTP这些业界的标准的。 3.数据是以ASCII文本的方式而非二进制传输,调试方便,并实现跨防火墙通信。4.技术难度低,开
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。完成F
5、unction代码,包括输入输出参数。2. SE80创建服务SE80选择开发包或者本地对象右键CreateEnterprise Service/Web ServiceWeb 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即可。P
6、RF_DT_IF_SEC_HIGHAuthentication using certificates and transport guaranteesPRF_DT_IF_SEC_LOWAuthentication using UserID and password, no transport guaranteePRF_DT_IF_SEC_MEDIUMAuthentication using UserID and password and transport guaranteePRF_DT_IF_SEC_NONo authorization and no transport guaranteeP
7、ackage/Request勾选Local Object即可。系统提示Web Service服务将被创建。3. SOAMANAGER配置服务SOAMANAGER需要的权限RoleDescriptionSAP_BC_WEBSERVICE_SERVICE_USERRole for background users of the Web service runtimeSAP_BC_WEBSERVICE_ADMIN_TECRole for technical administrator of Web servicesMonitoring of sequences, messages, logging,
8、 tracing, bgRFC, process integrationMonitoring of payload for component SAP_BASISAdministration of tracing and logging, bgRFC, RFC Definition, execution, and publication of Web servicesAdministration of the Internet Communication FrameworkAdministration of the RFC destinationAdministration of the Ta
9、sk Watcher and the Event HandlerSAP_BC_WEBSERVICE_ADMIN_BIZRole for the business administratorSAP_BC_WEBSERVICE_CONSUMERUsers of a Web serviceSAP_BC_WEBSERVICE_OBSERVERUser role for viewing all information on Web ServicesSAP_BC_WEBSERVICE_DEBUGGERRole with debugging authorizationSAP_BC_WEBSERVICE_AD
10、MINAdministration 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:WINDOWSsystem32driversetc文件中添加映射,讲主机名改成hostname. doma
11、in的形式。解决方法二: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 Selecti
12、on。在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
13、/wsdl/bndg_4A0C6BE061170CE5E10000000ADF0216/wsdl11/allinone/ws_policy/document?sap-client=200现在可以看到服务说明。调用SAP系统发布的Web Service服务1. SE80创建代理SE80选择开发包或者本地对象右键CreateEnterprise Service/Web ServiceProxy Object选择Service Consumer。选择URL/HTTP Destination。URL中填入SOAMANAGER得到的地址(主机名换成IP地址)。选择Package,创建Prefix。系统提
14、示代理将被创建,并提示保存和激活代理。输入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
15、/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参数。保存激活(再次保存之后Logi
16、cal 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 messag
17、e 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 RADIO
18、BUTTON 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-INPUTDAT
19、E = . 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.* Erro
20、r handlingENDTRY.测试效果如下:调用外部异构系统发布的Web Service服务本例:调用.NET创建Web Service服务,URL为:http:/10.232.19.37:8008/webservice/service1.asmx?WSDL1. SE80创建代理SE80选择开发包或者本地对象右键CreateEnterprise Service/Web ServiceProxy Object选择Service Consumer。选择URL/HTTP Destination。 URL中填入SOAMANAGER得到的地址(主机名换成IP地址)。选择Package,创建Prefi
21、x。系统提示代理将被创建,并提示保存和激活代理。系统提示已经创建代理,同时需要保存和激活。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中找到如下代码: 将”http:/tempuri.org/HelloWorld”填入SO
22、AP 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_e
23、xception 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
24、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 l
25、o_sys_exception. write: / lo_sys_exception-ERRORTEXT.* Error handlingENDTRY.测试效果如下:ECC 6.0 SP14之前版本发布Web Service服务:1. SE37创建Function选择Remote-Enabled Module。完成Function代码,包括输入输出参数。2. SE80创建服务SE80选择开发包或者本地对象右键CreateEnterprise Service/Web ServiceWeb Service点击Continue。填入Service Definition和Short Text,Endp
26、oint 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,勾选
27、Release Service for Runtime。点击Complete,完成Web Service服务发布。可以看见Web Service服务ZLIDES处于Active状态。3. WSCONFIG填入Service Definition和Variant,回车,双击Web Service ZLIDES。单击ICF Details。双击ZLIDES。在Logon Data中可以配置登录的集团号、用户名和密码。系统会提示dont use dialog users,一般都采用后台用户。4. WSADMINWSADMINZLIDES ZLIDES Web Service ZLIDESWeb Se
28、rviceWSDL选择RPC Style。在浏览器中可看到如下界面。地址为::8003/sap/bc/srt/rfc/sap/ZLIDES?sap-client=700&wsdl=1.1&style=rpc。5)通过SE37直接发布Web Service服务SE37UtilitiesMore Utilities Create Web ServiceFrom the Function Module。后续步骤参见SE80发布方式。调用Web Service服务。1. SE80创建代理SE80选择开发包或者本地对象右键CreateEnterprise Service/Web ServiceProxy
29、 Object选择URL/HTTP Destination。填入我们在创建服务时得到的地址。填入Package和Prefix。激活。2. LPCONFIG创建Logical Port填入Proxy Class和Logical Port,勾选Default Port,点击生成。填入Description,点击保存。系统提述Logical Port处于Inactive状态,点击激活。3. 测试代理l SE80本地对象Enterprise ServicesClient ProxiesZIDES_CO_ZLIDESl 点击Test Interface或者直接F8执行。直接执行。系统提示Services Processed Without Error。 32 / 32