三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

华为MetaERP Oracle EBS R12 采购模块 vs Oracle Fusion Cloud Procurement一、整体架构核心差异总览表格维度 Oracle EBS R12 采

华为MetaERP Oracle EBS R12 采购模块 vs Oracle Fusion Cloud Procurement一、整体架构核心差异总览表格维度 Oracle EBS R12 采

Oracle EBS R12 采购模块 vs Oracle Fusion Cloud Procurement

一、整体架构核心差异总览

维度Oracle EBS R12 采购 (PO)Oracle Fusion Cloud Procurement
部署形态本地 EBS 整套应用、传统客户端 + Form 界面、数据库直连云原生 SaaS、REST API、UI 网页端、PaaS 底层、无法直连底层数据库
数据架构经典 Oracle 范式化业务表,多弹性域、触发器、工作流 WF 架构云分区式逻辑表、视图封装、大部分底层物理表不对外暴露,只能通过视图 / API 取数
技术栈PL/SQL、Oracle Forms、Concurrent Request、工作流 WF、XML Publisher、AD 补丁REST API、SOAP、OTBI 报表、BIP、Fusion HCM 同款工作流、Groovy、ESS 并发程序
采购核心流程申请→询价→报价→采购订单→接收→检验→入库→开票匹配 (3Way Match)流程一致,但审批、供应商管理、合同、支出分析全面云化,内置智能审批、预算实时校验
扩展方式开发 FORM、并发程序、触发器、客户化表、弹性域自定义扩展仅支持 Groovy 规则、API 集成、OTBI 自定义分析、第三方集成,禁止直改底层数据

第一部分:Oracle EBS R12 PO 采购模块后台核心表体系(全链路)

1.1 整体业务数据流链路

员工采购申请 (Requisition) → 审批 → 创建 PO 采购订单 → 供应商发货 → 收货接收 → 质量检验 → 库存入库 → AP 发票三匹配付款

阶段 1:采购申请模块(PO Requisition)

  1. PO_REQUISITION_HEADERS_ALL
    • 作用:采购申请头表,全局 ALL 表,带 ORG_ID 区分业务 OU
    • 关键字段: REQUISITION_HEADER_ID:主键 PREPARER_ID:申请人员工 ID AUTHORIZATION_STATUS:审批状态(APPROVED/INCOMPLETE/REJECTED) ORG_ID:运营组织 REQUISITION_TYPE:物资申请 / 费用申请 APPROVED_DATE:审批通过时间
  2. PO_REQUISITION_LINES_ALL申请行明细,关联头 ID,物料、数量、预算账户、需求日期
  3. PO_REQ_DISTRIBUTIONS_ALL申请分配行,核心会计科目、费用账户、项目 WBS、预算占用,财务入账源头

阶段 2:供应商基础数据(采购基础主数据)

  1. PO_VENDORS:供应商头
  2. PO_VENDOR_SITES_ALL:供应商地点(付款、收货地点)
  3. PO_VENDOR_CONTACTS:供应商对接联系人
  4. AP_SUPPLIERS/AP_SUPPLIER_SITES_ALL:EBS 中供应商实际统一存 AP 表,PO 做引用

阶段 3:采购订单 PO 核心主表(EBS 最核心三张表)

(1)PO_HEADERS_ALL 采购订单头表

主键:PO_HEADER_ID 关键字段:

  • PO_TYPE:STANDARD 标准 PO/BLANKET 一揽子协议 / PLANNED 计划 PO/CONTRACT 合同
  • AUTHORIZATION_STATUS:PO 审批状态
  • VENDOR_ID、VENDOR_SITE_ID:供应商及收货付款地点
  • CURRENCY_CODE:订单币种
  • APPROVED_FLAG:是否审批通过
  • CLOSED_CODE:关闭状态(OPEN/CLOSED/FINALLY CLOSED 取消关闭)
  • ORG_ID、SHIP_TO_ORG_ID:收货库存组织
(2)PO_LINES_ALL 采购订单行

