决策_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 |
重要业务规则¶
- 计划案整单取消 — 一次取消整个 TPM 预算计划案
- 一对多关系 — 一个 TPM 计划案行项目对应多个 PO 行
- 删除保护 — 如果 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 增量重试。
关联文档¶
- TPM_中国_纷享销客_To-Be蓝图_知识笔记 — TPM 整体蓝图
- S4-TPM-SOP_三域关联矩阵
- 决策_TPM-MM接口(本文,13接口权威口径)
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 字段来源需确认
行动顺序¶
- Yoyo 改:#1 API/BAPI 拍板 → #2 反向逻辑 → #3 批次必填 → 复制粘贴错误
- 何锐 改:#4 LAEDA 增量 → #5 初始全量 → 示例/映射
- PMO 定:#6 传输方式与鉴权(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 冲突声明)。