前言:在项目中遇到任务 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



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

1.2 配置 ESR( Enterprise Services Repository)



会下载一个 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 文件打开:



有些浏览器可能会报异常消息,忽略保留文件



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

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



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



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

1.3 ESR 详细配置

1.3.1 创建命名空间

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



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

如何创建命名空间



1.3.2 创建文件夹

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

选中命名空间:





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







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

1.3.3 创建 DT(Data Type)

命名规则:DT_{ 系统 }_{ 接口描述:首字母大写 }_In/Out

创建:DT_ERP_Po_Create_And_Update_In

选择文件夹,右键 New:

















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

1.3.4 创建 MT(Message Type)

命名规则:MT_{ 系统 }_{ 接口描述:首字母大写 }_In/Out

创建:MT_ERP_Po_Create_And_Update_In

选择文件夹,右键 New:





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

1.3.5 创建 SI(Service Interface)

命名规则:SI_{ 系统 }_{ 接口描述:首字母大写 }_In/Out

创建:SI_ERP_Po_Create_And_Update_In

选择文件夹,右键 New:



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

1.3.6 创建 MM(Message Mapping)

命名规则:MM_{ 系统 }_{ 接口描述:首字母大写 }_In/Out

创建:MM_ERP_Po_Create_And_Update_In

选择文件夹,右键 New:



右边也是选择同一个 MT



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

1.3.7 创建 OM(Operation Mapping)

命名规则:OM_{ 系统 }_{ 接口描述:首字母大写}

OM 只需要创建一个,所以不分 In 和 Out

创建:MM_ERP_Po_Create_And_Update

选择文件夹,右键 New:



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

1.4 配置 ID(Integration Directory)

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



最后打开一个如下界面:



打开社区组件,看到有 Business System 和 Business Component, 由于本接口是 SRM 作为发送方,SAP 作为接收方,所以需要在各自业务系统里创建用于接受数据协议的适配器类型:

SRM 方面:





















上面 WSDL 的地址就是该接口的访问地址,等下在后面测试的时候要用到 , 回头提供给第三方 SRM 调用

注意:如果后来有调整 DT 的字段,一定要重新映射下字段即把之前 MM 的映射删除,重联一下。

2.SAP 端创建代理实施类

登录 SAP GUI, 使用事务码:SPROXY

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





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





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

3. 测试

如果是同步接口,可以直接通过 SPROXY 测试,点击激活按钮旁边的执行,可以看到接口的 XML 形参,点击工具栏的编辑按钮,输入实际数据,再点击执行,就可以看到接口的返回结果;

除此之外,还可以用第三方工具测试接口的功能,接口测试工具很多,本次选择 SOAP UI,是一款免费开源的接口测试工具,同意有付费版本,不过免费的就可以满足日常的使用了,这里简单介绍如何用 SOAP UI 测试我们开发的接口。

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















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

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