记录ABAP开发的日常——SAP_PO开发同步接口案例

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475
**前言:**在项目中遇到任务PO接口,需求是SRM发送采购订单信息给SAP,SAP根据信息调用BAPI同步数据,在此作为案例记录。

本次接口采用的协议是SOAP,当然也有其他的协议比如REST等等,在此不做说明。

同步PO接口开发步骤:

  1. 通过SAP NetWeaver注册PO接口服务;
  2. 通过SAP SPROXY创建服务实施代理类;

1.注册接口服务

1.1 登录SAP NetWeaver网页

根据BASIC提供的PO组件网址以及账号密码登录:https://{ip}:{port}/dir/start/index.jsp

记录ABAP开发的日常——SAP_PO开发同步接口案例_第1张图片

PO接口配置相关的属性都会在这个网页中进行。

1.2 配置ESR( Enterprise Services Repository)

记录ABAP开发的日常——SAP_PO开发同步接口案例_第2张图片

会下载一个repository.jnlp文件,这个文件必须用java开发工具集JDK里面的JRE运行环境中的javaws.exe文件运行打开,在java高版本中JRE里面是没有这个文件的,本人亲测大概只有JDK1.8.2-1.8.5这几个版本目前存在javaws.exe文件,如果电脑无法运行jnlp文件可以尝试更换JDK版本。

在此附上几个国内JDK镜像下载地址:

  • 编程宝库
  • 清华大学开源镜像-OPENJDK

确认电脑JRE中存在javaws.exe文件后,我们用下载repository.jnlp文件后,选择用电脑JRE中的javaws.exe文件打开:

记录ABAP开发的日常——SAP_PO开发同步接口案例_第3张图片
有些浏览器可能会报异常消息,忽略保留文件
记录ABAP开发的日常——SAP_PO开发同步接口案例_第4张图片

上图的Java™ Web Start Launcher 就是用来打开jnlp文件的应用,这里显现是因为我已经不是第一次打开了,如果你是第一次打开jnlp,需要选择下面的更多应用,找到JRE中的javaws.exe文件打开,后续就会出现JWSL图标,不用再重新选择。

打开后会有陆续画面闪过,第一次可能还要同意,允许之类的,我们都选择允许。

记录ABAP开发的日常——SAP_PO开发同步接口案例_第5张图片

最后会打开一个如下图的界面:

记录ABAP开发的日常——SAP_PO开发同步接口案例_第6张图片

里面有多个已经创建好的技术系统,我们这次的例子是跟SRM进行交互,所以接口配置会放在SRM下,如果是刚开始配置PO接口,我们就需要从头开始创建产品、技术系统等等,本例中因篇幅的关系不做过多说明。

1.3 ESR详细配置

1.3.1 创建命名空间

打开SRM技术系统后看见多个命名空间,我们的接口配置属性都会放在命名空间下,命名空间能够保证接口的唯一性。

记录ABAP开发的日常——SAP_PO开发同步接口案例_第7张图片

命名空间的命名规则:一般为技术系统域名/平台/模块,如上面的:https://srm.com/SAP/MM
如何创建命名空间

记录ABAP开发的日常——SAP_PO开发同步接口案例_第8张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第9张图片

1.3.2 创建文件夹

打开命名空间,发现有许多的文件夹,这里每一个文件夹对应一个接口,我们要配置采购订单创建修改接口,自然也需要创建一个文件夹.
选中命名空间:

记录ABAP开发的日常——SAP_PO开发同步接口案例_第10张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第11张图片

创建完成后,在命名空间里就能看到文件夹,左上角有个红色标记,表示未激活,所以我们需要激活文件夹:

image
记录ABAP开发的日常——SAP_PO开发同步接口案例_第12张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第13张图片

激活完成后,红色标识会消失,表示成功激活

image

1.3.3 创建DT(Data Type)

命名规则:DT_{系统}_{接口描述:首字母大写}_In/Out
创建:DT_ERP_Po_Create_And_Update_In
选择文件夹,右键New:

记录ABAP开发的日常——SAP_PO开发同步接口案例_第14张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第15张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第16张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第17张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第18张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第19张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第20张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第21张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第22张图片

同样的步骤创建采购订单创建修改接口传出数据类型结构:DT_ERP_Po_Create_And_Update_Out

1.3.4 创建MT(Message Type)

命名规则:MT_{系统}_{接口描述:首字母大写}_In/Out
创建:MT_ERP_Po_Create_And_Update_In
选择文件夹,右键New:

记录ABAP开发的日常——SAP_PO开发同步接口案例_第23张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第24张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第25张图片

先保存,再激活;然后以同样的步骤创建:MT_ERP_Po_Create_And_Update_Out

1.3.5 创建SI(Service Interface)

命名规则:SI_{系统}_{接口描述:首字母大写}_In/Out
创建:SI_ERP_Po_Create_And_Update_In
选择文件夹,右键New:

记录ABAP开发的日常——SAP_PO开发同步接口案例_第26张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第27张图片

先保存,再激活;然后以同样的步骤创建:SI_ERP_Po_Create_And_Update_Out 但是有些区别:如下图

记录ABAP开发的日常——SAP_PO开发同步接口案例_第28张图片

