一、Oracle EBS OM 月末关账核对签字清单(财务架构交付版,可直接打印签字)
适用:多 OU MOAC,关账前必做,财务负责人 + 供应链负责人双签字归档
销售订单 OM 关账核对检查表
会计期间:年____月 业务实体 OU:核对日期:____ 核对人:____ 复核人:____ 审批:____
模块一:订单源头数据完整性检查
| 序号 | 核对事项 | 核对标准 | 是否通过(√/×) | 异常说明 & 处理记录 |
|---|---|---|---|---|
| 1 | 接口订单异常清理 | OE_HEADERS_IFACE_ALL / OE_LINES_IFACE_ALL 本期接口错误全部处理完毕,OE_INTERFACE_ERRORS_ALL 无未清除报错 | ||
| 2 | 未 Book 录入订单清理 | ENTER 状态长期挂账订单确认是否作废 / 正常待下单,无滞留废弃订单 | ||
| 3 | 订单 Hold 冻结清理 | 信用 Hold、审批 Hold、价格 Hold 全部解除;冻结无理由滞留订单 | ||
| 4 | RMA 退货订单校验 | 所有 RMA 均关联原销售订单行,累计退货数量≤原单发货量,无超额退货 | ||
| 5 | 主数据有效性校验 | 本期订单物料、客户、价目表、税码、会计规则无失效 / 空值 |
模块二:OM ↔ WSH 发运数量对账(核心数量勾稽)
| 序号 | 核对事项 | 核对标准 | 是否通过(√/×) | 异常说明 & 处理记录 |
|---|---|---|---|---|
| 1 | 订单行发货数量平衡 | OE_ORDER_LINES_ALL.SHIPPED_QUANTITY 合计 = WSH_DELIVERY_DETAILS.SHIPPED_QUANTITY 合计,分 OU、分期间无差异 | ||
| 2 | 未确认交货 Delivery 清理 | 无本期已拣货但未 Ship Confirm 交货单;跨月发货全部调整至正确期间 | ||
| 3 | 行程同步检查 | 运行 “连接行程停靠站” 并发,订单行状态与交货单状态同步,无 Shipped 状态但无 Delivery 明细数据 | ||
| 4 | 直运 Drop Ship 订单校验 | 直运订单无库存事务,Delivery 数量与订单行发货量匹配 |
模块三:WSH ↔ INV 库存出库成本对账(COGS 源头)
| 序号 | 核对事项 | 核对标准 | 是否通过(√/×) | 异常说明 & 处理记录 |
|---|---|---|---|---|
| 1 | 销售出库数量平衡 | WSH 发货总量 = MTL_MATERIAL_TRANSACTIONS 销售出库事务总量(事务来源 = 销售订单) | ||
| 2 | 无成本物料排查 | 本期出库物料全部存在标准成本 / 移动平均成本,无零成本出库 | ||
| 3 | 库存事务跨期检查 | 关账前冻结库存,无下期日期出库事务混入本期 | ||
| 4 | 批次 / 序列号一致性 | 高价值物料发货批次、序列号与库存事务完全匹配 |
模块四:OM ↔ AR 应收收入对账(财务核心金额勾稽)
| 序号 | 核对事项 | 核对标准 | 是否通过(√/×) | 异常说明 & 处理记录 |
|---|---|---|---|---|
| 1 | 已发货未开票清单核对 | 已 Ship 但未推送 AR 接口 / 接口报错订单全部处理完毕 | ||
| 2 | 收入总额平衡 | 本期 OM 已开票订单行含税 / 不含税收入合计 = AR 本期销售收入 + 贷项冲减总额 | ||
| 3 | 重复开票校验 | 同一交货明细无多张发票重复生成,INVOICED_QUANTITY≤SHIPPED_QUANTITY | ||
| 4 | 贷项通知单匹配 | RMA 生成贷项金额与退货订单扩展金额完全一致,无差额 |
模块五:内控与审计专项检查
| 序号 | 核对事项 | 核对标准 | 是否通过(√/×) | 异常说明 & 处理记录 |
|---|---|---|---|---|
| 1 | 订单变更审批留痕 | 大额、折价、取消订单全部存在工作流审批记录 | ||
| 2 | 超信用订单清理 | 超信用额度已发货订单完成回款 / 信用豁免审批 | ||
| 3 | 内部 ISO 关联交易核对 | 内部销售收入与对方 OU 应付匹配,转移定价无异常差额 | ||
| 4 | 手工后台改表排查 | 本期无 DBA 直接更新 OE/WSH/AR 业务表操作,所有变更走前台 API |
模块六:关账收尾确认
- 所有异常差异已查明根因并完成调整,无遗留跨期 / 单边差异:□是 □否
- OTC 全流程数据勾稽平衡,可正常结转收入、成本至总账:□是 □否
- 本期所有异常单据处理记录、修复脚本、审批附件归档留存:□是 □否
核对签字供应链核对人:__________ 日期:__________ 财务应收 / 成本复核:__________ 日期:__________ 财务负责人审批:__________ 日期:__________
二、可直接部署 Oracle EBS OM 对账 SQL 脚本集合
环境说明
- 适配 R12.1 / R12.2,MOAC 多 OU,增加 ORG_ID 筛选;
- 脚本均使用标准 EBS 表,无自定义表;
- 替换脚本中
:P_ORG_ID、:P_PERIOD_NAME为并发请求参数,可直接包装成标准报表并发程序; - 仅查询,无 DML 操作,生产环境安全执行;
- 区分 4 大类:OM-WSH 数量对账、WSH-INV 成本对账、OM-AR 收入对账、异常订单筛查脚本。
脚本 1:OM 订单行 VS WSH 交货明细 数量对账(分 OU、分期间)
sql
/* OM-WSH发货数量平衡核对脚本 找出数量差异单据 */ SELECT ooh.org_id, ooh.order_number 销售订单号, ool.line_number 订单行号, ool.inventory_item_id, msit.segment1 物料编码, ool.ordered_quantity 订购数量, ool.shipped_quantity OM系统已发货数量, NVL(wsh_sum.delivery_shipped_qty,0) WSH交货实际发货数量, (ool.shipped_quantity - NVL(wsh_sum.delivery_shipped_qty,0)) 数量差异, ooh.flow_status_code 订单头状态, ool.flow_status_code 订单行状态 FROM oe_order_headers_all ooh INNER JOIN oe_order_lines_all ool ON ooh.header_id = ool.header_id INNER JOIN mtl_system_items_b msit ON ool.inventory_item_id = msit.inventory_item_id AND ool.org_id = msit.organization_id LEFT JOIN ( SELECT ddl.source_line_id, SUM(ddl.shipped_quantity) delivery_shipped_qty FROM wsh_delivery_details ddl WHERE ddl.source_type_code = 'OE' GROUP BY ddl.source_line_id ) wsh_sum ON ool.line_id = wsh_sum.source_line_id WHERE 1=1 AND ooh.org_id = :P_ORG_ID AND ool.shipped_quantity <> NVL(wsh_sum.delivery_shipped_qty,0) AND ooh.creation_date BETWEEN gl_periods.start_date AND gl_periods.end_date AND gl_periods.period_name = :P_PERIOD_NAME ORDER BY ooh.org_id, ooh.order_number, ool.line_number;脚本 2:WSH 交货明细 VS INV 库存销售出库事务对账(成本核对)
sql
/* WSH发货与库存出库事务数量、成本核对,查找缺库存事务/成本异常 */ SELECT wdd.org_id, ooh.order_number 销售订单号, ool.line_number 订单行号, msit.segment1 物料编码, SUM(wdd.shipped_quantity) WSH发货总数, NVL(mtl_sum.trx_qty,0) 库存出库总数, SUM(wdd.shipped_quantity) - NVL(mtl_sum.trx_qty,0) 数量差异, NVL(mtl_sum.total_cost,0) 出库总成本 FROM wsh_delivery_details wdd INNER JOIN oe_order_lines_all ool ON wdd.source_line_id = ool.line_id INNER JOIN oe_order_headers_all ooh ON ool.header_id = ooh.header_id INNER JOIN mtl_system_items_b msit ON ool.inventory_item_id = msit.inventory_item_id AND ool.org_id = msit.organization_id LEFT JOIN ( SELECT mmt.trx_source_line_id, SUM(ABS(mmt.transaction_quantity)) trx_qty, SUM(mmt.transaction_cost * ABS(mmt.transaction_quantity)) total_cost FROM mtl_material_transactions mmt WHERE mmt.trx_source_type = 'Sales order' GROUP BY mmt.trx_source_line_id ) mtl_sum ON wdd.source_line_id = mtl_sum.trx_source_line_id WHERE wdd.source_type_code = 'OE' AND wdd.org_id = :P_ORG_ID AND ooh.creation_date BETWEEN gl_periods.start_date AND gl_periods.end_date AND gl_periods.period_name = :P_PERIOD_NAME GROUP BY wdd.org_id,ooh.order_number,ool.line_number,msit.segment1,mtl_sum.trx_qty,mtl_sum.total_cost HAVING SUM(wdd.shipped_quantity) <> NVL(mtl_sum.trx_qty,0) ORDER BY ooh.order_number;脚本 3:OM 已开票订单 VS AR 应收发票收入对账(财务金额平衡)
sql
/* OM-AR对账:本期已开票订单收入与AR发票总额差异核对 */ -- 子查询1:OM本期已开票订单不含税收入 WITH om_invoice_data AS ( SELECT ool.org_id, ooh.order_number, SUM(ool.extended_selling_price) om_total_revenue, SUM(ool.extended_tax_amount) om_total_tax FROM oe_order_headers_all ooh INNER JOIN oe_order_lines_all ool ON ooh.header_id = ool.header_id WHERE ool.invoiced_quantity > 0 AND ooh.org_id = :P_ORG_ID AND TRUNC(ooh.creation_date) BETWEEN gl_periods.start_date AND gl_periods.end_date AND gl_periods.period_name = :P_PERIOD_NAME GROUP BY ool.org_id, ooh.order_number ), -- 子查询2:AR本期销售发票+贷项单收入 ar_trx_data AS ( SELECT rla.org_id, rla.source_order_number, SUM(rla.line_amount) ar_line_revenue, SUM(rla.tax_amount) ar_tax_amount FROM ra_customer_trx_all rct INNER JOIN ra_customer_trx_lines_all rla ON rct.customer_trx_id = rla.customer_trx_id WHERE rla.source_type = 'ORDER' AND rct.trx_date BETWEEN gl_periods.start_date AND gl_periods.end_date AND rla.org_id = :P_ORG_ID AND gl_periods.period_name = :P_PERIOD_NAME GROUP BY rla.org_id, rla.source_order_number ) SELECT COALESCE(om.org_id,ar.org_id) org_id, COALESCE(om.order_number,ar.source_order_number) 销售订单号, NVL(om.om_total_revenue,0) OM不含税收入, NVL(ar.ar_line_revenue,0) AR不含税收入, NVL(om.om_total_revenue,0) - NVL(ar.ar_line_revenue,0) 收入差额, NVL(om.om_total_tax,0) OM税金, NVL(ar.ar_tax_amount,0) AR税金差额 FROM om_invoice_data om FULL OUTER JOIN ar_trx_data ar ON om.org_id = ar.org_id AND om.order_number = ar.source_order_number WHERE NVL(om.om_total_revenue,0) <> NVL(ar.ar_line_revenue,0) OR NVL(om.om_total_tax,0) <> NVL(ar.ar_tax_amount,0) ORDER BY COALESCE(om.order_number,ar.source_order_number);脚本 4:异常订单综合筛查脚本(关账前批量排查脏数据)
sql
/* 统一筛查四类异常:未处理接口、长期Hold、已发货未开票、超额RMA、零成本出库 */ -- 1. 接口导入错误订单 SELECT '接口错误订单' 异常类型, ohea.order_number, ohea.error_message FROM oe_headers_interface_all ohea WHERE ohea.process_status = 'ERROR' AND ohea.org_id = :P_ORG_ID UNION ALL -- 2. 长期存在Hold冻结订单 SELECT '订单Hold冻结' 异常类型, ooh.order_number, oh.hold_name FROM oe_order_headers_all ooh INNER JOIN oe_order_holds_all oohl ON ooh.header_id = oohl.header_id INNER JOIN oe_holds_all oh ON oohl.hold_id = oh.hold_id WHERE ooh.org_id = :P_ORG_ID AND oohl.release_date IS NULL UNION ALL -- 3. 已发货未开票订单 SELECT '已发货未开票' 异常类型, ooh.order_number, ool.line_number, ool.shipped_quantity, ool.invoiced_quantity FROM oe_order_headers_all ooh INNER JOIN oe_order_lines_all ool ON ooh.header_id = ool.header_id WHERE ool.shipped_quantity > 0 AND ool.invoiced_quantity = 0 AND ooh.org_id = :P_ORG_ID UNION ALL -- 4. RMA退货量大于原发货量(超额退货) SELECT 'RMA超额退货' 异常类型, rma.order_number, rma.line_number, rma.shipped_quantity rma退货量, src.shipped_quantity 原单发货量 FROM oe_order_headers_all rma INNER JOIN oe_order_lines_all rmal ON rma.header_id = rmal.header_id LEFT JOIN oe_order_lines_all src ON rmal.reference_line_id = src.line_id WHERE rma.order_type_id IN (SELECT transaction_type_id FROM oe_transaction_types_all WHERE type_name LIKE '%RMA%') AND rmal.shipped_quantity < 0 AND ABS(rmal.shipped_quantity) > NVL(src.shipped_quantity,0) AND rma.org_id = :P_ORG_ID UNION ALL -- 5. 库存零成本出库订单 SELECT '零成本出库' 异常类型, ooh.order_number, msit.segment1 物料编码, mmt.transaction_cost FROM mtl_material_transactions mmt INNER JOIN wsh_delivery_details wdd ON mmt.trx_source_line_id = wdd.source_line_id INNER JOIN oe_order_lines_all ool ON wdd.source_line_id = ool.line_id INNER JOIN oe_order_headers_all ooh ON ool.header_id = ooh.header_id INNER JOIN mtl_system_items_b msit ON ool.inventory_item_id = msit.inventory_item_id WHERE mmt.trx_source_type = 'Sales order' AND NVL(mmt.transaction_cost,0) = 0 AND mmt.organization_id = :P_ORG_ID;脚本使用配套说明
- 参数适配
:P_ORG_ID:业务实体 OU ID,多 OU 并发报表绑定参数;:P_PERIOD_NAME:会计期间名称(如2026-07),过滤当期单据。
- 部署方案
- 在 EBS 标准并发程序中新建 “SQL 报表”,粘贴脚本,绑定参数;
- 权限分配给成本会计、应收会计、供应链主管;
- 设置定时请求:每日自动运行异常筛查脚本,月末手工执行三大对账脚本。
- 差异处理优先级① 接口报错单据 → ② WSH 与 OM 数量差异 → ③ 库存零成本出库 → ④ OM 与 AR 收入差额 → ⑤ RMA 超额退货 / 冻结订单。
- 修复前置约束所有差异禁止直接 update 业务表;数量不同步优先运行并发请求「连接行程停靠站」、重启 OM 工作流;接口异常修正源数据后重新提交导入。