SAP PI/PO 中 Collapse Context 和 Remove Context 之间的区别

     如果您不熟悉 PI/PO 领域,Node 函数“Collapse Context”和“Remove Context”可能会令人困惑。尽管 Collapse Context 和 Remove Context 有相似之处,但它们之间存在一些主要差异。 

演示中使用的 SAP 版本:
  • SAP PO 7.5

 

什么是 PI 中的 Context

在我们查看 Collapse Context 和 Remove Context 之间的区别之前,我们先看看 PI/PO 中的“ Context”是什么意思。

PI 中的 XML 消息作为队列处理。在队列中, Context 是 XML 节点(元素)相对于父节点的位置或级别。如果元素属于同一父节点,则元素位于同一 Context 中。当父节点更改时,Context Change 将插入到队列中。 Context更改以深灰色显示。

             上下文更改在 Graphical Mapping 队列中以深灰色显示

因此,当我们谈论消息的 Context 时,它总是基于某个父节点。XML 元素可以具有不同的 Context 队列,具体取决于与其相关的父节点。

让我们使用下面的 Message Type 来了解上下文更改和 Node Functions。

  

                                         表示学生成绩详细信息的消息类型

XML 可以有多个学生的多个考试成绩。

  • 元素 'Grade' Context根据直接父节点 'Grades' 进行更改。

每个考试的成绩值都分配给单独的 Contexts。

                                               Grade”元素相对于父节点“Grades”的上下文更改

  • 元素 'Grade' 上下文根据更高级别的父节点 'StudentDetail' 进行更改。

                                     将元素的 Context 更改为 'StudentDetail' 级别。

现在,每个学生的所有年级都位于一个 Context 中。

                            Grade”元素相对于父节点“Grades”的上下文更改

折叠上下文 vs 删除上下文。

尽管这两个节点函数的行为不同,但 Collapse Context (折叠上下文) 和 Remove Context (删除上下文) 都会从输入队列中删除上下文更改。

1. 如何在 Collapse Context 和 Remove Context 中复制上下文值。

这两个函数之间的主要区别在于它们如何将 input Context 值复制到输出。Collapse Context 仅从输入中复制每个 Context 的第一个值,而 Remove Context 会将输入中的所有值复制到输出。

Collapse Context

Remove Context 

仅将每个上下文的第一个值复制到输出中。

输入上下文中的所有值都将复制到输出中。

2. 禁用“保留 SUPPRESS 值”时,折叠上下文和删除上下文如何解释 SUPPRESS 值。

让我们看看当 IF-THEN 函数的 “keep SUPPRESS values” 属性被禁用时,每个函数是如何工作的。

       

     在 IF-THEN 函数中禁用了 Keep SUPPRESS values 属性

另一个区别是这些节点函数如何处理队列中的 SUPPRESS 值。Remove Context 会忽略 SUPPRESS 值并且不会将其复制到输出,而 Collapse Context 会将它们作为 null [] 值复制到输出。

折叠上下文将 SUPPRESS 值复制为 []。

                               Collapse Context 将 SUPPRESS 值作为 null [] 值复制到输出

Remove Context 将忽略 SUPPRESS 值。

                   Collapse Context 函数忽略 SUPPRESS 值

3. 激活“Keep SUPPRESS values”时,Collapse Context 和 Remove Context 如何解释 SUPPRESS 值。

     

     保持 IF 函数的 SUPPRESS 值处于活动状态

在这种情况下,两个函数都以相同的方式处理 SUPPRESS 值。SUPPRESS 值被视为与同一上下文中的任何其他值相似。

这两个函数都会删除 Context Changes。Collapse Context 函数从每个 Context 中复制第一个值,Remove Context 将每个上下文的所有值复制到输出

                   激活 “Keep SUPPRESS values” 时折叠上下文

               禁用 “Keep SUPPRESS values”(保留 SUPPRESS 值)时删除队列里面的 Context 

您只能使用 UDF 删除这些 SUPPRESSED 值。

