设为首页 收藏本站
查看: 1045|回复: 0

[经验分享] PI-webservice05-SAP调用外部webservice

[复制链接]

尚未签到

发表于 2015-9-19 00:53:22 | 显示全部楼层 |阅读模式
  在用webservice进行数据传输的过程中,SAP系统与.net开发的信息系统之间的数据调用。如何用SAP调用外部的.net系统发布的webservice程序来获取外部的数据,详情请见下文:
  1,创建代理
  事务码:SE80

  【右键】-【create】-【enterprise service】

  选择【service consumer】点击【继续】

  选择【URL/HTTP Destination】,点击【继续】

  填写URL地址,地址是wsdl结尾的地址,然后点击【继续】

  package处输入程序包,prefix处输入名称,request/task中输入请求号名称,点击【继续】

  点击【complete】

  然后点击【保存】,然后进行【激活】,则代理就创建好了
  2,调用逻辑代理端口
  事务码:LPCONFIG

  填写【代理类】名称,【逻辑端口】名称(代理名称就是上创建的代理名称,逻辑端口名称与代理类名称相同即可),勾选【缺省端口】,点击创建

  填写【描述】,勾选【全局设置】中的【状态管理】,保存

  填写【调用参数】中的URL地址(以?wsdl结束的地址),然后保存

  输入对应的URL地址中的对应方法的soapAction找到如下部分代码:

  将其中的soapaction部分放入到SOAP操作,点击【保存】,然后点击【激活】
  3,创建调用程序
  事务码:SE38

  填写程序名称,点击【创建】

  填写【title】,选择【type】,然后点击【保存】

  选择【开发类】,点击【保存】,输入请求号,程序就创建好了
  SAP程序中撰写调用.net中的webservice的中的helloworld方法程序,直接第1步中创建好的代理拖拉到创建好的程序中,则会自动生成代码,将代码修改如下所示:
  

"定义调用函数名称
DATA: ZHELLOWORLD TYPE REF TO ZCRM_DELIVERYCO_SERVICE_SOAP .
TRY.
CREATE OBJECT ZHELLOWORLD
*  EXPORTING
"定义逻辑端口名称
LOGICAL_PORT_NAME  = 'ZCRM_DELIVERYCO_SERVICE_SOAP'
.
CATCH CX_AI_SYSTEM_FAULT .
ENDTRY.
"定义输入输出参数类型
data: ZOUTPUT type ZCRM_DELIVERY_WSHELLO_WORLD_SO .
data: ZINPUT type ZCRM_DELIVERY_WSHELLO_WORLD_S1 .
TRY.
CALL METHOD XXXXXXXX->HELLO_WORLD
EXPORTING
INPUT  = ZINPUT
IMPORTING
OUTPUT = ZOUTPUT
.
* CATCH CX_AI_SYSTEM_FAULT .
* CATCH CX_AI_APPLICATION_FAULT .
ENDTRY.
  通过调试上述代码,则可以看到调用到的数据
  如果对方给定的webservice的URL地址中包含有消息头文件,则在程序中需要添加消息头文件的说明,其代码如下:

REPORT  ZHELLOWORLD.
"声明消息头header文件
data: ws_header TYPE REF TO if_wsprotocol_ws_header,
name TYPE string,
namespace TYPE string.
DATA: ZHELLOWORLD TYPE REF TO ZCRM_DELIVERYCO_SERVICE_SOAP .
TRY.
CREATE OBJECT ZHELLOWORLD
*  EXPORTING
*    LOGICAL_PORT_NAME  =
.
ws_header ?= ZHELLOWORLD->get_protocol('IF_WSPROTOCOL_WS_HEADER').
DATA: ixml TYPE REF TO if_ixml,
xml_document TYPE REF TO if_ixml_document,
xml_root TYPE REF TO if_ixml_element,
xml_element TYPE REF TO if_ixml_element,
xml_node TYPE REF TO if_ixml_node.
DATA l_xstring        TYPE xstring.
DATA l_string         TYPE string.
FIELD-SYMBOLS <fs_xstring> TYPE xstring.
CONCATENATE
"消息头文件header中的内容
'<soap:Header>'
'<s1:MySoapHeader xmlns:s1="http://tempuri.org/">'
"'<s1:RegisteredUser>'
'<s1:Uname>admin</s1:Uname>'
'<s1:Password>admin</s1:Password>'
"'</s1:RegisteredUser>
'</s1:MySoapHeader>'
'</soap:Header>' INTO l_string.
l_xstring = cl_proxy_service=>cstring2xstring( l_string ).
IF NOT l_string IS INITIAL.
CALL FUNCTION 'SDIXML_XML_TO_DOM'
EXPORTING
xml           = l_xstring
IMPORTING
document      = xml_document
EXCEPTIONS
invalid_input = 1
OTHERS        = 2.

IF sy-subrc = 0 AND NOT xml_document IS INITIAL.
xml_root = xml_document->get_root_element( ).
xml_element ?= xml_root->get_first_child( ).
WHILE NOT xml_element IS INITIAL.
name = xml_element->get_name( ).
namespace = 'http://tempuri.org/' . "xml_element->get_namespace_uri( ).
IF NOT xml_element IS INITIAL.

ENDIF.

ws_header->set_request_header(
name = name
namespace = namespace
dom = xml_element ).

xml_element ?= xml_element->get_next( ).
ENDWHILE.
ENDIF.
ENDIF.
CATCH CX_AI_SYSTEM_FAULT .
ENDTRY.
data: OUTPUT type ZCRM_DELIVERY_WSHELLO_WORLD_SO .
data: INPUT type ZCRM_DELIVERY_WSHELLO_WORLD_S1 .
TRY.
CALL METHOD ZSALES->HELLO_WORLD
EXPORTING
INPUT  = ZINPUT
IMPORTING
OUTPUT = ZOUTPUT
.
* CATCH CX_AI_SYSTEM_FAULT .
* CATCH CX_AI_APPLICATION_FAULT .
ENDTRY.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-115529-1-1.html 上篇帖子: SAP 操作快捷鍵 下篇帖子: 转博客园一位前辈关于.NET通过NCO3.0连接SAP的系列文章
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表