华为MetaERP 面向落地的“xxxx↔SAP 集成点切换 → Oracle EBS”方案。它的核心目的只有一个:把 xxxx对 SAP 的“硬绑定”拆成可替换通道(Adapter/Connecto
面向落地的“xxxx↔SAP 集成点切换 → Oracle EBS”方案。它的核心目的只有一个:
把 xxxx对 SAP 的“硬绑定”拆成可替换通道(Adapter/Connector),用一段并行窗口把风险压到最低,并保证任何时间点都能回退。
0)先对齐:你们这类 xxxx通常“粘在 SAP 哪些点上”
(你可以对照:如果你们 xxxx基本就是这几类,方案几乎可以直接按表/API映射开工)
A. xxxx→ 写 SAP(xxxx驱动业务进 ERP)
常见点 | SAP 侧实现(旧) | 风险等级 |
|---|---|---|
1) xxxx推送/生成财务凭证 |
| 最高 |
2) xxxx推送应付发票/票据信息 | MIRO/FF/供应商发票接口(常走 BAPI / IDoc / Z程序) | 高 |
3) xxxx触发/回写付款建议或支付状态 | F110 相关、清账 | 高 |
4) xxxx维护/同步主数据(供应商/科目/成本中心等) | Vendor/GL/PCA 主数据接口(BAPI/IDoc/直表同步) | 中 |
B. xxxx← 读 SAP(xxxx消费 ERP 状态做展示/对账/下游)
常见点 | SAP 侧实现(旧) | 风险等级 |
|---|---|---|
5) 读凭证头/行项目(BKPF/BSEG) | 直查表/JOIN/视图/抽取 | 很高(隐性最大) |
6) 读未清/已清(BSIK/BSAK/BSIS/BSAS/ZUONR/AUGDT…) | 未清项依赖 | 高 |
7) 读余额/科目/期间/汇率 |
| 中 |
8) 读采购-发票-付款链路(MM-FI轨迹) | RBKP/RSEG + BKPF/BSEG + MKPF/MSEG | 高 |
切换最难的不一定是“写”,而是xxxx里大量“读 SAP 传票/未清项”的隐式假设:
在 EBS 里,AP/PO/INV 是子账,总账通过 SLA/接口过账,“未清”不在同一个表里给你优雅 JOIN。
1)总体切换策略:双轨 + 防腐层(Anti-Corruption Layer, ACL)
我强烈建议你采用下面的分层架构目标,否则 xxxx会变成“满身 EBS 特殊分支的又一代遗留”。
xxxx Application │ ├── Domain / Service Layer(业务语义不变) │ ├── InvoicePort ├── PaymentPort │ ├── VoucherQueryPort ├── OpenItemPort │ ├── BalancePort ├── MasterDataPort │ ├── Adapter Layer(= 你们要重写的“SAP硬绑定”) ├── SapAdapter (old, deprecated) ├── EbsAdapter (new, 将来唯一)关键原则(决定成败)
xxxx业务代码只认“契约/DTO”:例如
VendorInvoiceDto、VoucherLineDto、OpenItemDto——不许再出现
SELECT ... FROM BKPF/BSEG WHERE BUKRS=...藏在业务代码里。SAP 读写先包进 Adapter:旧 SapAdapter 不动逻辑,只加开关;新 EbsAdapter 平行实现同一接口。
并行窗口:切之前/切当天SAP 仍跑真实业务,EBS 侧做影子跑(Shadow Run),对账达标后再切流量。
2)阶段划分(推荐 6 个里程碑)
阶段 | 目标 | 产出 |
|---|---|---|
M0 盘点 | 把 xxxx-SAP 所有“接触点”变成清单 | 接口清单+调用链追踪(见第3节模板) |
M1 契约化 | xxxx内抽象出 Port/DTO,SAP路径包进Adapter | 可编译、行为不变的 xxxx(仍跑SAP) |
M2 EBS通道建设 | 建 EBS Adapter(接口表/API/视图)、校验、幂等、错误队列 | EBS DEV 可跑通 Happy Path |
M3 影子并行 | 双写/影子读:xxxx仍以SAP为准,但把同样请求再送EBS校验并落审计表 | 每日差异报告(见第5节) |
M4 读切换优先 | 先把“只读场景”(查询/报表/导出)切EBS;写仍走SAP | 降低写风险 |
M5 写切换+上线 | 切写流量到EBS;SAP切只读(查历史);设回切 | 上线门禁+回切手册 |
3)集成点盘点模板(你必须先输出这张表)
不要只写“调用SAP接口”,要写到调用链:谁触发 → 走什么(BAPI/IDoc/直表)→ 用哪些字段 → 决定什么业务。
# | xxxx功能 | 方向 | SAP对象/表/BAPI/IDoc | 关键字段(PK/筛选) | 量级/频率 | 幂等键 | 依赖配置 | 风险 | 负责人 |
|---|---|---|---|---|---|---|---|---|---|
I1 | 推送费用报销凭证 | xxxx→ERP | BAPI_ACC_DOCUMENT_POST | BUKRS/GJAHR/BLART/BELNR(ref)/ZUONR | 2000/天 | source_sys+source_doc | 科目映射/段结构 | ★★★ | |
I2 | 查询发票未清/余额 | ERP→xxxx(read) | BSIK/BSEG BKPF JOIN | LIFNR/BUKRS/AUGDT/ZUONR | 高频 | — | 未清项逻辑 | ★★★★ | |
I3 | 供应商主数据同步 | 双向 | LFA1/LFB1 / Vendor BAPI | LIFNR/VENDOR_ID | 低频 | VENDOR_ID | 编号规则/OU映射 | ★★ | |
… |
这一步做完,你就能回答老板一句话:xxxx到底“绑在 SAP 哪些骨头”上。
4)每个集成点在 EBS 侧的“等价实现”怎么选(决策规则)
4.1 写路径:xxxx→ ERP(最敏感)
原SAP写入场景 | EBS侧推荐实现 | 为什么 |
|---|---|---|
1) 推送“业务发票/AP发票”(有供应商、税额、分配、可能PO匹配) | AP Open Interface: | 这是EBS标准入口;它会做校验、建distribution、遵循AutoAccounting/SLA,比手造GL更安全 |
2) 只做“纯财务调整/非供应商日记账”(无AP生命周期) | GL_INTERFACE →Journal Import | 适合手工调整/分摊/汇兑差异之类;但要严格校验账套/期间/CCID/来源 |
3) 付款创建/执行(除非xxxx真的要当“支付台”) | 尽量别让xxxx直接造付款表;走Payment Manager / Payment Batch 或 Oracle标准API;否则风险极大 | EBS付款牵涉银行/check/status机 |
4) 主数据(供应商/地点/银行账户/科目等) | 走TCA/Vendor Open Interface / API,别直插基表 | 否则关系断裂、审计失败 |
4.2 读路径:xxxx← ERP(最隐蔽的工作量)
原SAP读场景 | EBS等价数据源(你要给xxxx一个稳定视图) |
|---|---|
凭证头/行项目(BKPF/BSEG) | 不直接等价;建议给xxxx提供Voucher Query View: |
供应商未清(BSIK思路) |
|
余额(GLT0/FAGLFLEXT) |
|
PO-发票链路 |
|
实操建议:不要把 xxxx直接再绑成“EBS 直表查询大杂烩”。
用 DB View / 物化快照 / 中间查询服务把上述拼装收敛到一个地方(Query Adapter),未来就算EBS升级/换云,你只换Adapter。
5)并行 & 对账机制(这是你能睡着的保证)
必须建的“对账三角”
xxxx侧发件日志(幂等键 + 原始payload + 状态 + ERP返回主键)
ERP侧回写(EBS:发票ID/凭证批号/JE_HEADER_ID;SAP:BELNR/AUGBL)
每日对账
金额对账:
SUM(发票净额+tax)vs(AP_INVOICES_ALL + 付款状态)凭证存在性:xxxx发件日志 vs ERP对象表
异常队列:接口表
STATUS='ERROR'/ERROR_MESSAGE必须进工单
6)回切(Rollback)设计:让“切过去”不等于“跳崖”
原则:在同一个 xxxx版本里保留 SapAdapter 可调起,直到历史数据只读期结束。
切写之前的回切:xxxx开关切回
adapter=sock-sap→ 仍然写SAP(此时EBS只影子跑)切写之后紧急回切:
立刻停EBS写适配器(防止新数据继续进EBS)
xxxx开关回SAP
再把“EBS侧已生成但未反向冲销的数据”做处置(通常需要预先写好冲销/作废策略/隔离账套)
更稳的做法(很多项目真这么做):
上线初期让EBS跑在“并行业务账套/并行OU”里,等连续N天差异≈0,才把“正式对外账”切过去。
7)给你一个“可直接开 workshop 用”的输出清单
你把下面5样东西交付出来,切换基本就可控了:
接口清单(第3节那张表) —— 按风险排序
SAP→EBS 主数据映射矩阵(公司代码→账套/OU/Legal Entity、供应商编号、科目Flex值、Payment Method等)
契约/DTO定义(xxxx内部:
InvoiceDto / VoucherLineDto / OpenItemDto)EBS适配实现计划(每个接口:接口表 or API or View;校验清单;幂等键;错误码映射)
对账仪表板/存储过程(至少覆盖:发件-ERP存在性、金额、状态)
你回我 3 个信息,我可以把方案细化到“可排期”
你们的 xxxx主要写 ERP 的是什么(报销凭证?费用归集?AP发票?付款指令?)
xxxx读 SAP 是走BAPI/RFC 还是直查表/抽取脚本?(如果是直查表,把最常出现的 5 条 SQL / 视图名给我)
切换期望是Big Bang 还是按公司代码/BU逐步?
我就可以把I1~I8 每个接口给你写成:
SAP原调用伪码 → EBS等价流程(表+并发程序+错误处理)→ 对账SQL模板 → 上线门禁阈值(差异/成功率/延迟)。
