ABAP 调用web service
- 格式:pdf
- 大小:157.57 KB
- 文档页数:2
创建的流程是:创建的步骤:1.使用向导创建一个web serviceA:SE80,找一个package,右键Create →Enterprise Service / WebService →Web Service.2.进入向导页面:继续:根据自己的情况选择:主要是根据需求来定的,如果是个function,就可以选择function继续:选择自己需要的BAPI,注意:需要增加BAPI Commit/Rollback2.释放定义的WEB SERVICEA:TCODE:WSCONFIG输入创建的名字及变式,点击创建,然后保存就可以了B:TCODE:WSADMIN找到自己的创建web名字,点击左上角的Web service--WSDL就可以打开,但这个需要在host及主机上配置,所以不再这里演示-------------------------------------ABAP 创建并调用WebService(原创)2010-04-28 16:51一. 创建Webservice有两种方式创建webservice,一种是在se80中使用wizard生成,另一种是直接在se37中给予function生成,具体操作如下:1.se80中Create-->Enterprise Service/Web Service --> Web Servcie维护service名,选择一个poit type(type point为一个功能点:如,Bapi中的Method,FunctionGroup中的一个function,一个function或者Message Interface:XI)2.se37 Utility--> More Utility --> Create WebService -->From the Function Module在创建完成的时候可以选择立刻release,否则需要在wsconfig中进行release。
ABAP外调WebService过程介绍第一章proxy(代理)的生成首先通过se80进入到我们要创建proxy(代理)的package (包)。
以我的zhr_password_change程序为例,该程序的目的是帮助用户修改密码,所以进入的是ZHR包。
进入ZHR包后,右键选择Create -> Enterprise Service / Web Service -> Proxy Object,弹出如下选择框:由于我们是外调Web Service,所以选择Service Consumer选项,并点击继续。
随后出现下面的选择界面:这个选择界面中,如果我们自己的机器就是服务器,那么可以选择Local File,然后给出WSDL文件所在地。
不过一般情况下,我们是通过URL/HTTP访问WSDL文件的。
这里,我得到的WSDL文件地址为:http://10.3.11.123/jfids/ChangePwService?wsdl我们需要先确认这个链接的有效性,可以在浏览器中打开这个链接,如果链接有效,则我们可以看到对应的xml代码:将有效的URL地址输入,点击继续,如图:接下来要选择package(包)和prefix(前缀),package即proxy(代理)所在的包,prefix即代理各种属性(比如名称)、包含数据类型(比如输入数据类型、输出数据类型)等的前缀,主要用于与系统变量进行区分。
我这里选择的包是ZHR、前缀为ZCMIS_。
输入包名、前缀后选择继续,此时会出现确认信息:完成后,会看到workbench request,设置请求号和描述:然后我们会发现package(包)里出现了Enterprise Service选项,里面包含了代理类及其用到的数据类型。
我们需要保存并激活Enterprise Service选项:External View和Internal View分别展示了从被调用方和调用方看到的类的属性,我们可以看到原函数名称以及它在ABAP代码中的名称:Used Object选项会列出新生成的proxy类型以及其需要的数据类型(也就是前面指的输入数据类型、输出数据类型):我们可以通过双击proxy类型,察看这个类包含的属性和方法。
SAP访问外部WebService操作、配置手册●准备一个可以正常访问的WebService地址,包括服务声明本手册示例WebService的服务声明地址:http://192.168.104.26/WebServiceTest/TestService.asmx?WSDL它里边有一个Add方法,传入两个参数,返回两个参数之和。
在本地IIS中可以测试这个方法点击调用,可以返回结果字符串,如下图出现此结果,则说明WebService没有问题。
●为WebService配置RFC终点和代理对象打开RFC终点维护界面(事务码:SM59),显示下图界面点击创建按钮,创建一个RFC终点输入名称、描述、目标系统地址和端口,点保存。
打开对象导航器(事务码:SE80),如下图,右键,依次是Create->Enterprise Service/Web Service->Proxy Object创建代理对象选择URL/HTTP Destination,点确定按钮,如下图输入WebService服务声明地址,点确定输入Package和前缀,点确定,如下图点击激活按钮,代理对象创建成功。
为代理对象配置逻辑端口事务码(LPCONFIG),输入之前创建好的代理类名称和逻辑端口,点击新建按钮,如下图输入描述,然后进入调用参数选项卡,选择HTTP目标选项,输入之前的RFC目标,路径前缀输入IP地址之后至?之前部分,点击保存按钮,并激活。
ABAP使用代理对象示例代码:REPORT ZCALL_WS_TEST.DATA: TESTSERVICE TYPE REF TO ZTESTCO_TEST_SERVICE_SOAP,ADD_IN TYPE ZTESTADD_SOAP_IN,ADD_OUT TYPE ZTESTADD_SOAP_OUT.PARAMETERS: A TYPE I,B TYPE I.START-OF-SELECTION.CREATE OBJECT TESTSERVICE.ADD_IN-X = A.ADD_IN-Y = B.CALL METHOD TESTSERVICE->ADD EXPORTINGINPUT = ADD_INIMPORTINGOUTPUT = ADD_OUT.WRITE: / A,'+',B,'=',ADD_OUT-ADD_RESULT. 运行结果:点击执行按钮:。
webservice接口调用方法Web服务(Web service)是指一个网络服务,通过互联网进行通信的应用程序接口(API),使用标准的HTTP协议进行数据传输和交互。
它使用SOAP(Simple Object Access Protocol)来封装数据,以XML格式进行传递,可以在多种平台上进行调用,独立于编程语言和操作系统。
调用Web服务的方法如下:1.确定服务地址和方法:首先要确定要调用的Web服务的地址和要调用的方法。
通常,服务地址是一个URL(Uniform Resource Locator),可以在文档中找到。
2.创建SOAP请求:根据要调用的方法创建一个SOAP请求。
SOAP 请求是一个XML文档,根据服务的定义,包含要调用的方法名和方法参数。
可以使用各种编程语言和工具来创建SOAP请求,如Java的JAX-WS、Python的suds等。
3.发送请求:将创建的SOAP请求发送给Web服务。
可以使用HTTP POST或其他协议将请求发送给服务的URL。
请求与服务之间的通信是通过HTTP协议完成的。
4.解析响应:接收到Web服务的响应后,需要解析响应的内容。
响应是一个XML文档,包含服务返回的数据。
同样,可以使用各种编程语言和工具来解析XML响应,提取所需的数据。
5.处理响应:根据需要处理响应的数据。
可以将数据保存到数据库中,显示在用户界面上,或者进行其他操作。
6.处理错误:如果在调用Web服务时发生错误,需要处理错误。
可能会遇到网络连接问题、服务不可用、权限问题等。
根据错误类型,可以采取不同的处理方式,如重试请求、记录错误信息等。
7.错误处理:同样重要的是处理错误。
如果在调用Web服务时发生错误,需要处理错误。
可能会遇到网络连接问题、服务不可用、权限问题等。
根据错误类型,可以采取不同的处理方式,如重试请求、记录错误信息等。
8.安全性:在调用Web服务时,需要确保数据的安全性。
可以使用加密和数字签名等技术来保护传输的数据。
帆软报表是一款非常优秀的企业级报表工具,它可以通过调用webservice方法来实现与其他系统的数据交互,为报表数据的获取和分析提供了很大的便利。
下面将介绍帆软如何调用webservice方法,并简单介绍调用webservice方法的相关知识。
一、帆软调用webservice方法的基本步骤1. 接入webservice服务在帆软报表设计器中,可以通过“数据集”功能来接入webservice服务,首先需要在“数据集”面板中选择“新建数据集”,然后选择“webservice”类型的数据集,填写webservice的位置区域、命名空间、方法等相关信息。
2. 设计报表在接入了webservice服务之后,可以在报表设计器中使用webservice数据集的数据进行报表设计,包括数据源的绑定、数据集的筛选和排序等操作。
3. 预览和发布报表设计完成报表之后,可以对报表进行预览和修改,最后将报表发布到帆软报表服务端或者其他报表评台上供用户使用。
二、调用webservice方法的相关知识1. webservice是一种基于web的服务接口,它使用标准的XML语言来描述和传输数据,可以在不同的评台和编程语言之间进行数据交互。
2. 常用的webservice方法包括GET、POST、PUT、DELETE等,可以通过HTTP协议与webservice服务进行通信。
3. 帆软报表通过调用webservice方法来获取外部系统的数据,可以实现与企业内部的ERP系统、CRM系统等进行数据交互,为报表分析提供更加丰富的数据源。
4. 调用webservice方法需要对webservice服务进行正确的配置和授权,包括webservice的位置区域、命名空间、方法名、参数等信息的设置。
5. 在调用webservice方法时,需要注意参数的传递方式、返回结果的处理以及异常情况的处理,保证数据的准确性和完整性。
三、帆软调用webservice方法的应用场景1. 与企业内部系统的数据交互:帆软报表可以通过调用webservice方法与企业内部的ERP、CRM等系统进行数据交互,实现报表数据的实时更新和分析。
abap 调用其他程序数据方法及准备工
作
在 ABAP 中,调用其他程序数据的方法有以下几种:
- 修改源程序,将需要展示的数据存储到 DB 中,然后主程序再从 DB 中读取。
- 使用 Submit 配合 EXPORT/IMPORT 将数据临时存放到内存中,然后主程序再从内存中读取,及时 Free Memory ID。
- 修改主程序和源程序的逻辑,增加耦合。
- Copy 出源程序的代码逻辑后,将源程序大卸八块,只要逻辑不变,随便怎么改。
在使用 Submit 配合 EXPORT/IMPORT 方法时,需要注意以下几点:
- EXPORT 与 IMPORT 两边的内表(包含内表名称),字段结构(包括长度/内型/小数位数/字段的多少)需保持完全一致,建议 Copy 源程序中的内表到主程序中,或使用 SE11 定义全局结构和内表。
- Submit 后要加 AND RETURN,将数据返回到主程序中。
1目的为了保证SAP仅安装了ABAP Stack的系统能够发布Web Service,需要完成以下步骤方可激活。
本文档用于描述整个激活过程。
2步骤事务代码 RZ10进入下面界面:图2-1修改参数这里要注意一点的是icm/host_name_full必须是形如<computer name>.<domain>.<ext>,例如。
修改完后记得调整主机的hosts文件,要添加一行mysap如果你的服务器在域中,并且你的客户端也在域中,直接可以通过上面的全名访问到服务器的话,下面这步可以省略。
在自己机器的hosts文件(一般就位于c:\windows\system32\drivers\etc 下)添加mysap再到sicf下激活下列的服务图2-2 default_host/sap/public/bc图2-3 default_host/sap/public/bsp图2-4 default_host/sap/public图2-6 default_host/sap/bc/bsp/sap I图2-5 default_host/sap/bc/bsp/sap II图2-6 default_host/sap/bc/bsp/sap III图2-7 default_host/sap/bc/bsp/sap IV图2-8 default_host/sap/bc/soap图2-9 default_host/sap/bc/srt图2-10 default_host/sap/bc/srt/rfc/sap图2-11 default_host/sap/bc/webdynpro/sap3测试3.1SOAMANAGERT-code: SOAMANAGER,SAPGUI会自动帮你打开一个浏览器(IE)。
图3-1 SOAMANAGER3.2开发测试T-Code: SE80图3-2 ABAP开发工作台图3-3 创建Web Service图3-3 选择对象类型为Service Provider图3-4 选择服务提供商图3-5 服务定义图3-6 由哪个功能模块提供服务图3-7 校验形式图3-8 所属的包和传输请求图3-9 完毕图3-10 WSDL 把上面那个链接扔到浏览器的地址栏中,图3-11 IE显示出WSD。
webservice的调用方式Web Service的调用方式Web Service是一种基于互联网的通信协议,通过HTTP和XML 来进行通信。
它可以实现不同平台、不同语言之间的数据交互和共享,为分布式应用提供了一种标准化的通信方式。
在使用Web Service时,我们可以采用不同的调用方式,以满足不同的需求和场景。
1. SOAP方式调用SOAP(Simple Object Access Protocol)是一种基于XML的消息格式,用于在Web Service之间进行通信。
SOAP方式调用Web Service需要创建SOAP消息,并通过HTTP传输到目标服务端。
SOAP消息包含了调用的方法、参数和返回值等信息。
服务端接收到SOAP消息后,解析其中的内容,并执行相应的方法,然后将结果封装成SOAP消息返回给客户端。
2. RESTful方式调用REST(Representational State Transfer)是一种基于Web的软件架构风格,它使用简单的URL作为资源的标识符,并通过HTTP 的不同请求方法来对资源进行操作。
RESTful方式调用Web Service时,我们可以使用不同的HTTP方法(如GET、POST、PUT、DELETE)来对资源进行增删改查操作。
客户端通过构建不同的URL来调用Web Service,服务端根据URL的不同执行相应的操作,并返回结果。
3. JSON-RPC方式调用JSON-RPC(JavaScript Object Notation Remote Procedure Call)是一种基于JSON格式的远程过程调用协议。
JSON-RPC方式调用Web Service时,客户端将调用的方法、参数等信息封装成JSON格式的消息,并通过HTTP传输到服务端。
服务端接收到消息后,解析其中的内容,并执行相应的方法,然后将结果封装成JSON格式的消息返回给客户端。
一、调试
1.Webservice调试srt_util,添加调用service账号
2.有效负载跟踪查看service调用,传输的数据
二、调用外部service
1.企业服务→服务消费者,创建WSDL地址,URL,输入地址,前缀为Z,完成后激活
2.soamanager,在消费者代理中查找,配置穿件,端口名为LP01,缺省勾上,输入URL地址
3.创建se38程序
Data:lo_sms_info TYPE REF TO zco_sms_info_send_port_type(Proxy Name). 输入输出参数为ABAP Name Ref
DATA: ls_input TYPE zsend_info_request,
ls_output TYPE zsend_info_response.
模式,abap对象模式确定,输入调用服务名称及方法名,(在se80双击服务名称可现实其中包含的方法,选中方法点击参数也可显示其中参数类型)
三、发布webservice
1.创建函数代码块
2.实用程序→更多实用程序→创建Web服务→来自函数模块(组)
服务定义ZWS_XXX,勾选Map Name,
,选择NO为无验证。
SAP和Java系统的Webservice实例关于Webservice的概念和原理,简单来讲,Webservice是一种基于SOAP传输协议,用WSDL描述,用XML封装数据的接口技术。
由于其跨平台、跨防火墙、开发成本低、开发周期短等优势而被广泛应用,但也有局限性,包括传输负载大、没有统一的实现模型等。
对于Webservice在SAP中的应用,多被用在系统同步要求高,数据传输负载小的接口开发上。
下面以SAP系统和外部系统的交互为例,SAP ECC系统两个、外部系统一个(Java EJB3 Jboss5),分别讲述从SAP到SAP,SAP到Java,Java到Java,Java到SAP的Webservice实例。
一、SAP系统间的Webservice调用SE37创建函数z_calculate,类型要设置为RFC类型,参数都设置为传值:function z_calculate.*"----------------------------------------------------------------------*"*"Local interface:*" IMPORTING*" VALUE(NUMBER1) TYPE STRING*" VALUE(NUMBER2) TYPE STRING*" VALUE(OPERATOR) TYPE STRING*" EXPORTING*" VALUE(RESULT) TYPE STRING*"----------------------------------------------------------------------try .case operator.when '+'.result = number1 + number2.when '-'.result = number1 - number2.when '*'.result = number1 * number2.when '/'.result = number1 / number2.when others.result = 'Not supported!'.endcase.catch cx_root.result = 'Not supported!'.endtry.condense result.endfunction.把函数发布成Webservice其他一路下来默认,完成后服务已经创建;接下来到SOAMANAGER中去找WSDL的URL,进入到Web service Administration界面,Apply selection => Overview => Displayselected Binding's WSDL URL,在右边可以看到了。
ABAP发布Webservice以及JAVA调用方式ABAP发布Webservice一、输入se37或者se80创建WEBSERVICE二、Webservice创建成功后,输入事务代码SOAMANAGER注意:WINDOWS 中需要配置host 文件三、选择第二个也签中的第一个连接单击Open WSDL document for selected binding连接弹出:WSDL的地址<soap:addresslocation=":8000/sap/bc/srt/rfc/sap/zws_s ervic/300/zws_servic/zws_servic" />LOCATION 或者ACTION后的地址则是外部调用Webservice的地址逻辑端口也用如此方法创建JA V A调用ABAP发布的Webservice1.调用过程中存在问题及解决办法1.1无法利用AXIS2, CXF标准工具解析ECC发布的地址。
解决:利用IE访问Webservice地址,然后将其另存为*.xml文件利用CXF工具,编译该*.xml 文件,生成JAVA类。
输入:wsdl2java -d src - client http://Webservice。
附加:wsdl2java用法:wsdl2java -p com -d src -all aa.wsdl-p 指定其wsdl的命名空间,也就是要生成代码的包名:-d 指定要产生代码所在目录-client 生成客户端测试web service的代码将文件拷贝到程序中。
注意问题:1. 类文件中的包名需要修改,部分定义的-包.类-格式中的包也需要修改.2. 工具生成类的过程中,如果出现重名的情况(例如某类:TEST,但是有其他类应该是test,大小写不区分),一般只会保存一个类,需要手工添加缺少的类(可从其他代码的报错信息看出)。
1.2访问权限问题:访问的权限体现在http的体系中不同的调用方式,拥有不同的设置权限方法,以CXF为例:需要在解析后的**client类中添加代码:Client client = ClientProxy.getClient(port);HTTPConduit http = (HTTPConduit) client.getConduit();AuthorizationPolicy auth = new AuthorizationPolicy();auth.setUserName("gang.xu");auth.setPassword("654321");h ttp.setAuthorization(auth);1.3访问地址:ABAP会发布两种可以访问的WSDL地址;第一种::8000/sap/bc/srt/rfc/sap/ytest_service/300/ytest_service/ytest_service第二种::8000/sap/bc/srt/wsdl/bndg_DF511834C4CA61F1830600221999201E/wsdl11/allinone/ws_policy/document?sap-client=300JAVA解析及调用的是第二种地址;第一种发布出的Webservice服务,具体的方法等信息在第二种体现,2中,也包含了1的地址:<wsdl:service name="service"><wsdl:port name="YTEST_SERVICE" binding="tns:YTEST_SERVICE"><soap:addresslocation=":8000/sap/bc/srt/rfc/sap/ytest_ service/300/ytest_service/ytest_service" /></wsdl:port></wsdl:service>1.4调用方法根据生成的**client类,可以找到方法名,需要传入的参数等信息。
调用webservice服务传参数调用webservice服务传参数Web Services 是一种标准化的机制,用于通过Internet 连接将应用程序和数据共享。
它提供了一种基于XML 的通信机制,使得分布在不同位置的应用程序能够互相访问和交换数据。
调用 Web Service 可以传递参数,参数是 Web Service 输入的数据。
本文将简单介绍如何在调用 Web Service 时传递参数。
1. Web Service 的参数类型Web Service 中定义的参数类型包括基本类型和自定义类型。
基本类型主要包括整型,字符串型等。
自定义类型可以是用户自定义类型或 Web Service 自带的类型。
对于基本类型,可以直接传值。
对于自定义类型,在传递参数时需要通过构造一个对象来传递。
在使用 Web Service 时,需要先了解 Web Service 的参数类型,以便正确传递参数。
2. 调用 Web Service调用 Web Service 的方式有很多种,常见的方式有:SOAP,RESTful 等。
其中,SOAP 是最常用的 Web Service 调用方式。
SOAP (Simple Object Access Protocol) 是基于 XML 的协议,用于在 Web Service 客户端和服务器之间进行通信。
SOAP 在 Web Service 调用中传递参数时,需要将参数值通过 XML 进行封装,并发送到服务器以供处理。
下面将通过调用一个简单的 Web Service 来介绍如何传递参数。
3. 示例在这个示例中,我们将使用一个简单的 Web Service,该 Web Service 可以根据传递的参数返回对应的消息。
我们将使用 Web Service 来实现这个例子。
首先,我们需要创建一个新的 Web 服务,并在服务中添加一个 NameService 方法,在该方法中实现接收参数和返回消息的逻辑。
webservice调用具体方法摘要:1.什么是WebService2.如何调用WebService的具体方法3.调用过程中可能遇到的问题及解决方法4.实战案例分享正文:WebService,即网络服务,是一种跨平台的、基于XML(可扩展标记语言)的分布式计算技术。
它使得应用程序之间可以通过互联网进行通信,实现数据的交换和共享。
在实际开发中,调用WebService的具体方法如下:1.首先,确定你需要调用的WebService的地址和协议。
通常,WebService的地址是以WSDL(Web服务描述语言)文件形式提供的。
你可以通过WSDL文件查看WebService提供的接口和方法。
2.根据WSDL文件,生成客户端代码。
这可以通过使用诸如Apache CXF、JAX-WS等开源库来实现。
这些库会根据WSDL文件自动生成客户端代码,包括调用WebService的方法和处理响应的代码。
3.在生成的客户端代码中,找到调用WebService的具体方法。
这个方法通常是一个带有HTTP请求头的Web方法,如POST、GET等。
在方法中,传入所需的参数,这些参数通常包括在WSDL文件中定义的输入参数。
4.发送HTTP请求,并将响应结果解析为JSON、XML等格式。
这一步可以通过使用如Jackson、Gson等库来实现。
5.处理响应结果,并根据需要进行相应的业务逻辑处理。
在调用WebService的过程中,可能会遇到以下问题:1.网络问题:由于WebService通常跨网络调用,因此可能会遇到网络不稳定、延迟等问题。
为了解决这个问题,可以考虑使用重试策略、增加超时设置等方法。
2.服务异常:WebService可能会因为各种原因抛出异常,如参数不合法、服务器故障等。
为了解决这个问题,可以实现异常处理机制,如使用try-catch语句捕获异常,并根据需要进行日志记录、通知等操作。
3.身份验证和授权问题:为了避免unauthorized access,WebService 通常需要进行身份验证和授权。
ABAP 调用
外部webservice
调用外部
1.Create web service consumer – SE80
右键Enterprise Services -> Service Consumer
External WSDL –> URL是web service的WSDL描述,选择package,制定prefix 点击finish.
2.系统会自动生成所有相关的object,method,proxy class,激活之后真正创建
3.创建logical port
t-code SOAMANAGER
通过search 的方法找对自己的proxy , Search By 要选对类型
找到自己的proxy 之后,点击configurations –> Create 来创建对应的logical Port
在生成的logical Port 里 Transport Settings 里可以看到对应的Computer Name of Access URL
会变成对应的IP 地址地址,,这里建议改成Server Name 以避免以避免系统系统IP 发生发生变化变化变化之后之后之后还需要调整还需要调整
配置配置。
4. 调用 proxy class 对应的方法
这里需要这里需要注意的是注意的是proxy class 对应 method 的output 中很多都是深层次结构中很多都是深层次结构,,有些字段还是表类型的段还是表类型的,,在访问其中的字段是需要注意每一层级
在访问其中的字段是需要注意每一层级。
5. 在Webservice 中如果有日期类型的数据字段,在生成在生成proxy class 的时候的时候,,ABAP 默认的
类型类型是选择是选择XSDDATETIME_Z DEC 15, 在调用的时候在调用的时候可能可能可能会会报以下exception:
CX_AI_SYSTEM_DEFAULT ;
通过调用CX_AI_SYSTEM_DEFAULT->get_text 会发现真正的异常是CX_SY_CONVERSION_NO_DATE_TIME , 意思意思是说是说是说日期数据日期数据日期数据不能转换成对应的不能转换成对应的不能转换成对应的格式格式格式,,其原
因是ABAP 里没有对应的数据类型里没有对应的数据类型匹配匹配web service 里定义定义的元素类型的元素类型Date Time ;取得
的数据如下: 2010-01-19T21:21:11
解决解决方法是把数据类型修改为方法是把数据类型修改为XSDDATETIME_ISO
之后再调用,成功显示。