如何在 SAP PI 系统新增字段并传输给外部系统

一、需求背景

当前公司有个 PI 中间件,但是因为没有对应的 PI 顾问,且运维管理不方便,后续新增的接口都是通过 Webservice 或者 API 的方式集成,之前已有的接口就继续保留 PI 集成,PI 接口运行基本是稳定的,几乎没有什么变化。

门店主数据为了适配海外业务,需要在门店主数据下发中台新增: LAND1 所属国家/地区字段,这个字段的新增需要三方系统的配合,SAP 端、PI 端和外部系统的接收,目前达成统一,三个系统都命名为 LAND1 字段,因此需要做好三个系统的映射。

于是需要了解一波 PI,现在记录一下过程。本文档总结了涉及到 ABAP 和 PI 如何新增字段的方法,遇到同类需求或者问题可以借鉴。

二、ABAP 端更改

ZSD139 事务码的后台程序是 ZBC122_SD139,这类代码的生成主要是 ZBC122_CONFIG 程序配置生成的,因此新增 T001W-LAND1 字段可以通过这个程序来新增。

  1. 新增字段,进入如下配置

添加字段 LAND1:

将该条目传输到请求当中

  1. 生成程序,点击执行:

点击执行:

将上述改动传输到请求包中,点击执行。如下图:

自此,SAP 端的改动完成。

注意:如果是复杂字段的取值逻辑,通过配置是解决不了,需要额外写代码。

三、PI 中的更改

前提条件,在系统中安装 Java JDK 1.8,高版本的 JAVA 环境可能不支持。

然后在浏览器中输入这个 URL:http://XXX/rep/start/sso/Repository.jsp

接着会让你输入账号密码,如图:

输入用户和密码之后,然后会下载一个 repository.jnlp 文件,如下图:

接着点击这个文件,会弹出一个弹框:

选择稍后,就会打开 PI 应用程序,勾选我接受分险,然后点击运行,如图:

直接进入了 ESB 界面,如下图:

如果是初次登录主界面,第一次运行打开有点慢,等几分钟左右就行,第二次打开就快了。打开后如下图:

SAP PI 主页有以下四个 Java 链接 :

  • 企业服务存储库(ESR)(Enterprise Service Repository 用于设计和创建要在其中使用的对象整合方案.您可以设计接口对象,映射对象和不同的集成过程)。

  • 集成目录(ID)( Integration Directory 用于配置在 Enterprise Service Repository 中创建的对象,并且配置为由 Integration Engine 在运行时执行;配置 ESR 前,需要导入对象服务和通信通道)。

  • 系统架构(SL)(System Landscape 管理系统架构和所有可安装和已安装的元素)。

  • 配置和监控(CM)(Configuration and Monitoring 监控 SAP 系统中集成引擎,CCMS 集成和过程监控基础架构的功能)。

每个超链接都可以打开对应的应用。这四个都是 Java 应用。ESR 和 ID 是 swing 应用。它们基于 JNLP,需要从浏览器启动,所以第一次会花较多的时间来下载整个库文件。但是从第二次开始,加载时间就会变短了。SL 和 CM 是纯web应用,运行在浏览器上。

PI 主界面点击 ESR 进入对应的 DT、MT、MM 配置界面。

在正式机修改前,需要将对应的包设置为可以编辑

改好了之后,重启应用程序,重新进。

参考社区文章:Component version cannot be changed

DTO(Data Types) 新增字段

因为我们是 ECC 传到中台,因此找到对应的 PN_ECC of SAP 对象,找到 SD139 的 Data Types,名字为 DTO_ECC_ZT_SD139 ,点击编辑按钮,如下图:

添加同层级 的国家字段 LAND1,输入描述:国家/地区,如下图:

添加完成之后,点保存,如下图:

注意,要输入字段 0 和 1,如下图:

0 表示非必输

保存完成,激活:

Message Types 和 Service Interfaces

激活后,会自动生成内部 Sheet 类型 Message Types 和 Service Interfaces,MT 是真正传输消息的消息体,在 MT 中引用上面定义好的 DT。MT 和 DT 这里是一一对应的,在 DT新增好后,MT 对应有新增的字段。

这一步不需要用户自己操作

外部定义 ED_ECC_ZT_SD139 需要导入 WSDL

接下来,就是在 SAP 内部和外部字段定义做一个映射关系,操作如下,找到 ED_ECC_ZT_SD139

这一步需要外部用户给出对应的 WSDL 文件,文件格式如下:

同样,保存并激活,成功后可以在 Messages 的 Tab 页中看到对应的 land1 字段:

注意,如果是 SAP 的 WSDL 文件,需要把 Policy 段注释掉,否则导入 PO 会出问题

映射关系 MM_ECC_ZT_SD139 更改

然后找到 PN_PI, 1.0 of sap,同样也需要将这个对象设置可以修改对象。

在 MessageMapping 中定义 Mapping 规则(为 PI 和 RFC 字段建立映射):

然后找到 PI 和中台的字段的映射关系,将这两个字段进行连线:

同样,需要保存并激活:

至此,所有的 PI 端设置已经完成。

四、增加完成后进入 SPROXY 事务码

使用 T-Code: SPROXY 关联上刚刚的的改动。

在更改模式下,您将启用重新生成选项,如下面红色标记。找到这个对应在 PI 的改动,然后点击重新生成:

就会在对应的请求包中生成相应的对象,如下图:

成功激活后的结构中也会有对应的 LAND1 字段:

五、PI 成功如下

下发成功如下图:

双击日志号,可以进入如下界面:

点击消息标识,可以进入监控器,看 PI 的消息内容:

可以看到,已经多了国家字段的传输,功能完成。

参考链接:

相关推荐
卷福同学7 分钟前
#去深圳了~
后端·面试·架构
CodeSheep8 分钟前
稚晖君公司最新合伙人,公开了!
前端·后端·程序员
绝无仅有14 分钟前
面试MySQL基础20题(一)
后端·面试·github
百锦再32 分钟前
一文掌握Flask:从基础使用到高级应用
后端·python·django·flask·virtualenv·scikit-learn·pygame
IT_陈寒39 分钟前
3年Java老手:我用这5个Spring Boot优化技巧将系统吞吐量提升了200%!🚀
前端·人工智能·后端
做运维的阿瑞6 小时前
Linux 企业级备份体系实战:cron/anacron/restic/rclone 对比与脚本总结
linux·运维·服务器·后端·学习·系统架构·centos
keep_di8 小时前
06-django中配置接口文档coreapi
后端·python·django
麦当_10 小时前
Cloudflare Workers 环境下的数据库死锁问题及解决方案
javascript·数据库·后端
郑洁文10 小时前
上门代管宠物系统的设计与实现
java·spring boot·后端·毕业设计·毕设
码事漫谈10 小时前
ReAct Agent:原理、应用与实战指南
后端