跳转至

决策_TPM-MM接口

最后变更:2026-09-21 18:02

决策内容

确认 TPM 与 SAP MM 之间的 4 个接口的字段规范、频率和业务规则。


🚨 2026-09-01 销售组织编码再修正(EDM Daisy 邮件)

本文原 VKORG 权威口径(IG20/IL20/IM20/IQ20/IR20/IX20,公司代码前2位+20)作废。

EDM 澄清:China Food 属 Branded (BRD) 而非 Trading (TRD)。KDD Global 标准编码规则: - XX00-XX19 = Central & Branded 销售组织 - XX20-XX99 = Trading 销售组织

影响:China Food 6个销售组织编码待 EDM 按 BRD 段重排;China Agri 5个(XX20 段)不受影响。规则已入 EDM MDG validation/derivation 及权限过滤,并影响 Sales Area → FSCM Credit Control Area → 客户主数据 → 销售/财务交易。

新权威文件_wiki/entities/S4_China_Enterprise_Structure(销售组织章节)。 2026-09-02 已重排完毕:China Food 销售组织 = {公司代码前2位}00(IX00/IL00/IM00/IQ00/IR00/IG00)。TPM 接口 VKORG 枚举按此更新。


接口总览

# 接口 方向 频率 关键动作
1 计划案→PR TPM → SAP 实时 TPM 发起创建/删除采购申请
2 PR状态检查 TPM → SAP 实时 查询 PR 对应 PO 状态
3 PO返回 SAP → TPM 每5分钟 审批通过的 PO 数据回传
4 物料凭证返回 SAP → TPM 每天2次(12:00/23:00) 收货/取消的物料凭证回传

UOM 基本单位规则(2026-09-21 自 决策_TPM基本单位规则 草稿并入〔原件已归档 ../TPM/归档/〕,方案 A)

背景:TPM 业务单位(箱/个/包/套/吨)≠ SAP 基本单位(EA/CT/KG/TO),跨系统传递需校验与转换。费用类走 FI 无单位问题;库存类采购(促销赠品/POSM/买赠)适用本规则。

方案 A — SAP 侧单位硬转(对比过 PI 中间件映射、TPM 限制选择两个落选方案):

# 规则 描述
UOM 校验 TPM 传入 UOM 必须在 SAP 物料主数据 UOM 组内,不在则拒绝并回传错误码
转换权威 换算系数以 SAP 物料主数据(Base UOM ↔ Alternative UOM)为准,PI/TPM 不做二次换算
显示 vs 存储 SAP 按 Base UOM 存数量;TPM 显示业务单位,推接口时 SAP 校验后转
错误处理 不匹配 → 接口拒绝 → 回传错误 → TPM 业务员修改活动后重推
主数据同步 依赖物料同步接口保证 TPM 侧单位信息完整

设计点:TPM 入站增 unit_of_measure + base_uom_flag;BAPI_PR_CREATE 前增强换算;出站回传携 original_unit + original_qty 供 TPM 显示。

⚠️ 随迁待确认(原草稿 3 条,未收口): - [ ] TPM 单位下拉范围=全部 UOM 组还是业务常用单位? - [ ] 拒绝回传后 TPM 自动提示修正还是人工通知? - [ ] 存量物料 UOM 转换系数是否完整?


接口 1:计划案→PR(TPM → SAP,实时)

入参(20个字段)

# 字段 类型/长度 必填 规则
1 创建/删除标识 ZFLAG Char(1) C=创建, D=删除
2 TPM计划案编号 ZTPMOR Char(10)
3 TPM计划案行项 ZTPMORI Char(10)
4-5 创建日期/时间 Date/Time
6 物料描述 TXZ01 Char(40) 条件 物料编码为空时必填
7 物料编号 MATNR Char(18) 条件 科目分配类别不为空时必须为空;否则必填
8 数量 MENGE QUAN(13,3) 小数位3位
9 计量单位 MEINS UNIT(3) TPM 需做 SAP ISO 编码映射
10 工厂 WERKS Char(4)
11 库存地点 LGORT Char(4)
12 单价 PREIS CURR(11,2) 小数位2位
13 价格单位 PEINH DEC(5) 默认1
14 科目分配类别 KNTTP Char(1) 条件 物料编码为空时必填,默认X
15 交货日期 LFDAT Date
16 物料组 MATKL Char(9) 条件 物料编码为空时必填
17 总账科目 SAKTO Char(10) 条件 物料编码为空时必填
18 利润中心 PRCTR Char(10) 条件 物料编码为空时必填
19-20 接口传输日期/时间 Date/Time