PO_LINE_ID 行主键,关联 PO_HEADER_ID 字段:ITEM_ID 物料 ID、QUANTITY 订购数量、UNIT_PRICE 单价、LINE_TYPE(物料 / 费用 / 服务)、NEED_BY_DATE 需求到货日期

(3)PO_LINE_LOCATIONS_ALL 采购订单分配发货计划行(行级拆分收货、税、交货地点)

EBS 采购最重要中间层表,一行 PO 行可以拆多行发货计划 关键:SHIPMENT_ID 主键

  • QUANTITY_RECEIVED:已收货数量
  • QUANTITY_BILLED:已开票数量
  • QUANTITY_CANCELLED:取消数量
  • RECEIVING_FLAG:是否需要收货
  • TAX_CODE_ID:税码,对接 EBS 税务模块 这张表是三匹配(PO - 收货 - 发票)的核心关联纽带
(4)PO_DISTRIBUTIONS_ALL PO 财务分配行

决定采购费用入账科目、项目、预算、资产化标识

  • CODE_COMBINATION_ID:总账会计科目
  • PROJECT_ID、TASK_ID、WBS_ELEMENT_ID:项目成本归集
  • ASSET_CATEGORY_ID:入库后是否转固定资产
  • ACCRUAL_ACCOUNT_ID:暂估入账科目(货到票未到暂估核心)

阶段 4:收货接收模块(Receiving)

  1. RCV_SHIPMENT_HEADERS供应商送货头
  2. RCV_SHIPMENT_LINES送货明细
  3. RCV_TRANSACTIONS收货事务核心表(所有接收、退回、检验、入库动作全部记录于此) TRANSACTION_TYPE:RECEIVE 接收、ACCEPT 检验合格入库、REJECT 拒收、RETURN 退回供应商 关联 PO_LINE_LOCATION_ID,回写 PO_LINE_LOCATIONS_ALL 的 QUANTITY_RECEIVED

阶段 5:配套辅助配置表

  1. PO_AGREEMENTS_ALL:一揽子采购协议 BPA
  2. PO_APPROVAL_ASSIGNMENTS:审批层级配置
  3. PO_POSITION_CONTROLS:采购金额审批权限
  4. PO_LOOKUP_CODES:PO 模块标准值集(订单状态、关闭类型)

1.2 EBS PO 经典 PL/SQL 开发示例

示例 1:查询已审批未关闭标准采购订单及收货情况

plsql

SELECT ph.po_header_id, ph.segment1 po_number, ph.authorization_status po_status, pl.line_num, pl.item_description, pl.unit_price, pl.quantity ordered_qty, pll.quantity_received received_qty, pll.quantity_billed billed_qty, vs.vendor_site_code FROM po_headers_all ph JOIN po_lines_all pl ON ph.po_header_id = pl.po_header_id JOIN po_line_locations_all pll ON pl.po_line_id = pll.po_line_id JOIN po_vendor_sites_all vs ON ph.vendor_site_id = vs.vendor_site_id WHERE ph.org_id = 82 --替换实际业务OU AND ph.authorization_status = 'APPROVED' AND ph.closed_code <> 'FINALLY CLOSED' AND ph.po_type = 'STANDARD';

示例 2:EBS 标准并发请求(Concurrent Program)底层程序

  1. POAPPROVAL:PO 审批工作流后台并发程序,调用 WF_PO_APPROVAL_PKG 包
  2. PO_CREATE_RECEIPT:自动创建收货并发程序
  3. PO_AUTOCREATE_PO:自动由采购申请自动生成 PO,核心包PO_AUTOCREATE_PUB
  4. 暂估入账并发:PO Accrual Process for Period-End Accruals调用包:PO_ACCRUAL_PVT,月末货到票未到自动生成总账暂估凭证

示例 3:EBS 标准 API 创建采购申请(公有 API,正式开发推荐,禁止直插表)

EBS 严禁直接 INSERT/UPDATE PO 业务表,必须使用官方 Public API

plsql

