概述:
无论是基于ABAP Workbench创建并发布的Web Service,还是在支持JAVA语言开发的SAP NetWeaver Developer Studio下创建并发布的Web Service,都可以在ABAP程序中进行调用
•在ABAP程序中调用Web Service的步骤是:
•创建Web Service客户端代理对象
•为客户端代理对象创建逻辑端口
•在ABAP程序中调用Web Service
创建Web Service客户端代理对象:
•T-CODE:SE80
•右键点击包名,选择创建代理对象
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://b.hiphotos.baidu.com/space/pic/item/9c16fdfaaf51f3de4dbe14e594eef01f3a297927.jpg)
选择WSDL文件寻址方式
•通常情况下使用默认选项
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://e.hiphotos.baidu.com/space/pic/item/f2deb48f8c5494ee0c2ea2982df5e0fe99257e27.jpg)
输入WSDL文件的URL地址
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://f.hiphotos.baidu.com/space/pic/item/b58f8c5494eef01fc718b544e0fe9925bc317d27.jpg)
输入登录Web Service服务器的用户名和密码
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://d.hiphotos.baidu.com/space/pic/item/ae51f3deb48f8c546fdf68ae3a292df5e0fe7f27.jpg)
输入要创建的Web Service客户端代理对象所属的包名和前缀
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://d.hiphotos.baidu.com/space/pic/item/e4dde71190ef76c654de56aa9d16fdfaaf516727.jpg)
注:
•使用前缀的目的是避免系统为代理对象生成的数据结构与本地存储的数据结构重名发生冲突
•前缀应遵循测试目的的以Y开头,正式程序以Z开头的原则
•原则上讲,前缀的长度和内容没有限制,但是为了统一标准,建议前缀以Y或Z开头,后接2位数字序号(加前缀后的数据结构名称过长时,系统会从右侧进行截断)
•在一个包中为一个Web Service只能创建一个代理对象,改变前缀只会重新生成代理对象
•点击保存按钮
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://b.hiphotos.baidu.com/space/pic/item/3b292df5e0fe9925bd03c4d134a85edf8db17127.jpg)
输入Workbench request
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://b.hiphotos.baidu.com/space/pic/item/72f082025aafa40f12c0635cab64034f78f01928.jpg)
激活
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://e.hiphotos.baidu.com/space/pic/item/e61190ef76c6a7ef3a2a05a7fdfaaf51f3de6627.jpg)
为客户端代理对象创建逻辑端口:
•T-CODE:LPCONFIG
•输入代理对象名,输入逻辑端口号,点击新建按钮
•如果需要将该端口设置为默认端口,选中Checkbox
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://b.hiphotos.baidu.com/space/pic/item/79f0f736afc379316b6e2ba8ebc4b74543a91128.jpg)
注:
•原则上讲,逻辑端口号的命名没有限制,但是为了统一标准,建议使用LP加两位数字序号
输入简短描述,检查语法并保存
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://h.hiphotos.baidu.com/space/pic/item/aa64034f78f0f736f0f8e1800a55b319ebc41328.jpg)
输入Customizing request
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://e.hiphotos.baidu.com/space/pic/item/a50f4bfbfbedab645f74e041f736afc379311e28.jpg)
激活
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://g.hiphotos.baidu.com/space/pic/item/8d5494eef01f3a29d3c4784f9925bc315c607c27.jpg)
在ABAP程序中调用Web Service:
客户端代理对象实际上是ABAP中的一个全局类
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://f.hiphotos.baidu.com/space/pic/item/4afbfbedab64034f25cb6f87afc379310a551d28.jpg)
在ABAP程序中调用Web Service实际上就是在程序中调用代理对象类中封装的Method
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://a.hiphotos.baidu.com/space/pic/item/024f78f0f736afc3190a92e4b319ebc4b7451228.jpg)
Method的参数的技术细节可以在Class Builder中查看
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://c.hiphotos.baidu.com/space/pic/item/83025aafa40f4bfba1d633d5034f78f0f7361828.jpg)
定义用于创建对象的参考变量和用于参数传递的输入参数数据类型和输出参数数据类型
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://f.hiphotos.baidu.com/space/pic/item/91ef76c6a7efce1b6827654baf51f3deb48f6527.jpg)
代理对象类的构造函数用于指定逻辑端口号
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://a.hiphotos.baidu.com/space/pic/item/cf1b9d16fdfaaf510bef2c3e8c5494eef01f7a27.jpg)
构造函数的参数的技术细节可以在Class Builder中查看
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://a.hiphotos.baidu.com/space/pic/item/f11f3a292df5e0fe991724805c6034a85edf7227.jpg)
创建对象时可以使用构造函数指定逻辑端口号
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://d.hiphotos.baidu.com/space/pic/item/5bafa40f4bfbfbedf05f9bfe78f0f736afc31f28.jpg)
如果使用的是默认的逻辑端口,直接创建对象即可
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://h.hiphotos.baidu.com/space/pic/item/a6efce1b9d16fdfa58606b6fb48f8c5494ee7b27.jpg)
调用Method
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://g.hiphotos.baidu.com/space/pic/item/77c6a7efce1b9d160bcb37e0f3deb48f8c546427.jpg)
通常情况下,输出参数数据类型是复杂的Structure结构,其字段可能是简单字段,也可能是Structure或内表
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://h.hiphotos.baidu.com/space/pic/item/95eef01f3a292df51fcf0194bc315c6034a87327.jpg)
因此,在程序中,需要根据实际的需求对数据做进一步的处理
![在ABAP程序中调用Web <wbr>Service 在ABAP程序中调用Web <wbr>Service](http://c.hiphotos.baidu.com/space/pic/item/fcfaaf51f3deb48f76650c5ff01f3a292df57827.jpg)