logo

Are you need IT Support Engineer? Free Consultant

PR/PO 审批流如何对接外部 BPM?S/4HANA Cloud 的边界与突破路径

  • By Sanjay
  • 08/05/2026
  • 6 Views


背景

随着企业数字化转型的深入推进,越来越多的企业选择采用统一的外部 BPM(业务流程管理)平台,集中管理跨系统的审批工作流,以取代传统的线下纸质签核方式。在此背景下,如何将 SAP S/4HANA Cloud Public Edition(以下简称 S/4)的采购申请单(PR)与采购订单(PO)审批流程与外部 BPM 系统打通,成为许多企业在实施过程中面临的常见需求。

本文整理了针对此场景的官方立场、已知限制,以及一种可供参考的自定义集成思路。

标准产品的现状与限制

目前,S/4HANA Cloud Public Edition 的 PR 与 PO API 不原生支持将系统内置工作流与外部 BPM 系统进行集成。类似需求曾多次通过 SAP  Customer Influence Portal (CIP) 提出,产品研发团队以以下理由明确回应,短期内不予支持:

  • “Violating design rules”(违反产品设计原则)
  • “Not planned within SAP's standard in the foreseeable future”(在可预见的未来不纳入标准规划)

相关 CIP 历史提案可参考:

值得关注的是,该需求于 2025 年被社区再次提出(https://influence.sap.com/sap/ino/#/idea/358215),目前因投票数尚未达到进入评审的门槛,暂未被 SAP 产品团队纳入 Review 阶段。如您认同此需求,欢迎前往为该提案投票,推动其进入正式评审流程。

SAP 的官方建议是优先使用 S/4HANA Cloud Public Edition 内置的单据审批功能。如对该功能有改善建议,可继续通过 CIP 渠道提报。

值得注意的是,企业采购更专业的 BPM 平台集中管理数字单据工作流是业界常态。SAP 也对此类诉求表示理解,并建议通过自定义开发的方式作为折中方案。

现有折中方案的局限

在社区讨论与客户实践中,常见的两种折中方案均存在明显的限制:

方案一:外部 BPM 审批前置
在 S/4 中创建 PR 或 PO 之前,先在外部系统完成审批,审批通过后再通过 API 创建单据。

  • 问题:MRP 运算会自动在系统内生成 PR,与”先审批后建单”的逻辑产生结构性冲突,无法完全适用。

方案二:自定义字段管控状态
通过自定义字段存储外部审批状态,并利用 BAdI 判断是否触发系统内审批流。

  • 问题:仅适用于 PO,无法直接覆盖 PR 的审批场景。

建议的自定义集成思路

针对上述限制,以下提供一种更完整的自定义集成思路,供技术团队参考验证。具体可行性须以实际测试结果为准。

核心设计原则

由于 MRP 会自动产生 PR,建议不阻止 PR 的创建,改为通过控制 PR 转 PO 的转换来实现实质上的采购申请审批管控。

3.1 PR 管控方案

步骤一:为 PR 行项目新增自定义字段

在业务场景 Procurement: Purchase Requisition ItemMM_PURREQN_ITEM)中,通过 App Extensibility 新增一个自定义字段,用于存储外部 BPM 系统回传的审批状态(例如:待审批 / 已通过 / 已拒绝)。

参考文档:App Extensibility: Assign and Process Purchase Requisitions

步骤二:MRP 产生 PR 时初始化自定义字段

通过 BAdI PPH_MRP_PURREQ_CFL,在 MRP 自动生成 PR 的同时,对上述自定义字段进行初始化赋值(默认为”待审批”状态),确保所有自动生成的 PR 均进入外部审批流。

参考文档:Purchase Requisition Enhancements for MRP

步骤三:外部 BPM 回写审批结果

外部 BPM 系统完成审批后,通过 Purchase Requisition APICE_PURCHASEREQUISITION_0001)将审批结果回写至 S/4 的自定义字段,更新对应 PR 的审批状态。

参考文档:Purchase Requisition OData API (CE_PURCHASEREQUISITION_0001)

步骤四:PR 转 PO 时进行状态拦截

在 PR 转 PO 的转换阶段,通过 BAdI BD_MMPUR_FINAL_CHECK_PO 检查上述自定义字段的值,仅允许审批状态为”已通过”的 PR 生成对应的 PO,从而在系统层面完成审批管控。

参考文档:Check of Purchase Order Before Saving

3.2 PO 本身的审批管控

如需对 PO 本身(而非 PR)进行外部审批管控,同样可参考上述步骤四的 BAdI BD_MMPUR_FINAL_CHECK_PO 进行扩展实现,通过自定义字段存储外部审批结果,并在 PO 保存前进行状态校验。

整体架构示意

S/4HANA Cloud Public Edition
     │
     ├─ MRP 自动产生 PR
     │    └─ BAdI PPH_MRP_PURREQ_CFL:初始化自定义字段 → "待审批"
     │
     ├─ 手动创建 PR
     │    └─ 自定义字段默认值:"待审批"
     │
     ├─ 推送审批请求至外部 BPM 系统
     │
     ├─ 外部 BPM 完成审批,通过 CE_PURCHASEREQUISITION_0001 API 回写结果
     │    └─ 自定义字段更新 → "已通过 / 已拒绝"
     │
     └─ PR → PO 转换
          └─ BAdI BD_MMPUR_FINAL_CHECK_PO:校验自定义字段
               ├─ 已通过 → 允许生成 PO
               └─ 待审批 / 已拒绝 → 阻止生成 PO

注意事项

  1. 此方案为自定义开发思路,需经过完整的技术验证,不构成 SAP 的官方支持承诺。
  2. MRP 场景下自定义字段的初始化逻辑需仔细设计,避免影响现有 MRP 运行性能。
  3. 外部 BPM 与 S/4 之间的 API 集成需考虑认证、错误处理与重试机制。
  4. 若对 S/4HANA Cloud Public Edition 的采购审批功能有具体改善建议,建议继续通过 SAP Customer Influence Portal 提出,推动产品标准化支持。

小结

S/4HANA Cloud Public Edition 目前在标准产品层面不支持 PR/PO 与外部 BPM 的工作流集成,但通过合理的自定义开发——利用 App Extensibility 新增自定义字段、搭配 BAdI 增强与 OData API——可以在不干扰 MRP 自动化逻辑的前提下,实现对 PR 转 PO 节点的审批管控,为企业的统一审批平台集成提供一条可行的技术路径。

希望本文对有类似需求的技术团队有所帮助。如有实践经验或更好的方案,欢迎在评论区分享讨论。



Source link

Leave a Reply

Your email address will not be published. Required fields are marked *