
本方案面向企业与外部客户、供应商及物流伙伴之间的电子数据交换场景,建设以EDI平台为统一集成枢纽、以EDI传输协议和EDI为主要外部交换标准、以OA与ERP为内部业务承载系统的双向集成体系。
方案参考现有项目中已落地的多单据处理模式,将通信、协议解析、业务分流、数据映射、接口调用、状态通知和运行审计分层解耦,形成可扩展、可追踪、可验证的标准化链路。
外部交易伙伴通常采用标准EDI报文交换业务数据,而内部审批、订单执行、库存和交付业务分别由OA、ERP等不同的系统承载。两侧在通信协议、数据结构、认证方式、业务语义和错误处理机制上存在明显差异,直接点对点对接会产生接口数量多、维护边界不清、异常难追踪等问题。
业务含义 | 内部处理目标 |
|---|---|
采购订单 / 订单变更 | 调用OA创建审批或评审流程 |
仓库发货指令 | 调用ERP查询、下推、保存、作废 |
应用回执 / 业务反馈 | 解析状态与错误并通知 |
发票 / 库存通知 | 从内部数据生成EDI并发送 |
订单确认 / 变更确认 | 从审批或订单结果生成EDI |
ASN / 出库回执 | 从ERP交付结果生成EDI |
在 EDI 与内部系统集成项目中,应避免把所有业务逻辑都堆在某一个系统中。比较合理的做法是:EDI 平台负责外部标准报文与内部接口之间的连接、转换和编排;OA、ERP 等业务系统继续承担各自的业务审批和单据处理职责。
系统 | 适合承载的内容 | 不建议承载的内容 |
|---|---|---|
EDI平台 | 外部通信、协议解析、报文校验、单据识别、Mapping转换、接口编排、状态追踪、异常通知、重试补偿、审计归档 | 复杂业务审批规则、ERP库存核算逻辑、财务结算规则、人工业务决策 |
OA系统 | 采购订单评审、订单变更审批、内部流程流转、审批意见、流程状态 | EDI报文解析、外部通信、复杂Mapping转换、ERP单据核算 |
ERP系统 | 销售订单、采购订单、库存、交货、发票、出库、作废等核心业务单据及账务相关规则 | EDI协议处理、外部伙伴路由、报文控制号管理、通信重试 |
数据库/主数据系统 | 物料、客户、供应商、组织、地址、代码转换表、高频查询数据及历史对照关系 | 替代ERP进行业务单据处理,或绕过OA/ERP直接修改核心业务状态 |
通知平台 | 异常提醒、处理结果通知、待办提醒、运行告警 | 作为业务状态主数据源,或承担流程审批和接口补偿逻辑 |
整体原则是:EDI 平台负责“连接和转换”,业务系统负责“业务事实和业务决策”。例如,EDI 平台可以判断一笔外部订单应该调用哪个 OA 流程或 ERP 接口,但不应替代 OA 决定审批是否通过,也不应绕过 ERP 直接修改库存或财务结果。