-- 创建采购申请标准API包:PO_REQUISITION_PUB.CREATE_REQUISITION DECLARE l_req_header_rec PO_REQUISITION_PUB.req_header_rec_type; l_req_lines_tbl PO_REQUISITION_PUB.req_lines_tbl_type; l_return_status VARCHAR2(1); l_msg_count NUMBER; l_msg_data VARCHAR2(2000); BEGIN --赋值申请头 l_req_header_rec.preparer_id := 12345; --申请人员工ID l_req_header_rec.org_id := 82; l_req_header_rec.requisition_type := 'PURCHASE'; --调用API生成申请 PO_REQUISITION_PUB.CREATE_REQUISITION( p_api_version => 1.0, p_req_header_rec => l_req_header_rec, p_req_lines_tbl => l_req_lines_tbl, x_return_status => l_return_status, x_msg_count => l_msg_count, x_msg_data => l_msg_data ); IF l_return_status = 'S' THEN DBMS_OUTPUT.PUT_LINE('采购申请创建成功'); ELSE DBMS_OUTPUT.PUT_LINE('失败:'||l_msg_data); END IF; END; /

1.3 EBS PO 核心常用 PL/SQL 包汇总

  1. PO_HEADERS_PVT:PO 头私有处理包
  2. PO_LINE_LOCATIONS_PVT:发货计划行业务逻辑
  3. PO_WF_APPROVAL_PKG:采购审批工作流核心
  4. PO_RCV_TRANSACTIONS_PUB:收货公开 API
  5. PO_CLOSE_PO_PVT:订单关闭、取消逻辑

第二部分:Oracle Fusion Cloud Procurement 采购模块

2.1 Fusion 关键约束:无法直接访问底层物理表

  1. 客户无数据库直连权限,所有数据获取路径:
    • OTBI 分析视图(最常用)
    • Fusion REST API
    • BIP 数据模型
    • 自定义 ESS 作业、Groovy 验证规则
  2. Fusion 内部逻辑表采用分区、逻辑分区架构,按业务单元、账套做数据隔离

2.2 Fusion 采购对应 EBS 业务的逻辑视图(OTBI 标准逻辑表)

EBS 业务对象Fusion OTBI 逻辑视图名说明
采购申请头Procurement - Requisition Header Real Time实时申请头数据
采购订单头Procurement - Purchase Order Header Real TimePO 头实时视图
PO 行、发货计划Procurement - Purchase Order Line Real Time合并 EBS plines+linelocations
收货事务Procurement - Receiving Transactions Real Time对应 RCV_TRANSACTIONS
供应商主数据Procurement - Supplier Real Time供应商、供应商地点
采购分配财务Procurement - PO Distribution Real Time对应 PO_DISTRIBUTIONS_ALL 科目分配

2.3 Fusion 采购核心 REST API 示例(主流集成场景)

接口 1:查询已审批采购订单(标准 REST)

接口地址

plaintext

GET /fscmRestApi/resources/latest/purchaseOrders

关键查询参数:

plaintext

?finder=ApprovedPurchaseOrders &expand=purchaseOrderLines,purchaseOrderLines.receivingShipments &fields=PurchaseOrderNumber,Status,VendorName,OrderedAmount

返回 JSON 包含:订单号、审批状态、供应商、订购数量、已收货数量、已开票数量,等价 EBS 多表 JOIN 结果。

接口 2:创建采购申请 REST API

plaintext

POST /fscmRestApi/resources/latest/purchaseRequisitions

请求体精简示例:

json

{ "PreparerId": "100001", "BusinessUnitId": "30001", "RequisitionType": "PURCHASE", "requisitionLines": [ { "ItemId": "20005", "Quantity": 10, "UnitPrice": 100, "NeedByDate": "2026-12-31" } ] }

