外部系统以 HTTP POST 的方式访问 SAP RFC

作者:ABAP老白 约 2 分钟阅读 更新日期:2024-02-22 2 年前更新 标签:ABAP, 开发

注:本文算是一个知识储备,实际用到的场合不多。

外部系统访问SAP的RFC函数,要么使用RFC的方式调用,要么SAP把RFC发布成Webservice供外部调用。在一些特殊场景下,外部系统只能使用HTTP POST的方式,而SAP端又不想发布Webservice,这个时候就可以使用本文介绍的方法,由HTTP POST直接访问SAP RFC。

以RFC函数RPY_PROGRAM_READ为例,步骤如下:

1、事务码SICF,激活服务/sap/bc/soap/rfc。如果已经是激活状态就不用管了。

2、下载WSDL获取报文格式

此方法的本质还是走的Webservice(但是不需要SAP把RFC发布为Webservice的过程),只不过是以POST方法调用,所以需要获取报文的格式。

访问地址:

http://xxxx.com:8000/sap/bc/soap/wsdl/?services=RPY_PROGRAM_READ

另存为 WSDL文件后,使用WSDL工具获取报文格式,我使用的是XMLspy,如下图:

把不需要的参数精简一下可以获取下面的报文格式:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:sap-com:document:sap:rfc:functions">

<soapenv:Header/>

<soapenv:Body>

<urn:RPY_PROGRAM_READ>

<PROGRAM_NAME>ZTEST01</PROGRAM_NAME>

<SOURCE></SOURCE>

<SOURCE_EXTENDED></SOURCE_EXTENDED>

</urn:RPY_PROGRAM_READ>

</soapenv:Body>

</soapenv:Envelope>

现在就可以使用POSTMAN来测试调用效果了:

这个地方需要留意一下:

可以看到已经获取到我们需要的内容了,收工!

ABAP老白

关于作者:ABAP老白

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「外部系统以HTTP POST的方式访问SAP RFC.docx」整理生成,仅用于内部技术分享与学习交流。