Oracle EBS OM(销售订单)vs Fusion SCM Order Management 全维度拆解
整体架构差异:
- EBS OM:本地数据库紧耦合、传统 PL/SQL、并发请求、Workflow 工作流驱动、原生多组织
_ALL分区表、接口表直插入库; - Fusion DOO(Distributed Order Orchestration):云原生微服务、ESS 定时任务、REST/SOAP API、BO 业务对象封装、底层 DOO 系列分区表,禁止直写基表,全部走标准服务。
一、Oracle EBS R12 OM 销售模块:后台核心表、程序、代码示例
(一)核心业务基表(多组织_ALL,按 O2C 履约流程)
1. 订单主数据核心表
| 表名 | 核心用途 | 关键字段 | 业务状态标识 |
|---|---|---|---|
OE_ORDER_HEADERS_ALL | 销售订单头,一单一条 | HEADER_ID(PK)、ORDER_NUMBER、ORG_ID、SOLD_TO_ORG_ID、BOOKED_FLAG、FLOW_STATUS_CODE、ORDER_TYPE_ID | Enter/Booked/Shipped/Closed |
OE_ORDER_LINES_ALL | 订单行,商品明细 | LINE_ID(PK)、HEADER_ID(FK)、INVENTORY_ITEM_ID、ORDERED_QUANTITY、UNIT_SELLING_PRICE、SHIP_FROM_ORG_ID | 行级履约状态 |
OE_PRICE_ADJUSTMENTS_ALL | 折扣、价目调整、促销优惠 | 绑定头 / 行 ID,记录优惠金额、调价规则 ID | 价格分摊溯源 |
OE_ORDER_HOLDS_ALL | 订单冻结(信用冻结、审批冻结) | HOLD_RELEASED_FLAG | Y = 解除冻结,N = 锁定 |
OE_ORDER_PRICE_ATTRIBS | 定价扩展属性、定价维度参数 | 价目表定价自定义取值 |
2. 上下游联动关联表
- 发运 WSH 模块(拣货、发货)
WSH_DELIVERY_DETAILS:订单行绑定发货明细,RELEASE_STATUS:N 未拣货 / Y 拣货完成 / C 已发运;WSH_NEW_DELIVERIES:发货单主表;MTL_RESERVATIONS:库存预留;MTL_MATERIAL_TRANSACTIONS:实际出库库存事务。 - 应收 AR 开票
RA_INTERFACE_LINES_ALL:OM 推送开票接口表;RA_CUSTOMER_TRX_ALL正式应收发票头; - 客户主数据 HZ
HZ_CUST_ACCOUNTS客户账户、HZ_PARTIES客户主体、HZ_CUST_ACCT_SITES_ALL收票 / 收货地址。
3. 标准导入接口表(外部系统 EDI / 第三方下单)
OE_HEADERS_IFACE_ALL:订单头接口OE_LINES_IFACE_ALL:订单行接口OE_IFACE_ERRORS_ALL:导入报错日志 必填控制字段:OPERATION_CODE(INSERT/UPDATE/DELETE)、ORIG_SYS_DOCUMENT_REF外部单号唯一标识。
(二)EBS 标准后台程序(并发请求、PL/SQL API、Workflow)
1. 高频核心并发请求(Concurrent Program)
| 并发程序名称 | 功能 | 执行入口 |
|---|---|---|
| Order Import(订单导入) | 读取 OE 接口表,调用标准 API 生成正式销售订单 | OM 职责集提交请求 |
| Pick Release(挑库发放) | 订单行锁定库存、生成拣货任务、写入 WSH | 履约调度核心 |
| Auto-Create Deliveries | 自动生成发货单 | WSH 后台调度 |
| AutoInvoice Master Program | 发货后自动拉取 OM 数据生成 AR 应收发票 | AR 核心开票任务 |
| Credit Check(信用检查) | 订单 Booking 时自动校验客户信用额度 | 工作流同步触发 |
2. 官方标准 PL/SQL API:OE_ORDER_PUB.PROCESS_ORDER(创建 / 修改 / 取消订单)
最简可运行创建订单 Demo
plsql
DECLARE -- 头结构 x_header_rec OE_ORDER_PUB.HEADER_REC_TYPE; x_line_tbl OE_ORDER_PUB.LINE_TBL_TYPE; x_msg_count NUMBER; x_msg_data VARCHAR2(2000); x_return_status VARCHAR2(1); BEGIN -- 初始化组织、用户环境 FND_GLOBAL.APPS_INITIALIZE(USER_ID=>1001, RESP_ID=>50724, RESP_APPL_ID=>660); MO_GLOBAL.SET_POLICY_CONTEXT('S',204); -- 204=业务组织ORG_ID -- 订单头赋值 x_header_rec.ORDER_SOURCE_ID := 10; x_header_rec.ORDER_TYPE_ID := 101; x_header_rec.SOLD_TO_ORG_ID := 12345; -- 客户账户ID x_header_rec.TRANSACTIONAL_CURR_CODE := 'CNY'; x_header_rec.ORDERED_DATE := SYSDATE; -- 订单行赋值 x_line_tbl(1).INVENTORY_ITEM_ID := 98765; -- 物料ID x_line_tbl(1).ORDERED_QUANTITY := 10; x_line_tbl(1).UNIT_SELLING_PRICE := 99.00; x_line_tbl(1).SHIP_FROM_ORG_ID := 204; -- 调用核心API生成订单 OE_ORDER_PUB.PROCESS_ORDER( P_API_VERSION_NUMBER => 1.0, P_INIT_MSG_LIST => FND_API.G_TRUE, P_COMMIT => FND_API.G_TRUE, P_HEADER_REC => x_header_rec, P_LINE_TBL => x_line_tbl, X_RETURN_STATUS => x_return_status, X_MSG_COUNT => x_msg_count, X_MSG_DATA => x_msg_data ); IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN DBMS_OUTPUT.PUT_LINE('订单创建成功'); ELSE DBMS_OUTPUT.PUT_LINE('异常:'||x_msg_data); END IF; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(SQLERRM); END; /3. EBS 订单 Workflow 工作流(核心履约引擎)
订单全生命周期由OE Standard Order工作流驱动节点: 录入 Enter → 价格计算 → 信用校验 →Booking(订单登记锁定)→ ATP 库存可用校验 → 挑库发放 → 拣货确认 → 发货确认 → 自动开票 → 订单关闭; 可自定义插入审批节点、冻结节点、外部系统同步事件。
4. 常用业务查询 SQL 示例
sql
-- 查询已Booking未发货销售订单全信息 SELECT oh.order_number 订单号, hp.party_name 客户名称, ol.line_number 行号, msi.segment1 物料编码, ol.ordered_quantity 订购数量, ol.shipped_quantity 已发货数量, oh.booked_flag, oh.flow_status_code FROM oe_order_headers_all oh JOIN oe_order_lines_all ol ON oh.header_id=ol.header_id JOIN hz_cust_accounts hca ON oh.sold_to_org_id=hca.cust_account_id JOIN hz_parties hp ON hca.party_id=hp.party_id JOIN mtl_system_items_b msi ON ol.inventory_item_id=msi.inventory_item_id WHERE oh.org_id=204 AND oh.booked_flag='Y' AND ol.shipped_quantity < ol.ordered_quantity;二、Oracle Fusion Cloud DOO(分布式订单编排,对应 EBS OM):表、程序、接入方式
架构核心区别
Fusion 不允许业务直写基表,所有操作强制走 REST API/ESS 任务 / BO 业务对象;底层数据采用分区表_ALL,安全维度通过数据权限集自动过滤业务单元。
(一)Fusion DOO 核心底层数据表
| Fusion 表名 | 对标 EBS 表 | 作用 |
|---|---|---|
DOO_HEADERS_ALL | OE_ORDER_HEADERS_ALL | Fusion 销售订单头主键HEADER_ID |
DOO_LINES_ALL | OE_ORDER_LINES_ALL | 订单商品行主键LINE_ID,STATUS_CODE管控履约状态 |
DOO_PRICE_ADJUSTMENTS | OE_PRICE_ADJUSTMENTS_ALL | 价格折扣、促销分摊记录 |
DOO_HOLDS_ALL | OE_ORDER_HOLDS_ALL | 审批、信用冻结单据 |
DOO_INTERFACE_HEADERS_ALL | OE_HEADERS_IFACE_ALL | 批量导入接口表 |
ICS_RUNS | EBS 并发请求视图 | ESS 定时任务运行日志、执行记录 |
配套关联模块表:
- 发运:
WSH_DELIVERIES_ALL(和 EBS 表名基本一致,逻辑复用); - 应收开票:
RA_INTERFACE_LINES_ALL、RA_CUSTOMER_TRX_ALL; - 客户主数据:
HZ_CUST_ACCOUNTS_SEC安全视图(带数据权限隔离)Oracle。
(二)Fusion 后台调度程序:ESS(Enterprise Scheduler Service)替代 EBS 并发
- ESS 核心定时任务(对标 EBS 并发)
ESS 任务标识 对标 EBS 程序 功能 DOO_IMPORT_ORDERS_JOBOrder Import 读取 DOO 接口表批量导入外部订单 WSH_PICK_RELEASE_JOBPick Release 自动挑库发放 RA_AUTOINVOICE_JOBAutoInvoice 自动应收开票 - ESS 数据表:
ICS_JOBS:ESS 任务定义元数据;ICS_RUNS:每一次任务执行日志、状态、报错信息、耗时、执行者。
(三)Fusion 主流接入开发方式(无 PL/SQL 原生 API,主推 REST)
方式 1:SCM DOO 标准 REST API(最常用)
1)创建销售订单 POST 请求示例接口地址:https://xxx.fa.oraclecloud.com/fscmRestApi/resources/11.13.18.05/salesOrders
json
{ "SoldToCustomerId": 12345, "OrderNumber": "EXT20260808001", "TransactionCurrencyCode": "CNY", "OrderedDate": "2026-08-08", "OrderLines": [ { "InventoryItemId": 98765, "OrderedQuantity": 10, "UnitSellingPrice": 99 } ] }认证方式:OAuth2.0、基本认证;支持分页查询、筛选订单状态、批量更新、取消订单。
方式 2:Fusion PL/SQL 仅支持只读查询(禁止 DML)
plsql
-- Fusion只读查询已生效销售订单(业务用户权限下) SELECT header_id, order_number, status_code, sold_to_customer_id FROM doo_headers_all WHERE org_id=204 AND status_code='BOOKED';方式 3:Fusion Order Extension 扩展(替代 EBS Workflow)
无需修改底层表,配置式扩展:
- 订单提交前后校验规则;
- 自动触发审批冻结、信用校验;
- 发货后推送第三方系统消息; 可视化配置界面,少量 Groovy 脚本即可实现 EBS Workflow 的定制逻辑。
(四)Fusion 批量导入方案
- 把外部数据写入
DOO_INTERFACE_HEADERS_ALL/LINES_ALL接口表; - 调度 ESS 任务
DOO_IMPORT_ORDERS_JOB执行导入; - 错误日志写入
DOO_INTERFACE_ERRORS,修正数据后重新执行导入。
三、EBS OM vs Fusion DOO 关键横向对比表
| 维度 | Oracle EBS R12 OM | Oracle Fusion DOO |
|---|---|---|
| 架构模式 | 单体本地数据库、紧耦合 PL/SQL | 云微服务、BO 封装、服务化调用 |
| 数据写入 | 支持 API / 直插接口表,谨慎直改基表 | 严格禁止 DML 改写基表,仅 API/ESS 导入 |
| 定时调度 | Concurrent 并发管理器 | ESS 企业调度服务 |
| 业务流程引擎 | PL/SQL Workflow 工作流 | 可视化 Order Extension+ESS 编排 |
| 开发接口 | PL/SQL 包 API、接口表 | REST API 为主、SOAP、批量 FBDI 导入 |
| 多组织隔离 | ORG_ID 行级过滤、MO_GLOBAL 上下文 | 数据安全集自动隔离,无需手动 MO 初始化 |
| 报错日志 | FND_CONCURRENT_REQUESTS | ICS_RUNS、接口错误表、云控制台日志 |
| 扩展性 | 表单个性化、CUSTOM 库钩子 | 无 CUSTOM 库,标准扩展点 + Groovy 脚本 |
四、O2C 全链路数据流转对照(EBS→Fusion)
EBS 流转
外部下单→OE 接口表→Order Import 并发→OE 订单表→Booking→Pick Release→WSH 发货→AutoInvoice→AR 发票→收款。
Fusion 流转
第三方系统 REST/FBDI→DOO 接口表→ESS 导入任务→DOO 订单 BO→自动履约编排→WSH 发货 ESS→AutoInvoice ESS→AR 应收。
五、落地运维关键注意事项
- EBS 运维
- 严禁直接
update/delete OE_ORDER_HEADERS_ALL,必须走OE_ORDER_PUBAPI; - Booking、发货等关键节点锁定 Workflow,禁止强行跳过工作流节点改状态;
- 接口导入失败优先修正
OE_IFACE_ERRORS_ALL报错数据,不要硬改正式订单表。
- 严禁直接
- Fusion 运维
- 任何业务数据修改必须通过官方 API,直改基表会破坏事务一致性、审计链路;
- ESS 任务异常在云控制台查看 ICS_RUNS 日志定位;
- 自定义逻辑全部使用官方扩展点,不侵入底层数据结构。