2.4 Fusion 后台程序类型(替代 EBS 并发请求)

  1. ESS 作业(Enterprise Scheduler Service)对应 EBS Concurrent Request,Fusion 标准采购 ESS:
    • 采购订单审批同步:Import Approved Purchase Orders
    • 收货批量导入:Import Receiving Transactions
    • 月末采购暂估:Period End Accrual for Procurement
  2. 工作流:Oracle BPM Workflow替代 EBS WF 工作流,可视化拖拽配置审批流,无需 PL/SQL 开发;
  3. Groovy 脚本验证在 PO 行、申请行新增自定义校验规则(例如单价上限校验、预算校验),Fusion 唯一轻量客户化方式。

2.5 Fusion 三匹配逻辑实现差异

  1. EBS:数据库层面表字段物理更新(QUANTITY_RECEIVED、QUANTITY_BILLED);
  2. Fusion:业务层实时计算,不在物理表固化字段,查询时实时聚合收货、发票事务数据,数据一致性由云事务引擎保障。

第三部分:EBS 与 Fusion 采购关键技术开发对比

3.1 数据查询开发

  1. EBS多表 JOIN SQL 直查,弹性域表(FND_FLEX_VALUES、FND_FLEX_VALIDATION_RULES)关联取值,可做视图、存储过程、定时 DB JOB。 典型关联:PO_HEADERS_ALL+PO_LINES_ALL+PO_LINE_LOCATIONS_ALL+RCV_TRANSACTIONS+PO_DISTRIBUTIONS_ALL 五表联查完整订单生命周期。

  2. Fusion禁止 SQL 直连,方案: ① OTBI 创建分析报表拖拽维度指标; ② BIP 基于逻辑视图写 SQL; ③ 外部系统调用 REST 接口定时拉取数据入库本地数据仓库。

3.2 数据导入集成

  1. EBS:标准接口表 + 并发导入程序 例如:PO_HEADERS_INTERFACE、PO_LINES_INTERFACE 接口表,运行Import Purchase Orders并发程序导入正式表;
  2. Fusion:FBDI 模板导入(Excel 模板上传)+ REST 两种方式,无数据库接口表。

3.3 审批架构

  1. EBS:WF 工作流引擎,PL/SQL 打包审批逻辑,WF_NOTIFICATIONS 发审批通知;
  2. Fusion:BPM 可视化流程设计,移动端审批、邮件 / OA 消息集成,规则配置化,极少编码。

第四部分:经典业务场景表级追踪示例(EBS 完整链路)

场景:一张标准 PO 下单→收货→开票

  1. 创建 PO:写入 PO_HEADERS_ALL、PO_LINES_ALL、PO_LINE_LOCATIONS_ALL、PO_DISTRIBUTIONS_ALL;
  2. 审批通过:更新 PH.AUTHORIZATION_STATUS='APPROVED';
  3. 供应商送货,执行接收:插入 RCV_TRANSACTIONS,同步更新 PLL.QUANTITY_RECEIVED;
  4. AP 录入供应商发票,匹配 PO 行:AP_INVOICES_ALL+AP_INVOICE_DISTRIBUTIONS_ALL,回写 PLL.QUANTITY_BILLED;
  5. 全额三匹配无误后关闭 PO:更新 PH.CLOSED_CODE='FINALLY CLOSED'。

第五部分实施与开发注意事项

EBS 端

  1. 所有 ALL 表必须带上 ORG_ID 过滤,多 OU 环境不加 ORG 会跨组织串数据;
  2. 绝对禁止 DML 直接修改 PO 业务表,必须调用标准 PUB API;
  3. 弹性域、值集是 EBS 扩展核心,不要自建冗余字段;
  4. 暂估核心依赖 PO_DISTRIBUTIONS_ALL 里的暂估科目,月末 accrual 并发务必按时运行。

Fusion 端

  1. 所有集成优先 REST/FBDI,拒绝尝试穿透底层库;
  2. 客户化逻辑优先配置 + Groovy,尽量零代码;
  3. OTBI 实时视图有轻微延迟,高实时性需求走 API 拉取;
  4. 云版本持续自动升级,自定义 Groovy、API 集成兼容性官方持续维护。
← 返回列表