徐晓琴
摘要:随着公司信息化的快速发展,SAP(System Applications and Products in Data Processing)系统已经成为公司业务核心系统,同SAP系统集成的外圍系统也越来越多,系统提供了丰富的接口技术和开发平台。本文主要介绍了Webservice的概念、特点,并且用Webservice技术创建了SAP系统与质检系统CAQ的集成实例,重点分析了在SAP中如何用Webservice技术创建代理、配置、编译代码、测试联通等的实现过程。
关键词:SAP;Webservice技术;SOAP
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2018)14-0030-02
Abstract: With the rapid development of company information technology, SAP system has become the core business system, the peripheral system with the integration of SAP system is also more and more, and it provides the interface technology and rich system development platform. This paper mainly introduces the concept and characteristics of Webservice, creates an instance of the SAP integrated system and quality inspection system of CAQ using Webservice technology , and selective analysis on how to use SAP Webservice technology to create a proxy, configure, compile code, and test the unicom of implementation process.
Key words: SAP; Webservice technology; SOAP
1 背景
中信戴卡股份有限公司2011年开始启动SAP项目,目前为止已经实施了六期SAP深化应用项目,实现了公司采购、生产、销售、财务的一体化管理。随着公司的发展及信息化要求,外围系统也越来越多,如EDI、BI、OA、CAQ采购平台等系统。这些外围系统均与SAP系统做了对接,一般系统接口技术均采用的是RFC方式,只有与CAQ接口采用的是Webservice方式。2017年实施了SAP PI系统,是一种集成技术和集成平台,通过集成式的信息管理平台,统合庞杂的业务系统信息流,并借由平台提供的系统监管能力,实现单一窗口的运维管理。PI提供的同步式沟通渠道也是采用Webservice的WSDL方式。Webservice将作为主要的接口应用技术。
2 Webservice技术简介
Webservice是微软提出的基于互联网的开发模型,它通过Web通讯协议和信息格式的开放标准(Http,Xml,Soap)来为其他应用程序提供服务。Webservice提供一种可被调用的服务,该服务必须通过WSDL定义接口,接口描述了WEB SERVICE 的逻辑定义(types,messages,portTypes)和传输协议(bindings,services)。客户端通过WSDL定义的访问方式和逻辑结构调用该服务。Webservice的一个最基本的目的是提供在各个不同平台的不同应用系统的协同工作能力。WSDL是实现协同能力的关键,它提供了一份契约用于与新老应用之间的交互。SOAP是实现在各个Webservice组件之间传递消息的传输层。SOAP是简单对象访问协议,定义了一种跨平台的分布式系统通信协议。SOAP需要绑定到更低层次的传输协议(比如, HTTP,RMI,JMS)等。最常用的是HTTP绑定,理论上通过WSDL描述的Web Service可以有很多种不同的绑定,但是实际上经常使用SOAP HTTP绑定 。Webservice原理:SOAP是在HTTP协议基础上制定的通信协议,利用它不同网络和服务器上的程序可以相互联络而无需担心防火墙等网络安全措施的限制。
3 Web Service 接口技术实例
下面基于Webservice技术讲解下SAP与CAQ系统之间的对接。对SAP系统中采购订单进行移动类型103收货,并将这些数据到推送至CAQ系统进行质检,并将质检结果传回SAP系统。质检如果质量合格,进行移动类型105对103冻结库存收货;如不合格,则对103收货进行凭证冲销。
3.1生成Web Service消费者代理
在SAP系统中创建生成Web Service 消费者代理。首先通过事务代码SE80进入到我们要创建代理的包(ZKSM01),然后右键选择创建->企业服务-> 消费者代理,按照创建向导一步一步完成即可。需要注意的是选择WSDL 文件载入方式可以为URL网址方式或HTTP Destination目标文件选择方式, WSDL 文件网址(http://10.46.1.183/BtsWcfService/NetComIn.svc?WSDL)由CAQ方提供,输入包名ZKSM01和前缀名命名为ZSAPTOCAQ,最后保存并激活企业服务选项。生成的代理类名称ZSAPTOCAQCO_NET_COM_IN将在后续编写的SAP程序中用到。操作完成后,在包里会出现企业服务选项,里面包含了代理类及其用到的数据类型。图1为创建完成的消费者代理。
这里我生成的代理类名称SAPTOCAQCO_NET_COM_IN将在编写SAP程序中用到,这个类将在客户端编写程序代码中用到。在Properties界面里双击代理类名,可以查看各個函数传参和返回值,双击这些类型,可以看到内部结构字段。这里的传参结构在后面的程序赋值里面要用到,所以传参结构关系务必要搞清楚,能够用语言正确的表达出来。这里的类名、数据类型和函数名将在程序里面调用。图2可以在类构建器中看出输入输出参数及报错类型。
3.2在SOAMANAGER中创建逻辑端口
进入SOAMANAGER界面,进入设置逻辑端口的界面。输入代理类的名称ZSAPTOCAQCO_NET_COM_IN,以及逻辑端口名称。如果希望创建代理类时可以不专门输入逻辑端口名称,还可以勾上缺省端口选项。选择创建,进入设置界面。在设置界面里,我们需要给出逻辑端口的描述。然后在运行时间页面中选择Web 服务基础结构。接下来在调用参数界面中给出WSDL 文件的网络地址(http://10.46.1.183/BtsWcfService/NetComIn.svc?WSDL)。激活设置,即完成了逻辑端口配置。图3为逻辑端口配置完成界面。
3.3编写SAP程序
最重要一步工作就是用ABAP编写客户端程序,还需用到许多与Webservice无关的代码和算法,略。主要介绍与Webservice有关的代码。在SE38中开发采购订单推送至CAQ系统的ALV程序,执行ALV输出后,通过点击“保存”按钮来触发调用Webservice接口函数ZIF_CAQ_ORDER来推送至CAQ系统。图4为采购订单推送至CAQ程序。
Webservice接口函数中定义了代理类、传参和返回值的对应类、Web Service 报错类。定义类代码略。注意:创建代理类需要的逻辑端口名称输入前面创建好的代理名称ZSAPTOCAQCO_NET_COM_IN。 创建类对象的代码如下:
TRY.
CREATE OBJECT LO_CLIENTPROXY
EXPORTING
LOGICAL_PORT_NAME = 'ZSAPTOCAQCO_NET_COM_IN'.
CALL METHOD LO_CLIENTPROXY->SET_NET_COM_IN
EXPORTING
INPUT = IS_REQUEST
IMPORTING
OUTPUT = IS_RESPONSE.
CATCH CX_AI_SYSTEM_FAULT INTO LO_SYS_EXCEPTION.
IF LO_SYS_EXCEPTION->ERRORTEXT IS NOT INITIAL.
CONCATENATE '失败返回' LO_SYS_EXCEPTION->ERRORTEXT INTO OUT_TAB-MESGE.
APPEND OUT_TAB.
ENDIF.
ENDTRY.
在这个ZSAPTOCAQCO_NET_COM_IN类中,方法SET_NET_COM_IN介绍如何传参和取得返回值。IS_REQUEST是输入结构,IS_RESPONS是返回结构,如果LO_SYS_EXCEPTION->ERRORTEXT这个不为空,则有错误消息,接口不通,解决这些错误都需要经验的积累,有可能是SAP这边配置错误,也有可能是接口系统那边配置错误,这些都需要双方共同检查完成,直到没有错误为止。
3.4 SOAPUI调试
可使用第三方软件SOAPUI进行测试接口是否物理上调试通过。例如测试CAQ系统回传采购订单收货质检结果。在SOAPUI软件中调用接口WSDL网址(http://10.46.1.82:8000/SAP/bc/srt/WSDL/srvc_58ABBBF6546206C0E10080000A2E0150/WSDL11/allinone/ws_policy/document?SAP-client=200)创建项目,添加接口账号密码,输入传入参数消息,执行后得到调用响应消息的XML流出流。如图5所示:
得到输出消息,说明外部调用SAP Webservice成功。SOAPUI测试通过,则说明SAP这边的配置是正确的。如果和CAQ系统联合测试不通,则需要CAQ那边的开发进行问题查找,基本不会是SAP这边的问题。
4 结论
对于Webservice提供者来说,部署、升级和维护Web service都非常单纯,不需要考虑客户端兼容问题,而且一次性就能完成。对于Web service使用者来说,可以轻易实现多种数据、多种服务的聚合,因此能够做出一些以前无法想象的事情。具有这样的优势并且随着Webservice技术越来越成熟,Webservice将成为信息系统集成的一项重要接口技术。目前看来,大家都比较推荐使用WebService的方式来保证系统相互之间的灵活集成。
参考文献:
[1] 黄佳.SAP高级应用开发[M].北京:人民邮电出版社,2008.
[2] 唐亮.SAP接口技术研究与开发[D].同济大学,2006.