华为MetaERP Oracle EBS Purchasing 模块的 PO 创建走 Open Interface(PDOI)而非单条Public API,但控制(Cancel/Close/Final

发布时间:2026/7/15 22:00:09
华为MetaERP Oracle EBS Purchasing 模块的 PO 创建走 Open Interface(PDOI)而非单条Public API,但控制(Cancel/Close/Final Oracle EBS Purchasing 模块的 PO创建走 Open InterfacePDOI而非单条Public API但控制Cancel/Close/Final Close/Update/Reserve有官方 Public Package。以下是 R12 中 PO 模块常用且受支持的 PL/SQL API / Package 汇总一、采购单据控制与生命周期管理 APIPublicPackage / Procedure用途典型调用场景PO_DOCUMENT_CONTROL_PUB.CONTROL_DOCUMENT取消/Close/Finally Close/冻结/解除冻结​ PO、Release、BPA、Requisition自动取消过期PO、批量关单PO_ACTIONS.CLOSE_PO关闭或最终关闭指定 PO Headerp_actionCLOSE/FINALLY CLOSE月结前批量关闭已完成POPO_CHANGE_API1_S.UPDATE_PO(旧版兼容)更新已审批PO的行/发运数量、价格、日期需PO已审批且有Change Order允许SRM回写PO变更PO_DOCUMENT_UPDATE_GRP.UPDATE_DOCUMENTR12 新版 PO 更新封装传入po_changes_rec_type对象做增删改行/Shipment/Dist程序化修改PO Shipment或删除行PO_RESERVEDORDERS_PUB.RESERVE_POPO 预算准备金Encumbrance预留/释放预算控制模块集成⚠️CONTROL_DOCUMENT调用前须FND_GLOBAL.APPS_INITIALIZEMO_GLOBAL.SET_POLICY_CONTEXT(S, org_id)二、请购单PR相关 PL/SQLPackage / Procedure用途PO_CREATE_REQUISITION_SV.CREATE_REQUISITION程序化创建请购单内部使用较多Form中也调用Requisition Import 并发程序POCIRM官方推荐 PR 批量导入方式填充PO_REQUISITIONS_INTERFACE_ALL后提交三、PO 创建 —— 使用 Open Interface非单条行级APIOracle 官方不支持直接调 PL/SQL 一行行创建 PO标准做法是写接口表后调并发程序并发程序ExecutablePL/SQL 底层包说明Import Standard Purchase OrdersPOXPOPDOIPO_DOCUMENTS_PUB/PO_POXPOPDOI内部处理从PO_HEADERS_INTERFACE等表导入生成标准POImport Price CatalogsPOXPDOI同上导入 BPA / Quotation / RFQPO_INTERFACE_S.CREATE_DOCUMENTSAutoCreate 从 PR→POForm中AutoCreate后台调此接口表PO_HEADERS_INTERFACE/PO_LINES_INTERFACE/PO_LINE_LOCATIONS_INTERFACE/PO_DISTRIBUTIONS_INTERFACE四、辅助查询与工具 Package常被方案引用Package用途PO_AUTOSOURCE_SV.REQIMPORT_SOURCINGMRP/PR自动寻源推荐供应商PO_CURRENCY_SV.GET_FUNCTIONAL_CURRENCY_CODE取OU本位币PO_CURRENCY_SV.GET_CROSS_OU_RATE跨OU汇率获取PO_CORE_S.GET_REQ_HEADER_ID/GET_PO_HEADER_ID根据编号反查ID常用校验五、接收Receiving关联 APIPackage / 并发说明RCV_TRANSACTIONS_INTERFACE接口表 Receiving Transaction ProcessorRCVTPO外部WMS写入收货RCV_ROI_TRANSACTION_PUB.PROCESS_TRANSACTIONROI方式处理接收事务较少直接用六、典型调用伪代码示例Cancel POBEGIN fnd_global.apps_initialize(user_id 1804, resp_id 20707, resp_appl_id 201); mo_global.init(PO); mo_global.set_policy_context(S, :org_id); po_document_control_pub.control_document( p_api_version 1.0, p_init_msg_list fnd_api.g_true, p_commit fnd_api.g_true, x_return_status l_return_status, p_doc_type PO, -- PO / RELEASE / PA / RFQ / QUOTATION p_doc_subtype STANDARD, -- STANDARD / BLANKET / CONTRACT / PLANNED p_doc_id :po_header_id, p_action CANCEL, -- CANCEL / CLOSE / FINALLY CLOSE / FREEZE / UNFREEZE p_action_date SYSDATE, p_cancel_reason Expired, p_cancel_reqs_flag N, p_org_id :org_id ); END;七、架构建议新建 PO/BPA​ → 走 PDOI 接口表 Import Standard Purchase Orders不要直写基表或找私有包改单Change Order​ →PO_DOCUMENT_UPDATE_GRP.UPDATE_DOCUMENTR12推荐或PO_CHANGE_API1_S.UPDATE_PO取消/关单​ →PO_DOCUMENT_CONTROL_PUB.CONTROL_DOCUMENT批量 PR 导入​ →PO_REQUISITIONS_INTERFACE_ALL Requisition Import