入向:交易伙伴 → EDI传输协议接收 → EDI语法解析 → 标准XML → 类型判断一级分流 → 业务字段二级分流 → Mapping/JSON序列化 → OA、ERP或数据库 → 状态记录与通知。
出向:OA/ERP业务事件 → 标准业务JSON/XML → 单据类型分支 → Mapping到EDI结构 → EDI校验 → EDI传输协议发送 → 回执 → 状态闭环。
入向报文统一经过EDI传输协议和EDIToXML组件处理。平台完成基础语法校验后,首先读取ST01确定单据类型;对于同一单据中的不同业务场景,再读取BCT03、W0501或消息类型等字段进行二次分流。推荐顺序为:接收落盘、生成消息ID、校验解析、一级分流、二级分流、Mapping、接口调用、响应归档、状态更新。
不同类型报文可根据业务类型,选择是否共用接收、解析和序列化主链路,但映射到不同的OA流程ID。
处理链路:EDI传输协议 → EDIToXML → 类型判断→ XML_MAP_消息→ 统一OA请求结构 → JSON序列化 → OA认证准备 → CreateRequest → 返回流程请求ID → 状态记录与通知。
字段 | 含义 | 来源/规则 |
|---|---|---|
requestName | 流程标题 | 伙伴、单号和单据类型组合 |
workflowId | OA流程定义ID | 不同类型业务数据分别配置 |
mainData | 主表字段 | 单头、币别、日期、供应商 |
detailData | 明细字段 | 物料、数量、价格、交期 |
messageId | EDI消息标识 | 用于幂等和全链路追踪 |
识别数据类型后,根据状态字段进入不同路径:比如【确认】场景查询可下推并创建单据;【拒绝】场景查询已有单据,保存必要信息后执行作废。
参考项目采用签名登录方式:组织账套、组织、语言、时间戳和签名参数,调用认证接口获取Cookie;后续接口统一复用该Cookie。
场景 | 接口动作 | 输入重点 | 成功输出 |
|---|---|---|---|
销售订单查询 | OrderQuery | 客户、单号、物料、组织 | 单号及明细 |
发货通知创建 | DeliveryNoteCreate | 发货数据 | 发货数据 |
编排必须校验前一步业务结果:
提取回执编号、日期、原单据类型、状态码、业务单号及错误描述。成功时更新原出向消息;失败时将TED等错误转换为可读内容并通过企业微信、邮件或告警平台通知。
所有内部接口应明确API 接口规范、业务返回码和示例。
建议统一状态为RECEIVED、VALIDATED、MAPPED、SUBMITTED、BUSINESS_SUCCESS、BUSINESS_FAILED、RETRYING、MANUAL_PENDING和CLOSED。每条消息生成唯一messageId,并关联Message-ID、ISA/GS/ST控制号、PO/DN/Invoice、OA请求ID、ERP单据内码及通知记录。
测试场景 | 预期结果 |
|---|---|
合法订单含多行明细 | OA流程创建成功,头行字段一致 |
同一伙伴、PO、版本重复发送 | 不重复建单,返回已有结果 |
数量、交期或行项目变更 | 进入变更流程并保留修订号 |
Token失效 | 刷新一次后成功或明确告警 |
唯一可下推订单 | 创建交货通知并回写单号 |
查询为零或多条 | 阻断下推并进入业务异常队列 |
已有交货通知可作废 | 按保存、作废顺序完成 |
下推响应超时 | 先查询确认,不产生重复单据 |
含TED错误信息 | 关联原消息并发送可读通知 |
MDN失败或证书错误 | 状态可见、重试或及时告警 |
阶段 | 主要工作 | 主要输出 |
|---|---|---|
需求与调研 | 确认伙伴、单据、字段、接口、规则和SLA | 需求清单、接口清单、范围基线 |
方案设计 | 架构、流程、状态、异常、安全和部署设计 | 总体方案、详细设计、字段映射 |
开发配置 | 通道、路由、Mapping、接口组件、通知 | 可部署流程、配置清单、单元测试 |
联调测试 | 伙伴连通、OA/ERP接口、全链路场景 | 联调记录、问题清单、测试报告 |
UAT与上线 | 业务验收、初始化、切换和回退演练 | UAT报告、上线及回退方案 |
运行移交 | 监控、告警、手册、培训和质保 | 运维手册、培训材料、交付清单 |
建议按单据分批上线,优先选择业务边界清晰、价值高且依赖较少的链路;每批设置观察期,并保留人工处理或原流程作为短期回退方案。
本方案通过统一接入、分层解析、两级分流、标准中间模型和可复用接口组件,将外部EDI标准报文与内部OA、ERP业务流程连接起来。
最终系统不仅应实现“报文能够传输、接口能够调用”,还应实现业务状态一致、异常可恢复、过程可审计、能力可复制,从而形成稳定的企业级EDI集成平台。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。