出参(9个字段)

# 字段 说明
1-3 创建/删除标识、TPM计划案编号、行项 回传确认
4-5 采购申请号 BANFN、采购申请行 BNFPO SAP 生成
6 消息类型 TYPE S=成功, E=失败
7-9 消息类/编号/文本 错误详情

规则:SAP 中增加接口 Log 表记录全部传输


接口 2:PR状态检查(TPM → SAP,实时)

方向 入参 出参关键字段
TPM→SAP ZTPMOR(计划案编号)+ BANFN(PR号) PO号 EBELN + PO行 EBELP

重要业务规则

  1. 计划案整单取消 — 一次取消整个 TPM 预算计划案
  2. 一对多关系 — 一个 TPM 计划案行项目对应多个 PO 行
  3. 删除保护 — 如果 SAP 返回的接口表中至少有一行 PO 不为空,则该计划案不允许删除

接口 3:PO返回(SAP → TPM,每5分钟)

# 字段 说明
1-2 PO号 EBELN + PO行 EBELP
3-4 创建日期/修改日期 修改日期为行项的增删/交货完成变更日
5 删除标识 LOEKZ L=删除, S=冻结(审批完成后推送)
6 交货已完成标识 ELIKZ 审批完成后推送
7-10 TPM计划案编号/行项 + PR号/行 关联追溯
11-12 接口传输日期/时间

业务规则

  • 一个 TPM 计划案编号+行会对应多个 PO 行项目(一对多)
  • PO 创建时不可修改 PR 带来的信息(物料+描述)— SAP 侧约束
  • 费用类 PO:收货后 TPM 才会生成会计凭证,因此只传输 PO 审批通过后的数据到 TPM

接口 4:物料凭证返回(SAP → TPM,每天2次)

27 个字段涵盖:

类别 关键字段
凭证标识 物料凭证号 MBLNR + 行 ZEILE + 年度 MJAHR
日期 过账日期 BUDAT
PO 关联 PO号 EBELN + 行 EBELP(费用类)
物料信息 工厂 WERKS、库存地点 LGORT、物料 MATNR、文本 TXZ01
批次 CHARG — 促销品(有物料)填入 TPM 计划案编号
数量金额 数量 MENGE、单位 MEINS、金额 DMBTR(含正负号)
移动类型 BWART
取消标识 ZCANC — X=反向取消凭证
会计 总账科目 SAKTO、利润中心 PRCTR(费用类/促销品)
原凭证追溯 原物料凭证号 SMBLN + 行 SMBLP + 年度
TPM 关联 ZTPMOR + ZTPMORI(费用类) + BANFN + BNFPO(费用类)

费用类 vs 促销品

场景 批次逻辑 金额/G/L/利润中心
费用类 不适用 全部必填
促销品(有物料) 批次=TPM计划案编号 必填

相关约束

  • 数量小数位:3位
  • 金额小数位:2位
  • SAP Log 表:接口 1 和 4 要求在 SAP 中增加接口日志表
  • 计量单位映射:TPM 需要从 S/4HANA 拉取已使用的计量单位对应 ISO 编码做映射(2026-08-07 交叉校验修正:原写 ECC,S/4 转型后为 S4 源)

2026-09-21 物料凭证数据同步接口规范 v1.0 审阅(接口4 对外版落地)

审阅对象:物料凭证数据同步接口-接口规范_v1.0_20260921.docx(纷享销客 webhook 出站版,原件已归档 02-Reference/assets/TPM接口规范/)。 定位:V3/V4 接口4「物料凭证返回」的对外落地规范,字段与 V3 27 字段一致(MJAHR1 为重命名产物,处理正确 ✅)。

🔴 签字/开发前必须清

