Mastering the Procure-to-Pay (P2P)
Technical Flow
Introduction
Understanding the Procure-to-Pay (P2P) cycle is the bread and butter of any
Oracle Functional or Technical Consultant. In 2026, real-time integration and sub-
ledger accuracy are more critical than ever. This guide maps the data DNA of the
entire process, from the initial Requisition to the final General Ledger entry.
1. Requisition
POR_REQUISITION_HEADERS_ALL
POR_REQUISITION_LINES_ALL
POR_REQ_DISTRIBUTIONS_ALL
2. Purchase Order
PO_HEADERS_ALL
PO_LINES_ALL
PO_LINE_LOCATIONS_ALL
PO_DISTRIBUTIONS_ALL
3. Receiving
RCV_SHIPMENT_HEADERS
RCV_SHIPMENT_LINES
RCV_TRANSACTIONS
4. Accounts Payable
AP_INVOICES_ALL
AP_INVOICE_LINES_ALL
AP_INVOICE_DISTRIBUTIONS_ALL
5. Payments
AP_PAYMENT_SCHEDULES_ALL
AP_INVOICE_PAYMENTS_ALL
IBY_PAYMENTS_ALL
IBY_PAY_SERVICE_REQUESTS
6. Sub-ledger Accounting (XLA)
XLA_TRANSACTION_ENTITIES
XLA_EVENTS
XLA_AE_HEADERS
XLA_AE_LINES
XLA_DISTRIBUTION_LINKS
7. General Ledger (GL)
GL_JE_BATCHES
GL_JE_HEADERS
GL_JE_LINES
GL_IMPORT_REFERENCES
GL_BALANCES
GL_CODE_COMBINATIONS
1. The Foundation: Requisition to PO
Everything starts with a need. The Requisition captures the "What" and "Why,"
which then matures into a "Purchase Order" (the legal contract).
Module Core Tables Primary Keys / Links
Requisition POR_REQUISITION_HEADERS_ALL
POR_REQUISITION_LINES_ALL
POR_REQ_DISTRIBUTIONS_ALL
REQUISITION_HEADER_ID
REQUISITION_LINE_ID
Purchase Order
PO_HEADERS_ALL
PO_LINES_ALL
PO_LINE_LOCATIONS_ALL
PO_DISTRIBUTIONS_ALL
PO_HEADER_ID
PO_LINE_ID
LINE_LOCATION_ID
Interview Question: How do you link a Req to a PO?
PRL.REQUISITION_LINE_ID = POL.REQUISITION_LINE_ID (or via PO_LINE_LOCATIONS_ALL)
2. Fulfillment: Receiving
When the goods arrive, we record the physical movement. This is the bridge
between Procurement and Finance.
RCV_SHIPMENT_HEADERS: High-level receipt info (Packing slip, Vendor).
RCV_SHIPMENT_LINES: What exactly was received.
RCV_TRANSACTIONS: The history of the receipt (Receive, Deliver, Return).
Interview Question: Which table tracks the status of a receipt (e.g., Returned vs.
Delivered)?
Answer: RCV_TRANSACTIONS using the TRANSACTION_TYPE column.
3. The Liability: Accounts Payable (AP)
Now we owe money. AP matches the Invoice against the PO or the Receipt (2-
way, 3-way, or 4-way matching).
The Join:
RCV_TRANSACTIONS.TRANSACTION_ID =
AP_INVOICE_LINES_ALL.RCV_TRANSACTION_ID
4. Settlement: Payments (IBY)
The money leaves the bank. Oracle uses the "IBY" (Inquiry to Buy / Payments)
engine for the heavy lifting.
AP_INVOICE_PAYMENTS_ALL: Links the specific invoice to a check/
electronic payment.
IBY_PAYMENTS_ALL: The actual payment record in the payment engine.
5. The Accounting Engine: XLA & GL
The Sub-ledger Accounting (XLA) module is the most complex part of P2P. It
translates business events (like "Invoice Validated") into Journal Entries.
The XLA Hierarchy:
XLA_TRANSACTION_ENTITIES: Identifies the "Source" (AP_INVOICES).
XLA_EVENTS: The specific accounting event.
XLA_AE_HEADERS / LINES: The sub-ledger Journal Entry.
Final Bridge to GL:
XLA_AE_LINES.GL_SL_LINK_ID =
GL_IMPORT_REFERENCES.GL_SL_LINK_ID
No comments:
Post a Comment