JDE Reference
F4311
transactionAlso in JDE WorldPurchase order detail - one row per PO line with item, branch, quantities, unit/extended costs, and the status flow
What the badges mean
- Superseded
- Superseded — a newer table has replaced it, but older scripts still read this one.
- Also in JDE World
- Also present in JDE World A9.x on the same table name.
- master
- Data class: what the table holds — master data, transaction documents, control/setup values, history, or a workfile.
- Read/write access
- Access mode: how the paired program reads or writes this table — R (read), W (write), or R/W (both).
No lifecycle badge means the table is current and not documented in JDE World. In field listings, K marks a primary-key field.
Used in the library
KPI definitions
Dashboard patterns
Fields
48 fields · 5 key
48 fields.
| Key | Field | Alias | Description | Type | Length | Flags |
|---|---|---|---|---|---|---|
| Primary key | PDKCOO | KCOO | Company that owns the order-number sequence; part of the composite order key | String | 5 | |
| Primary key | PDDOCO | DOCO | Order number | Numeric | 8 | |
| Primary key | PDDCTO | DCTO | Order document type (e.g. OP purchase order, SO sales order) | String | 2 | |
| Primary key | PDSFXO | SFXO | Order suffix distinguishing multiple documents under one order number | String | 3 | |
| Primary key | PDLNID | LNID | Order line number (3 implied decimals, e.g. 1.000) | Numeric | 6 | |
| PDMCU | MCU | Branch/plant business unit; right-justified, space-padded to 12 | String | 12 | ||
| PDCO | CO | Company code | String | 5 | ||
| PDOKCO | OKCO | Company key of the originating order | String | 5 | ||
| PDOORN | OORN | Order number of the originating document this record came from | String | 8 | ||
| PDOCTO | OCTO | Document type of the originating order | String | 2 | ||
| PDRKCO | RKCO | Company key of the related order | String | 5 | ||
| PDRORN | RORN | Cross-referenced related order number (PO, SO, or work order) | String | 8 | ||
| PDRCTO | RCTO | Document type of the related order | String | 2 | ||
| PDAN8 | AN8 | Supplier address book number | Numeric | 8 | ||
| PDSHAN | SHAN | Ship-to address book number | Numeric | 8 | ||
| PDANBY | ANBY | Buyer address book number | Numeric | 8 | ||
| PDITM | ITM | Short internal item number - joins to F4101/F4102 | Numeric | 8 | ||
| PDLITM | LITM | Second item number, the long code users normally key | String | 25 | ||
| PDAITM | AITM | Third item number (catalog or alternate identifier) | String | 25 | ||
| PDLOCN | LOCN | Warehouse storage location | String | 20 | ||
| PDLOTN | LOTN | Lot or serial number | String | 30 | ||
| PDDSC1 | DSC1 | Line description | String | 30 | ||
| PDLNTY | LNTY | Line type controlling G/L, inventory, and A/P-A/R interfaces | String | 2 | ||
| PDLTTR | LTTR | Last completed status in the order activity flow | String | 3 | ||
| PDNXTR | NXTR | Next expected status in the order activity flow | String | 3 | ||
| PDTRDJ | TRDJ | Order/transaction date | Numeric (DD type: Date) | 6 | ||
| PDDRQJ | DRQJ | Requested date | Numeric (DD type: Date) | 6 | ||
| PDPDDJ | PDDJ | Scheduled/promised delivery date | Numeric (DD type: Date) | 6 | ||
| PDOPDJ | OPDJ | Original promised delivery date | Numeric (DD type: Date) | 6 | ||
| PDADDJ | ADDJ | Actual date goods shipped or were delivered | Numeric (DD type: Date) | 6 | ||
| PDDGL | DGL | General ledger date the transaction posts to | Numeric (DD type: Date) | 6 | ||
| PDUOM | UOM | Transaction unit of measure | String | 2 | ||
| PDUORG | UORG | Ordered quantity in the transaction unit of measure | Numeric | 15 | ||
| PDUOPN | UOPN | Open quantity not yet received or shipped | Numeric | 15 | ||
| PDUREC | UREC | Quantity received to date | Numeric | 15 | ||
| PDUCHG | UCHG | Quantity currently on hold | Numeric | 15 | ||
| PDPRRC | PRRC | Unit cost in domestic currency (4 implied decimals) | Numeric | 15 | ||
| PDAEXP | AEXP | Extended price of the line in domestic currency | Numeric | 15 | ||
| PDAOPN | AOPN | Open amount remaining on the line | Numeric | 15 | ||
| PDAREC | AREC | Amount received to date | Numeric | 15 | ||
| PDACHG | ACHG | Amount on hold | Numeric | 15 | ||
| PDECST | ECST | Extended cost (quantity x unit cost) in domestic currency | Numeric | 15 | ||
| PDCRCD | CRCD | Transaction currency code | String | 3 | ||
| PDCRR | CRR | Currency conversion spot rate; implied decimals vary by setup | Numeric | 15 | ||
| PDFRRC | FRRC | Unit cost in foreign currency | Numeric | 15 | ||
| PDFEC | FEC | Extended cost in foreign currency | Numeric | 15 | ||
| PDGLC | GLC | G/L offset class used to derive distribution accounts | String | 4 | ||
| PDCORD | CORD | Change order sequence number | Numeric | 3 |
Field provenance: hand-curated.
Boilerplate SQL
Starting point for reading F4311 on Databricks — Julian dates, implied decimals, and padded strings are already converted. Set your Unity Catalog location and filter values below; they’re substituted into the SQL and the copy button.
Query parameters
7 parameters not filled: <catalog>, <schema_data>, <KCOO>, <DOCO>, <DCTO>, <TRDJ_FROM>, <TRDJ_TO>
-- ============================================================
-- Table : F4311 Purchase order detail - one row per PO line with item, branch, quantities, unit/extended costs, and the status flow
-- Purpose: Column-selected read of F4311 — auto-generated from field metadata
-- Grain : One row per PDKCOO + PDDOCO + PDDCTO + PDSFXO + PDLNID
-- Notes : Auto-generated skeleton. Julian dates (CYYDDD) are converted to DATE and implied-decimal amounts are scaled (verify decimals in F9210); padded business-unit/UDC keys are TRIMmed. Audit columns (…USER/…PID/…UPMJ) are omitted — see the quirks guide. Set catalog/schema to your Unity Catalog location; fill remaining placeholders (<...>) for your tenant.
-- ============================================================
SELECT
d.PDKCOO AS "Company that owns the order-number sequence; part of the composite order key",
d.PDDOCO AS "Order number",
d.PDDCTO AS "Order document type (e.g. OP purchase order, SO sales order)",
d.PDSFXO AS "Order suffix distinguishing multiple documents under one order number",
d.PDLNID / POWER(10, 3) AS "Order line number (3 implied decimals, e.g. 1.000)", -- implied decimals: 3 (verify in F9210)
TRIM(d.PDMCU) AS "Branch/plant business unit; right-justified, space-padded to 12",
d.PDCO AS "Company code",
d.PDOKCO AS "Company key of the originating order",
d.PDOORN AS "Order number of the originating document this record came from",
d.PDOCTO AS "Document type of the originating order",
d.PDRKCO AS "Company key of the related order",
d.PDRORN AS "Cross-referenced related order number (PO, SO, or work order)",
d.PDRCTO AS "Document type of the related order",
d.PDAN8 AS "Supplier address book number",
d.PDSHAN AS "Ship-to address book number",
d.PDANBY AS "Buyer address book number",
d.PDITM AS "Short internal item number - joins to F4101/F4102",
d.PDLITM AS "Second item number, the long code users normally key",
d.PDAITM AS "Third item number (catalog or alternate identifier)",
d.PDLOCN AS "Warehouse storage location",
d.PDLOTN AS "Lot or serial number",
d.PDDSC1 AS "Line description",
d.PDLNTY AS "Line type controlling G/L, inventory, and A/P-A/R interfaces",
d.PDLTTR AS "Last completed status in the order activity flow",
d.PDNXTR AS "Next expected status in the order activity flow",
CASE WHEN d.PDTRDJ IS NULL OR d.PDTRDJ = 0 THEN NULL ELSE DATE_ADD(MAKE_DATE(1900 + CAST(d.PDTRDJ AS INT) DIV 1000, 1, 1), CAST(d.PDTRDJ AS INT) % 1000 - 1) END AS "Order/transaction date", -- CYYDDD Julian → DATE
CASE WHEN d.PDDRQJ IS NULL OR d.PDDRQJ = 0 THEN NULL ELSE DATE_ADD(MAKE_DATE(1900 + CAST(d.PDDRQJ AS INT) DIV 1000, 1, 1), CAST(d.PDDRQJ AS INT) % 1000 - 1) END AS "Requested date", -- CYYDDD Julian → DATE
CASE WHEN d.PDPDDJ IS NULL OR d.PDPDDJ = 0 THEN NULL ELSE DATE_ADD(MAKE_DATE(1900 + CAST(d.PDPDDJ AS INT) DIV 1000, 1, 1), CAST(d.PDPDDJ AS INT) % 1000 - 1) END AS "Scheduled/promised delivery date", -- CYYDDD Julian → DATE
CASE WHEN d.PDOPDJ IS NULL OR d.PDOPDJ = 0 THEN NULL ELSE DATE_ADD(MAKE_DATE(1900 + CAST(d.PDOPDJ AS INT) DIV 1000, 1, 1), CAST(d.PDOPDJ AS INT) % 1000 - 1) END AS "Original promised delivery date", -- CYYDDD Julian → DATE
CASE WHEN d.PDADDJ IS NULL OR d.PDADDJ = 0 THEN NULL ELSE DATE_ADD(MAKE_DATE(1900 + CAST(d.PDADDJ AS INT) DIV 1000, 1, 1), CAST(d.PDADDJ AS INT) % 1000 - 1) END AS "Actual date goods shipped or were delivered", -- CYYDDD Julian → DATE
CASE WHEN d.PDDGL IS NULL OR d.PDDGL = 0 THEN NULL ELSE DATE_ADD(MAKE_DATE(1900 + CAST(d.PDDGL AS INT) DIV 1000, 1, 1), CAST(d.PDDGL AS INT) % 1000 - 1) END AS "General ledger date the transaction posts to", -- CYYDDD Julian → DATE
d.PDUOM AS "Transaction unit of measure",
d.PDUORG AS "Ordered quantity in the transaction unit of measure",
d.PDUOPN AS "Open quantity not yet received or shipped",
d.PDUREC AS "Quantity received to date",
d.PDUCHG AS "Quantity currently on hold",
d.PDPRRC / POWER(10, 4) AS "Unit cost in domestic currency (4 implied decimals)", -- implied decimals: 4 (verify in F9210)
d.PDAEXP / POWER(10, 2) AS "Extended price of the line in domestic currency", -- implied decimals: 2 (verify in F9210)
d.PDAOPN / POWER(10, 2) AS "Open amount remaining on the line", -- implied decimals: 2 (verify in F9210)
d.PDAREC / POWER(10, 2) AS "Amount received to date" -- implied decimals: 2 (verify in F9210)
-- … plus 8 more columns — full list in the Fields section above
FROM <catalog>.<schema_data>.f4311 d
WHERE
d.PDKCOO = '<KCOO>'
-- AND d.PDDOCO = <DOCO>
-- AND d.PDDCTO = '<DCTO>'
-- AND d.PDTRDJ >= <TRDJ_FROM> -- Julian CYYDDD, e.g. 126001
-- AND d.PDTRDJ <= <TRDJ_TO> -- Julian CYYDDD, e.g. 126365
ORDER BY d.PDKCOO;Verified September 2026
Relationships
Diagram of 1-hop neighbors — join details below. UDC decode edges point coded fields at their F0005 lookup.
Join details
ON f4301.PHDOCO = f4311.PDDOCOON f4311.PDDOCO = f43199.OLDOCOON f43121.PRDOCO = f4311.PDDOCOON f4311.PDAN8 = f0401.A6AN8ON f4311.PDITM = f4101.IMITMON f4311.PDAN8 = f0101.ABAN8ON f0005.DRSY = '00' AND f0005.DRRT = 'DT' AND TRIM(f0005.DRKY) = TRIM(f4311.PDDCTO)ON f0005.DRSY = '40' AND f0005.DRRT = 'AT' AND TRIM(f0005.DRKY) = TRIM(f4311.PDLTTR)ON f3411.MMDOCO = f4311.PDDOCOON CAST(NULLIF(TRIM(f0411.RPPO), '') AS BIGINT) = f4311.PDDOCOON f47022.SZDOCO = f4311.PDDOCO
Programs That Use This Table
R read · W write · R/W read + write
Primary programs
Secondary programs
- P4312PO Receipts — record receipt of goods against purchase orders, updating on-hand inventory and creating receiver recordsRead/write accessInteractive
- P4314Voucher Match — match supplier invoices to purchase order receipts (two- or three-way match) to create A/P vouchersRead/write accessInteractive
- P43214Purchase Receipts Inquiry — review open and historical receipt records and reverse receipts when neededRead/write accessInteractive
- R47021EDI Inbound PO Acknowledgment — the batch processor that receives supplier acknowledgments (X12 855) of your purchase orders, advances PO status, and prints a discrepancy report where the acknowledgment does not match the orderRead accessBatch UBE
More Procurement tables
- F43121Purchase order receiver - receipt and voucher-match rows linking PO lines to inventory receipts and A/P vouchers (the 3-way match backbone)
- F43199P.O. detail ledger - audit history of purchase order line changes, including change-order tracking, keyed by an internal unique ID
- F4301Purchase order header - one row per procurement document carrying supplier, order-level dates, totals, terms, and currency