# 问题 位置
1 已关闭(2026-09-21 顾问确认,Kabin 转达):ZTPMOR/ZTPMORI 必填改「否」——接口层不强制,说明列「费用类单据携带」降为业务提示。待对方改版 v1.1 落实。原问题:必填=是/说明「费用类携带」/示例 null 三处矛盾 2.3 字段表
2 冲销标记 ZCANC 只给枚举没给抽取逻辑:ZCANC 为自定义字段,8/7 审阅发现的反向凭证布尔错误 (WE and H) AND (WA and S) 永远为假,本文档未见修正后逻辑;且同一凭证冲销后原行是否重推未写 全文
3 ZTPMOR/ZTPMORI 来源表未注明:自定义字段挂在哪(EBKN 增强/MSEG 增强/Z 表)未写,映射悬空;对照 BANFN/BNFPO=EBKN 标准字段来源清晰 2.3 字段表

🟡 应补(开发前)

# 问题
4 示例值与类型矛盾:MBLNR/MATNR/SAKTO/BUDAT/MJAHR 等标 string,JSON 示例全是数字字面量,前导零丢失风险,示例统一加引号
5 DMBTR 语义含混 + 无币种:「65100.01或者-100」未写负数场景;DMBTR 为本位币金额,缺 WAERS,对端只认金额不认币种
6 BWART 长度 3 vs 示例 101201(6位):S/4 标准 BWART=Char(3),101201 疑似拼接或示例错,需澄清,否则 TPM mobile_type__c 宽度也对不上
7 CHARG 借装 TPM 计划案编号:对端 batch__c 需按计划案编号(非批次主数据)解析,双方需确认口径与宽度(两侧均 Char(10),恰好)
8 增量/重试/初始补推机制未写:每日 12:00/23:00 两次,但抽取基准(上次成功时间戳)、失败重试(V4 PO 接口 Part1+Part2 是现成样板)、上线存量补推均未提及,应与 MM004 FSD 互引
9 响应契约不完整:示例 msg vs 字段表 message 字段名不一致;非 0 错误码清单缺失;webhook URL 内嵌 token 为唯一鉴权但未写鉴权说明(401 场景、token 失效处理)

🟢 小事

  • ZIN_Date/ZIN_Time 大小写混用,建议统一 JSON 命名风格
  • webhook URL 含鉴权 token,文档外发时建议脱敏

补充:物料接口示例(curl)核验 2026-09-21

物料凭证接口示例_20260921.txt(原件已归档 assets/TPM接口规范/)与规范 2.4 payload 一致,但作为可执行 curl 有硬伤:

  • 🔴 JSON 本身不合法"MJAHR1": 2026, 后带 //段重复重命名 行内注释,JSON 不支持注释——原样执行必报解析错误。注释移出代码块
  • 🔴 #4 升级为必改:26 字段中 11 个(MBLNR/MJAHR/BUDAT/EBELN/MATNR/BWART/SAKTO/SMBLN/MJAHR1/BANFN/ZIN_Date)声明 string 却传数字字面量;同例内 ZEILE/EBELP/SMBLP/BNFPO 又正确加引号,自相矛盾。MATNR 带前导零的内部格式经数字传输必丢
  • DMBTR 规范标 number,示例传带中文占位符的字符串("65100.01或者-100"),类型再次矛盾

行动

TPM/纷享销客侧改:~~#1 必填口径~~(✅ 9/21 顾问确认必填=否,已关闭)→ #4 示例类型 → #9 响应字段名;SAP 侧改:#2 冲销抽取逻辑 → #3 ZTPMOR 来源表 → #6 BWART 长度;双方确认:#5 币种 → #7 CHARG 语义 → #8 增量重试。


关联文档


2026-08-07 接口 FSD 审阅意见(签字前)

审阅对象:MM001-004 FSD(STPCN040-043,Yoyo 编写)+ 客户/物料主数据接口规范(何锐编写)共 7 份。 完整审阅意见:/opt/data/cache/documents/TPM-MM接口审阅意见_20260807.md

结论

MM001-004 与 V3 汇总表字段/方向/频次完全一致,无错位。签字前 6 个硬伤必须清。

🔴 签字前必须清

