webservice创建与使用
webservice
Web Service就是一个应用程序,它向外界暴露出一个能够通过Web调用的API。Web Service是一种基于Web的中间件技术。用户通过把应用程序的一部分包装成Web服务的形式,将自己的应用程序功能提供给别人
ALE/IDOC
ALE是SAP专门为SAP与SAP之间所设计的整合中间件。ALE技术是分布–集成式的SAP系统实现基础。
从技术角度来说,ALE主要应用于两个有业务联系的SAP系统之间的数据同步,但也支持在SAP和非SAP系统间的数据同步的实现。
如果用最简单的语言介绍ALE的基本功能,可以认为其主要用于便捷地实现SAP系统/应用间的业务信息和数据的复制。数据以业务对象(BO)为实现单元,在系统/应用间通过基于RFC协议的ALE接口,以IDoc格式进行传递,在此过程中,系统将保证数据的完整性。IDoc是系统间数据交换过程中的媒介,SAP数据库中的IDoc结构包括一个控制记录、一段或多段数据记录以及一段或多段状态记录。
IDoc多用于在SAP系统之间的传输数据,IDoc对接收端的配置人员要求高。
IDOC出站处理:
1)应用层:生成应用数据
2)ALE层:创建出站IDOC
3)通讯层:寻找伙伴和端口
4)发送 IDoc
IDOC入站处理:
1)通讯层:接收入站端口传来的数据.
2)ALE 层:创建入站IDOC并通过伙伴参数文件查找IDOC处理类型.
3)应用层:写入文档.
SAP和SAP系统之间传输,系统有很多标准的配置实现,做增量数据传输很方便,需要配置的RFC逻辑连接是R3类型。SAP系统和外部系统交互,一般采用生成文件的方式,放在本地,再转化为XML或者FTP形式发送给对方,配置的RFC逻辑连接时T类型。在这里补充一下SAP发送到FTP的实现方法:建立RFC逻辑连接,函数连接FTP,账户密码登陆,然后用FTP命令在指定位置创建文件。
SAP调用远程功能的能力是通过RFC接口系统(RFC interface system)实现的。根据调用方向的不同(SAP系统调用其他模块或其他系统调用SAP模块),RFC接口提供以下两种服务。
(1)ABAP程序的调用接口
任何ABAP程序都能使用CALL FUNCTION⋯DESTINATION语句调用远程功能。
(2)非SAP ABAP程序的调用接口
非ABAP程序必须以特定的规格进行编程,以确保它可作为RFC通信中的伙伴方。
RFC( 远程服务调用)
RFC是SAP系统之间以及SAP与外部系统之间程序通信的基本接口技术,诸多其他更高层的SAP接口和通信技术,如BAPI,ALE等,都是基于RFC实现的。
根据通信方向和通信类型,共有如下三种RFC通信:
p 两个独立的SAP系统之间通信;
p SAP系统作为调用系统,与外部远程系统(非SAP ABAP系统)通信;
p 外部系统作为调用系统,与SAP系统通信。
SAP为多种语言及相关的操作系统提供RFC库(其中包含RFC API)及SAP连接器。连接配置操作简单。为Java提供的Java Connector(JCo),为C和C++提供的RFC SDK(RFC Software Development Kit),为.NET(C#,VB.NET等)提供的 .NET Connector(NCo),为Louts Notes 提供的Louts connector 。RFC分为同步和异步的,队列RFC,事务性RFC。
BAPI
在研究BAPI之前,首先要了解业务对象(Business Object,简称BO) 和业务对象仓库(Business Object Repository,简称BOR) 。
BO代表的是实际世界的对象,比如一个采购订单,一个物料数据。SAPBO包含业务数据,并完整描述了业务过程。系统内部应用和系统间在BO级别进行通信:
通过调用BAPI,内部及外部应用可以通过portal、java、.net、以及webservice等标准访问和操作业务对象。
BOR是SAP业务对象类型(业务对象的定义和描述)和相关BAPI的组织中心。其中的BO根据其隶属的应用层级进行组织,以便于查找。BOR管理着SAPBO的不同发布版本,同时保证其接口的版本兼容性
Middleware
中间件是CRM特有的接口技术,是CRM系统和其他外部系统交互的工具,CRM通过适配器实现数据传输,XML适配器,IDOC的适配器,R3适配器等等。在不同系统之间传递的媒介是BDOC,BDOC的本质是qRFC。CRM传输的对象分为“业务对象”,“定制对象”和“条件对象”。其中“配置对象”是一些配置表的对象,一般用于初始化传输的,业务对象就是CRM的业务对象。
简而言之CRM的处理机制可以理解为:CRM->BDoc->IDoc/xml/BAPI结构->外部系统。
数据传输时,CRM将出站数据和处理函数打包写入BDOC(qRFC),数据存入数据库,然后调度程序将数据库里的数据写入入站队列,在接收方再将数据映射为自己系统的数据。
比如,CRM 的order,保存时候,调用函数CRM_ORDER_SAVE,函数产生出站队列,到ERP端之后根据适配器里定义函数将数据转化为ERP的数据结构再保存到ERP的数据库。
实现两边系统的传输步骤是:定义好站点,确定RFC目标系统,注册并启动队列,传输数据,监控。
创建方式
webservice
第一种:通过se80
- se80 进入界面 ===== >创建 ===>企业服务
点击Service Rrovider 后继续
此处选择Existing ABAP Object(Inside Out)
选择组别:
● Function Group 组里面的内容,一个组里可以有多个Function Module
● Function module 一个函数
● BAPI
选择FunctionModule , 记住functionmodule 必须要是Remote Function,也就是远程启用的模块
点击继续
设置SOAP和Profile文件传输的协议,安全级别等设置
如果是放在本地的话,request就不需要设置,如果是放在某个package下的话,需要制定一下request
完成创建
ZWS_F00001
第二种: 通过函数: 实用程序===> 更多实用程序==>创建webservice
中文模式下
点击创建函数模块,后续与第一种的创建方式相同. 一直点击下一步,
激活程序
点击执行
继续执行
继续执行
最后会显示response
测试消费者consumer
第一种通过URL,链接,
http://s4hdev.luxshare.com.cn:8000/sap/bc/srt/wsdl/flv_10002P111AD1/sdef_url/ZWS_F00002?sap-client=110
第二种通过生成文件
创建comusmer
点击External WSDL/Schema
选择LocalObject的话,就只需要写前缀即可,非本地,需要创建请求,
点击继续知道创建完成
consumer调用porvider
源码
创建provider的时候RemoteFunction的源码
FUNCTION ZFM_ADD.
sum = num1 + num2 .
WRITE: / sum .
ENDFUNCTION.
调用provider源码
DATA lr_consumer TYPE REF TO zws_consumer01co_zws_f00002.
TRY.
CREATE OBJECT lr_consumer
* EXPORTING
* logical_port_name =
.
CATCH cx_ai_system_fault .
ENDTRY.
TRY.
CALL METHOD lr_consumer->zfm_add
EXPORTING
input = input
IMPORTING
output = output.
CATCH cx_ai_system_fault .
ENDTRY.
BREAK-POINT .
DATA lr_consumer TYPE REF TO zws_consumer01co_zws_f00002.
TRY.
CREATE OBJECT lr_consumer
* EXPORTING
* logical_port_name =
.
CATCH cx_ai_system_fault .
ENDTRY.
TRY.
CALL METHOD lr_consumer->zfm_add
EXPORTING
input = input
IMPORTING
output = output.
CATCH cx_ai_system_fault .
ENDTRY.
BREAK-POINT .
创建过程
通过这一步会自动,帮助我们生成具体的代码
soapmanager
输入该tcode后进入sap后台管理这些里面