外部系统以 HTTPPOST 的方式访问 SAPRFC

作者:ABAP老白 约 3 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, SD, 开发, 数据工程, 销售分销
外部系统以 HTTPPOST 的方式访问 SAPRFC - 封面图
外部系统以 HTTPPOST 的方式访问 SAPRFC - 封面图

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

外部系统访问SAP的RFC函数,要么使用RFC的方式调用,要么SAP把RFC发布成Webservice供外部调用。在一些特殊场景下,外部系统只能使用HTTP

POST的方式,而SAP端又不想发布Webservice,这个时候就可以使用本文介绍的方法,由HTTP POST直接访问SAP RFC。

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

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

外部系统以 HTTPPOST 的方式访问 SAPRFC - 封面图
外部系统以 HTTPPOST 的方式访问 SAPRFC - 封面图

2、下载WSDL获取报文格式

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

访问地址:

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

外部系统以 HTTPPOST 的方式访问 SAPRFC - 封面图
外部系统以 HTTPPOST 的方式访问 SAPRFC - 封面图

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

外部系统以 HTTPPOST 的方式访问 SAPRFC - 封面图
外部系统以 HTTPPOST 的方式访问 SAPRFC - 封面图

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

<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来测试调用效果了:

外部系统以 HTTPPOST 的方式访问 SAPRFC - 封面图
外部系统以 HTTPPOST 的方式访问 SAPRFC - 封面图

这个地方需要留意一下:

外部系统以 HTTPPOST 的方式访问 SAPRFC - 封面图
外部系统以 HTTPPOST 的方式访问 SAPRFC - 封面图

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

外部系统以 HTTPPOST 的方式访问 SAPRFC - 封面图
外部系统以 HTTPPOST 的方式访问 SAPRFC - 封面图
ABAP老白

关于作者:ABAP老白

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

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