注:本文算是一个知识储备,实际用到的场合不多。
外部系统访问SAP的RFC函数,要么使用RFC的方式调用,要么SAP把RFC发布成Webservice供外部调用。在一些特殊场景下,外部系统只能使用HTTP
POST的方式,而SAP端又不想发布Webservice,这个时候就可以使用本文介绍的方法,由HTTP POST直接访问SAP RFC。
以RFC函数 RPY_PROGRAM_READ 为例,步骤如下:
1、事务码SICF,激活服务/sap/bc/soap/rfc。如果已经是激活状态就不用管了。
此方法的本质还是走的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来测试调用效果了:
这个地方需要留意一下:
可以看到已经获取到我们需要的内容了,收工!