如何在 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 的消息内容:

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

参考链接:

相关推荐
程序员的世界你不懂6 小时前
【Flask】测试平台开发,开发实现应用搜索和分页-第十篇
后端·python·flask
Molder6217 小时前
【计算机408计算机网络】第四章:自底向上五层模型之网络层
网络·笔记·后端·计算机网络·考研
lypzcgf7 小时前
Coze源码分析-API授权-删除令牌-后端源码
数据库·人工智能·后端·系统架构·开源·go·安全架构
bobz9657 小时前
堆叠 和 mlag 有什么区别
后端
bobz9657 小时前
华为的交换机设备组MLAG,两个设备之间互联需要几根线? 是什么线?
后端
bobz9657 小时前
主流网络设备厂商的 MLAG 技术
后端
夕颜1117 小时前
Cursor 教我学 Python
后端
ArabySide7 小时前
【ASP.NET Core】双Token机制在ASP.NET Core中的实现
后端·asp.net core
无忧无虑Coding8 小时前
Spring Boot 多数据源(读写分离)入门
java·spring boot·后端