(1)登录SAPGUI,执行事务码 SE37,进入函数构建器:初始屏幕
(2)菜单栏→转到→函数组→创建组
输入函数组名称以及描述,点击保存
选择包,点击保存(请忽略函数名后面的下划线,此处为演示又新建一个)
挂载请求,点击保存,函数组创建完成。
输入功能模块名称,点击创建
输入第一步中创建的函数组,以及函数描述,点击保存
忽略系统提示,点击对勾,进入函数构建器
切换至属性页签,务必勾选处理类型中的“远程启用的模块”,否则无法被远程调用,PO中就没法导入该RFC。
参数类型:
导入:仅输入参数,此处定义两个输入参数,IV_NAME和IV_AGE,类型为CHAR10和I,以及描述。根据需要设置字段是否可选,远程调用函数,输入输出参数必须勾选“值传递”。
导出:仅输出参数,此处定义一个输出参数,IV_HELLO,类型为CHAR100。
表:输入输出参数,此处未定义。
(1)登录PO,点击 Enterprise Services Builder,进入Java版ESB配置客户端
(2)导入 RFC 对象
在 SC_ERP(对应SAP系统)下 Imported Objects,右键→Import of SAP Objects
输入 SAP 登录信息,点击 Continue
点击 RFC 前的三角形,展开 RFC 列表
利用搜索,定位到我们需要导入的RFC函数对象,勾选后,点击 Continue
备注说明:如果搜索不到需要的RFC对象,那可能是因为RFC没有激活或者是没有设置为远程启用的模块。
点击 Finish,完成导入,关闭
激活导入的 RFC 函数对象
(3)创建 Namespace (仅首次需要)
在 SC_ERP(对应SAP系统)下新建 Namespace,右键→New→Namespace
输入 Namespace 名称,点击 Create
(4)在 Namespace 下创建文件夹,右键→Create Folder
修改为自己所需的文件夹名称,如:
(5)在文件夹下创建 SI,右键→New→Service Interface
首先创建接收方(对SAP而言)SI,对应Category为Inbound,作为ERP接收外部接口消息的服务。
在Message Type 处,拖入 RFC 对应的输入和响应
保存
同上,再创建发送方(对SAP而言)SI,对应Category为Outbound,作为ERP返回接口响应消息的服务。
保存,激活 SI
返回PO主界面,点击 Integration Builder,进入Java版IB配置客户端
展开 Communication Comonent Without Party,其中 Business System 和 Business Component 都可以定义SAP系统以及外部系统等通讯对象。一般 Business System 用于定义 SAP系统(如BS_ERP_300),Business Component 用于定义非SAP系统(如此处定义的外部调用方 BC_TEST)
(1)创建SAP端 BS(仅首次需要,一般由PO Basis初始设置)
创建BS的通讯通道 CC
定义消息接收通道(Receiver)
配置如下:
定义消息发送通道(Sender),配置如下:
PO访问SAP协议相同时,多个接口可以公用相同的通讯通道,无需单独定义,故以上定义为通用通道。
BS_ERP_300会自动包含SC_ERP中定义的SI,包括Receiver和Sender,这是由PO Basis在SLD中设置的,无需手动添加。如下图所示:
(2)创建非SAP端 BC(仅首次需要)
定义消息发送通道(Sender),配置如下:
BC_TEST 添加 服务接口 SI
激活所有对象。
(3)创建 IC
配置如下:
保存,激活,查看WSDL
复制WSDL URL,发给外部系统调用,如SoapUI
(1)登录SAPGUI,执行事务码 Sproxy,进入对象导航界面,定位到前面创建的接收消息的SI,双击或右键→Generate,创建代理类
保存,激活,双击进入实施类
双击方法,编写具体的消息处理代码
保存,激活,返回创建代理类页面,执行以测试
修改入参报文 XML,如下
执行
返回结果如下:
代理类开发完成,实现对RFC的调用。
将PO端配置最后获取的WSDL URL,发送给SoapUI端,可以进行接口调用测试。
(1)新建项目(略)
(2)项目右键,Add WSDL
贴入复制的WSDL URL,点击 OK
双击 Request1,获取入参结构
调整入参,点击执行
获取正确的返回结果,测试完成。
PO端常见返回错误为:Server Error,
具体错误信息,需要查看PO日志
类似报值错误的情况,还有 IV_AGE 输入字母,输入小数,输入空格时。
若要保留默认值,可以输入0,或直接删除该参数项,如下图传参方式:
当删除必输字段 IV_NAME 时,会报如下错误:
如果是如下错误提示,则可能是sproxy代理类中调用 RFC 时的出入参数类型不匹配,需要先进行类型转换后,再给 RFC 参数赋值(这种错误可以在配好sproxy后,提前进行测试排除)。
PO没有类似SAP S4的在线传输机制,主要使用手工导出&导入方式进行内容发布。
首先需要发布SAP端的RFC请求,然后发布PO的ESR配置;其次发布SAP端的Sproxy请求,最后发布IB配置。
使用事务码:SE10,STMS,具体操作步骤略。
预览,确认本次导出的内容,
确认无误,则点击 Finish,保存文件到本地
同上,略。
原创文章,转载请注明来源-X档案