SAP与非SAP系统通过XI的Web Service与IDOC交互

需积分: 10 1 下载量 63 浏览量 更新于2024-09-14 收藏 618KB DOC 举报
"XI中WEB+SERVICE的应用" 本文将深入探讨在SAP Exchange Infrastructure (XI) 中如何利用Web Service技术处理两个不同的业务场景。XI作为一个集成平台,能够接收来自不同系统的Web Service请求,通过映射转换,将数据以IDOC(Intermediate Document)的形式发送到SAP ECC6系统以生成采购订单(PO)。 ### 场景1:SAP系统(Web Service)→ XI → SAP系统(IDOC) 在这个场景中,一个SAP系统作为发起方,通过Web Service请求与XI进行通信。为了实现这个流程,首先需要在XI的Repository中定义一个MSG Interface,这个接口将作为SAP系统调用的出站接口。SAP系统能够直接连接到XI所在的NetWeaver系统的Service Layer Directory (SLD),获取XI Repository中的WSDL(Web Service Description Language)文件,从而生成一个代理类(Proxy Class)用于调用Web Service。 #### MSG Interface 定义 MSG Interface在XI Repository中定义了接口的结构,包括输入和输出字段,以及必要的业务逻辑。这些定义将指导XI如何处理接收到的数据,并将其转化为适合IDOC格式的格式。 #### 发送方SAP系统的程序调用 在SAP系统中,开发人员会编写一个报告(Report),例如`Z_WEBSERVICE_01`,该报告创建一个指向XI定义的代理类的对象,通过这个对象调用Web Service并传递所需的数据。代理类自动生成的代码能够处理与Web Service的交互,包括编码、解码和错误处理。 ```abap *&---------------------------------------------------------------------* *& Report Z_WEBSERVICE_01 *& *&---------------------------------------------------------------------* *You can use a client proxy to do the following: * To call a service using the SAP XI Integration Server * To call a Web service *&---------------------------------------------------------------------* REPORT Z_WEBSERVICE_01. DATA: LO_CLIENTPROXY TYPE REF TO ZXI. ``` 在上述ABAP代码示例中,`LO_CLIENTPROXY`是一个变量,引用了由XI Repository WSDL生成的代理类`ZXI`。通过这个代理,SAP系统能够发送Web Service请求并将数据传入XI。 ### 场景2:非SAP系统(Web Service)→ XI → SAP系统(IDOC) 在这个场景中,非SAP系统(例如基于Java的SAP NetWeaver Developer Studio或.NET应用,这里使用XMLSPY工具)作为Web Service的发起方。流程与场景1类似,只是非SAP系统需要自己生成调用XI Web Service的客户端代码,这通常涉及到解析XI提供的WSDL文件并生成相应的客户端库。 #### 非SAP系统的Web Service调用 非SAP系统需要实现对XI Web Service的调用,这可能涉及使用XMLSPY或其他开发工具生成与WSDL文件匹配的客户端代码。一旦生成,这些代码可以被集成到非SAP应用中,使得应用能够发送数据到XI,随后XI将数据映射并转换为IDOC,最终发送到SAP ECC6系统生成PO。 总结来说,SAP XI通过Web Service技术提供了一种灵活的集成方式,允许SAP和非SAP系统之间交换数据,即使它们采用不同的编程语言和技术栈。通过合理的配置和映射,XI能够确保数据在不同系统间顺畅流动,满足企业的集成需求。