SAP的CPI发布接口RFC

在属性里面选择远程启用模块SAP CPI 开发RFC适配器的Integration Flow

开发RFC适配器的Integration Flow

首先开发RFC(Remote Function Call)接口

Integration Suite发布Rest服务

开发RFC适配器的Iflow

创建包

添加Integration flow

开发iFlow

测试

首先开发RFC(Remote Function Call)接口

TCODE:SE37


在属性里面选择远程启用模块


然后写入源码,比如数据查询


至此,RFC接口完毕

Integration Suite发布Rest服务

开发RFC适配器的Iflow

创建包




和ABAP里的程序需要存储在一个开发包里一样,Integration flow也需要存储在一个包里,称为Content package.

添加Integration flow

创建这个包就不讲了,我就选择自己之前的一个包,直接开始添加Integration flow

开发iFlow

点击刚刚创建的iFlow



1、sender连接start,选择https



双击https的连线,修改Address


下图的CSRF不要勾上,如果勾上就只能是get方式访问,不勾的话,get和post都可以访问。


2、选择groovy script



删除里面的代码,换成自己的,然后点击右上角ok


代码

import com.sap.gateway.ip.core.customdev.util.Message;

import java.util.HashMap;

def Message processData(Message message) {

    def headers = message.getHeaders();

    def map = message.getProperties();

    message.setHeader("SAP_IsIgnoreProperties", new Boolean(true));

    message.setHeaders(headers);


    def head = headers as String;

    def body = message.getBody(java.lang.String) as String;

    def messageLog = messageLogFactory.getMessageLog(message);

    messageLog.addAttachmentAsString("PayloadRequest", body, "text/plain");

    return message;

}


上面这段代码的意思就是请求的时候添加上一个附件

3、接收请求,Json转xml


双击,改成如下


4、接收,消息映射



取名,点击create



左边是导入自己写的xsd文件,右边是sap系统里面导出的wsdl文件。

先来左边。

桌面上放上xsd文件,内容如下,自己对照着修改

   

       

           

                           

           

       

   


上面就代表着只有一个输入参数,对应SE37那个RFC的那个输入参数。

如果传入的是表,那么就按照下面的方式写


   

       

           

               

                   

                       

                           

                           

                           

                       

                   

               

           

       

   


点击左边的Add Source



选择自己桌面上那个xsd




然后右边。

右边需要获取RFC的WSDL

获取RFC的WSDL地址为:http://:/sap/bc/soap/wsdl11?services=&sap-client=&sap-user=&sap-password=

自己改地址,端口号,services后面是函数名,系统,用户,密码

(注意:保存下来的文件扩展名是.wsdl,不能是xml,自己手动改一下)


点击右边的Add ,然后upload,选择刚刚保存的wsdl文件



连线,把左右映射起来


注意:REQUEST的消息映射如果传入的是空的。那么左边是自己的xsd,右边是系统的wsdl,在这个wsdl里面有RFC的函数名,这样SCC才知道是调用的哪个函数。左右两边加上文件即可,不需要连线映射上。消息映射为空时的xsd,如下:


   

   

传入的如果为空也有另一种方式,不用message mapping,改用content modify,如下,在里面的body上写上内容,这样也可以指定到要调用的RFC函数

然后点击右上角ok

5、添加Request Reply



6、添加SAP系统作为接收方




7、调用SAP系统选择RFC

双击RFC的连接线


Destination是在子账号里面的Destinations定义

8、然后跟前面一样,再添加一个消息映射,这个是返回的消息映射


左边是系统的wsdl文件,像之前一样,但是选择第二个Response。

右边是自己写的xsd文件


右边的xsd:是一个内表


   

       

           

               

                   

                       

                           

                           

                           

                           

                           

                           

                       

                   

               

           

       

   


9、再添加一个xml转json



1、(勾上supress json root element可以去掉返回结果里最外层的ZSD_CRM_1011_Response,见下图)



2、(然后勾上Streaming,在下面XML Element添加上最外层的和内表名字,一定要从最外层开始写,即便上面勾上supress json root element去掉了外层。这里是为了让每次返回的都是一个json数组,即便只有一条数据,如果不这样做,那么返回一条数据时,就不是个json数组,单是一条数据了。见下图)



10、最后加一个groovy script


内容:

import com.sap.gateway.ip.core.customdev.util.Message;

import java.util.HashMap;

def Message processData(Message message) {

    def body = message.getBody(java.lang.String) as String;

    def messageLog = messageLogFactory.getMessageLog(message);

    messageLog.addAttachmentAsString("PayloadResponse",body, "text/plain");

    return message;

}

这里是在返回加上的一个附件

就完成了。


注意,需要到SCC里面添加上自己的RFC函数)

测试

先拿到地址


地址见下图右边的endpoint


然后postman



版权声明:本文为CSDN博主「尤其是十月的风」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_34060435/article/details/119883131

你可能感兴趣的:(SAP的CPI发布接口RFC)