<think>嗯,用户询问的是SAP系统中PI接口PO接口的区别及各自作用。这个问题需要从技术演进的角度来梳理清楚。 用户可能是一位SAP系统管理员或开发人员,正在做系统集成方案选型。这类问题通常出现在企业系统升级或新建集成平台的场景中。用户需要明确的对比信息来支持决策。 从技术发展脉络来看,PI(Process Integration)是SAP早期的集成中间件产品,在2002002年首次发布。而PO(Process Orchestration)是在2012012年推出的增强版本,整合了更多功能组件。这个时间线很重要,因为很多资料会混用这两个术语。 核心区别在于功能范围:PI专注于基础消息传递,提供ABAPJava两种引擎;而POPI的超集,额外整合了BPM工作流引擎BRM业务规则管理。可以理解为PO=PI+BPM+BRM。在部署方式上也有差异,PI支持ABAP或Java单栈部署,PO则强制要求双栈部署。 用户可能还会关心具体应用场景。比如单纯的数据传输用PI就够了,但涉及多系统协调的复杂业务流程就需要PO的流程编排能力。PO的BPM引擎能可视化设计跨系统流程,这是PI不具备的。 注意到引用材料里提到HTTP适配器(引用[3])上下文处理(引用[1])等技术细节,这些都属于PI/PO共有的基础功能。不过用户当前的问题更关注架构层面差异,暂时不需要深入这些技术点。 最后需要提醒用户注意版本兼容性。引用[1]提到演示基于PO 7.5版本,而当前主流已是PO 7.6,部分功能可能有更新。如果用户正在做版本迁移,可能需要更详细的变更说明。</think>以下是SAP PI接口与PO接口的功能、区别及各自作用的详细说明: --- ### **一、核心概念与演进关系** 1. **SAP PI (Process Integration)** - **定位**:SAP NetWeaver平台的核心集成中间件(2002年推出) - **功能**: - 提供 **A2A(应用间集成)** **B2B(企业间集成)** - 支持 **异步/同步通信**、**消息转换**、**路由** - 使用 **Integration Engine** 处理消息流 - **架构**: - 支持 **ABAP栈**(传统方式)或 **Java栈**(高级适配器引擎) - 依赖 **Integration Repository**(设计接口) **Integration Directory**(配置路由)[^1][^3] 2. **SAP PO (Process Orchestration)** - **定位**:PI的升级扩展版(2012年推出),整合三大组件 - **功能增强**: - = PI基础功能 + **BPMN流程编排** + **BRM业务规则管理** - 新增 **流程自动化**(例如跨系统协调审批流) - 统一操作台管理集成、流程、规则 - **架构优化**: - **强制双栈部署**(ABAP+Java),支持更复杂场景 - 集成 **SAP BPM** **SAP BRM** 引擎[^1][^3] > **关键演进**:PO = PI + 流程编排能力 + 规则引擎,从单纯集成扩展到端到端流程自动化。 --- ### **二、核心区别对比** | **维度** | **SAP PI** | **SAP PO** | |------------------|-------------------------------------|-------------------------------------| | **功能范围** | 基础消息集成(传输/转换/路由) | 集成+流程编排+规则管理 | | **流程支持** | 仅支持简单消息流 | 支持BPMN建模复杂跨系统流程 | | **组件构成** | 仅Integration Engine | PI引擎 + BPM引擎 + BRM引擎 | | **部署模式** | 可选单栈(ABAP或Java) | 必须双栈(ABAP+Java) | | **典型场景** | 系统间数据同步(如订单传输) | 自动化审批流(如采购申请多系统审批) | --- ### **三、技术细节差异** 1. **适配器能力** - **共性**:均支持HTTP/SOAP/RFC/IDoc等适配器(引用[3]中SOAP附件机制两者通用) - **PO增强**:优化REST适配器,支持OpenAPI规范;增强云适配器(如SAP Cloud Connector) 2. **开发复杂度** - **PI**:需手动编码处理复杂映射(XSLT/Java) - **PO**:图形化流程设计器降低开发门槛,支持拖拽式编排 3. **消息处理** - **上下文操作**: - `Collapse Context`:压缩冗余消息上下文(减少内存) - `Remove Context`:彻底删除消息上下文(不可恢复) > 两者均用于优化性能,但作用层级不同(引用[1]) --- ### **四、应用场景示例** - **PI适用场景**: ```mermaid graph LR A[SAP ECC] --IDoc--> PI((PI引擎)) PI --SOAP--> B[外部物流系统] ``` > 纯数据同步(无业务流程判断) - **PO适用场景**: ```mermaid graph TB A[采购申请] --> PO{PO流程引擎} PO -->|规则检查| BRM[库存规则库] PO -->|审批| B[HR系统] PO -->|通知| C[邮件系统] ``` > 多系统协同的自动化流程(需判断流转) --- ### **五、选择建议** - 选 **PI** 若:仅需基础系统集成,无需流程自动化 - 选 **PO** 若: - 存在跨系统业务流程(如订单到收款全链路) - 需要动态规则调整(如促销折扣计算) - 已有SAP BPM/BRM组件需整合 > **注**:SAP已停止更新PI独立版本,新项目建议直接采用PO[^1][^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值