1.3.6 创建MM(Message Mapping)

命名规则:MM_{系统}_{接口描述:首字母大写}_In/Out
创建:MM_ERP_Po_Create_And_Update_In
选择文件夹,右键New:

记录ABAP开发的日常——SAP_PO开发同步接口案例_第29张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第30张图片

右边也是选择同一个MT

记录ABAP开发的日常——SAP_PO开发同步接口案例_第31张图片
image

先保存,再激活;然后以同样的步骤创建:MM_ERP_Po_Create_And_Update_Out

1.3.7 创建OM(Operation Mapping)

命名规则:OM_{系统}_{接口描述:首字母大写}
OM只需要创建一个,所以不分In和Out
创建:MM_ERP_Po_Create_And_Update
选择文件夹,右键New:

记录ABAP开发的日常——SAP_PO开发同步接口案例_第32张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第33张图片

如此我们在ESR中的配置就完成了,接下来需要去配置IB

1.4 配置ID(Integration Directory)

记录ABAP开发的日常——SAP_PO开发同步接口案例_第34张图片

点击IB之后会现在一个directory.jnlp文件。我们同样下载并打开。

记录ABAP开发的日常——SAP_PO开发同步接口案例_第35张图片

最后打开一个如下界面:

记录ABAP开发的日常——SAP_PO开发同步接口案例_第36张图片
打开社区组件,看到有Business System 和 Business Component,由于本接口是SRM作为发送方,SAP作为接收方,所以需要在各自业务系统里创建用于接受数据协议的适配器类型.

**SRM方面:**作为发送方

记录ABAP开发的日常——SAP_PO开发同步接口案例_第37张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第38张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第39张图片

**SAP方面:**作为接收方

记录ABAP开发的日常——SAP_PO开发同步接口案例_第40张图片

IC(Integration Configuration)里面创建BS:

记录ABAP开发的日常——SAP_PO开发同步接口案例_第41张图片

Inbound Processing:

记录ABAP开发的日常——SAP_PO开发同步接口案例_第42张图片

Receiver:

记录ABAP开发的日常——SAP_PO开发同步接口案例_第43张图片

Receiver Interfaces:

记录ABAP开发的日常——SAP_PO开发同步接口案例_第44张图片

Outbound Processing:

记录ABAP开发的日常——SAP_PO开发同步接口案例_第45张图片

激活BS:

image
记录ABAP开发的日常——SAP_PO开发同步接口案例_第46张图片

上面WSDL的地址就是该接口的访问地址,等下在后面测试的时候要用到,回头提供给第三方SRM调用
注意:如果后来有调整DT的字段,一定要重新映射下字段即把之前MM的映射删除,重联一下。

2.SAP端创建代理实施类

登录SAP GUI,使用事务码:SPROXY
在这个事务码下可以看见之前在ESR配置技术系统下的所有接口信息,依次打开路径:Source->ESR->技术系统->命名空间,找到我们配置的接口SI:

记录ABAP开发的日常——SAP_PO开发同步接口案例_第47张图片
image
记录ABAP开发的日常——SAP_PO开发同步接口案例_第48张图片

同步代理类激活的时候会自动产生一些结构和代理实施类,我们可以在类方法中查看参数,进行逻辑处理,后续有接口字段调整,需要右键重新生成,然后再激活。

记录ABAP开发的日常——SAP_PO开发同步接口案例_第49张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第50张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第51张图片

然后激活代理类,这样整个接口从配置到开发就完成了,接下来测试下我们开发的接口

3.测试

如果是同步接口,可以直接通过SPROXY测试,点击激活按钮旁边的执行,可以看到接口的XML形参,点击工具栏的编辑按钮,输入实际数据,再点击执行,就可以看到接口的返回结果;
除此之外,还可以用第三方工具测试接口的功能,接口测试工具很多,本次选择SOAP UI,是一款免费开源的接口测试工具,同意有付费版本,不过免费的就可以满足日常的使用了,这里简单介绍如何用SOAP UI测试我们开发的接口。

3.1 打开SOAP UI软件,新建SOAP PROJECT:

新建一个SOAP PROJECT:MM_Po_Create_And_Update

记录ABAP开发的日常——SAP_PO开发同步接口案例_第52张图片

将之前在BS中复制的WSDL地址填入:

记录ABAP开发的日常——SAP_PO开发同步接口案例_第53张图片

登录PO账号:

记录ABAP开发的日常——SAP_PO开发同步接口案例_第54张图片

查看报文格式:

记录ABAP开发的日常——SAP_PO开发同步接口案例_第55张图片

添加访问授权:

记录ABAP开发的日常——SAP_PO开发同步接口案例_第56张图片
记录ABAP开发的日常——SAP_PO开发同步接口案例_第57张图片

输入测试数据,执行

记录ABAP开发的日常——SAP_PO开发同步接口案例_第58张图片

接口返回结果;

记录ABAP开发的日常——SAP_PO开发同步接口案例_第59张图片

看到以上就说明我们PO接口开发从配置->开发->测试圆满的成功了。本次案例是一个同步接口作为说明,至于异步模式以及其他协议的接口,以后有机会再说明。

你可能感兴趣的:(python,java,开发语言,后端,计算机)