# 问题 涉及
1 创建/删除方式「API or BAPI」未拍板,两套字段映射并存,开发无法开工 MM001
2 反向凭证标记逻辑写错:(WE and H) AND (WA and S) 永远为假,冲销凭证标不出来 MM004
3 CHARG(批次)标必填,但费用类 GR 无批次 → 费用类必被拒 MM004
4 客户主数据接口无 LAEDA(上次更改日期),增量抽取做不了 客户接口
5 主数据接口无「初始全量加载」设计,上线首日对端空库 客户/物料接口
6 4 份 TPM FSD 均未写技术传输方式与鉴权(RFC/OData/HTTP?) MM001-004

🟡 应补(开发前)

  • MM002 BNFPO 必填性自相矛盾(导出表非必填、日志表必填)
  • MM002 未体现「整单取消/一对多/有 PO 不允许删」业务规则(V3 有、FSD 没有)
  • MM003 复制粘贴错误 ×3(ZIN_Date/Time Reference 错、AEDAT 类型错、ZTPMORI 取错源字段)
  • MM003「删除的 PO 等审批完成再发」→ 审批中途删的 PO 永远不通知 TPM,有死角
  • 主数据接口示例 vs 枚举不一致(工厂 1000 vs B5F0 等);BEZEI 省代码口径、CASSD 字段来源需确认

行动顺序

  1. Yoyo 改:#1 API/BAPI 拍板 → #2 反向逻辑 → #3 批次必填 → 复制粘贴错误
  2. 何锐 改:#4 LAEDA 增量 → #5 初始全量 → 示例/映射
  3. PMO 定:#6 传输方式与鉴权(4 份统一补)
  4. 改完出 V0.02/V1.1 → 复审 → 签字

2026-08-13 接口 V4 追加(TPM-MM接口_V4.xlsx)

V4 发布,重大修订。PO 频次变更已获用户确认(2026-08-13:「po频次没问题」)。

V3 → V4 关键变化

# 变化 影响
1 PO返回频次:每5分钟 → 一天两次 ✅ 用户已确认。推送机制重设计(见 Sheet1):Part1=当天审批完成PO(CDHDR/CDPOS 捕获)+ Part2=log 表发送失败 PO 重试
2 计划案→PR 改主/从表(20260813 备注) 主表 7 字段(ZFLAG/ZTPMOR/创建日期时间/接口传输日期时间),从表 17 字段(行项+物料+数量+价格+科目+MVGR2)
3 新增字段:物料组2 MVGR2(20260813新增) 源 CE4Z500-MVGR2,物料编码为空时必填。⚠️ 需确认 CE4Z500 来源表(疑 CO-PA 特征)
4 PO返回新增数量/净价/价格单位(4字段) 12 → 16 字段,TPM 对账更完整 ✅
5 TPM字段/名称/长度三列全空 TPM 侧映射未填,开发前需补
6 Sheet1 中间件设计:TPM→IS→SAP 明确有中间件 IS;「和 China IT 确认 SM30 权限」为待办

8/7 硬伤解决情况(V4 核对)

  • #3 CHARG 批次必填 — 已解决(V4 批次非必填,仅促销品填)
  • #5 复制粘贴错误 — AEDAT 类型、ZIN Reference 已修正
  • #1 API/BAPI 未拍板 — 仍未见
  • #2 反向凭证逻辑 — 仍未见具体写法
  • #6 传输方式/鉴权 — 仍未见(IS 中间件已出现,协议未写)
  • ⚠️ 主数据接口(客户/物料) — 不在此文件,初始全量仍未覆盖

待办(V4 遗留)

# 事项 负责人 状态
确认 MVGR2 的 CE4Z500 来源表 SAP 顾问
TPM 字段映射三列补齐 TPM 侧
SM30 权限确认(China IT) Kabin/IT
API/BAPI 拍板 + 反向凭证逻辑 + 传输鉴权(8/7 #1/#2/#6) Yoyo/PMO

关联文件

  • 原件:/opt/data/cache/documents/doc_cc2f9a876d4f_TPM-MM接口_V4.xlsx(用户微信 2026-08-13)

2026-09-02 SO接口文件 V3 归档 → 已移出(2026-09-21)

归类纠正:SO 订单类型 / Item Category / 定价过程 / 退换货属 SD 域,本节全部内容已于 2026-09-21 移至 决策_TPM-SD接口(含 ZF/ZR 订单类型口径、TPM 传输条件类型、退换货对接规则、蓝图 V1.05 7.3 冲突声明)。