In short

SAP Purchase Order Report

A purchase order report joins the PO header, items, schedule lines and history tables into one Excel sheet keyed by PO and item, with vendor and material texts resolved.

  • PostNow ships this report out of the box – pick it, set filters, run, and it lands in Excel; no SE16, joins or ABAP.
  • The data spans several tables. It joins EKKO, EKPO, EKET, EKBE, LFA1, MAKT on EBELN + EBELP and resolves the text lookups.
  • The standard route is manual. Teams use ME2M/ME2L for a single record, then SE16 or SQVI to stitch tables together in Excel.
  • You get clean, labelled columns. EBELN, BSART, BUKRS, EKORG, LIFNR, BEDAT and more, each with a plain-English heading.
  • Refreshable, not a one-off dump. Rerun the report to pull the latest, with your own SAP authorizations enforced. Works on ECC and S/4HANA.
Column layout of a SAP purchase order report exported to Excel, showing SAP fields such as EBELN, BSART, BUKRS, EKORG, LIFNR, BEDAT with plain-English labels and their source SAP tables.
Every field in the SAP purchase order report lands as a labelled Excel column, tagged with the SAP table it comes from.

What the purchase order report shows

A SAP purchase order report answers a simple question that SAP makes surprisingly hard: give me every purchase order record, with all the attributes that matter, in one place I can filter and share. On screen, SAP shows one record at a time and splits its attributes across several views. This report flattens all of that into a single Excel sheet, one row per record, with the codes turned into readable labels.

Because the output is a plain sheet, it becomes the starting point for the work people actually do with it: a data-quality review, a cleanup before a migration, a hand-off to an auditor, or a source for a pivot. The value is not just the extract, it is that the extract is complete and consistent every time you run it.

EKKO PO headerEKPO PO itemsEKET Schedule linesEKBE PO history (GR/IR)LFA1 VendorMAKT Material text

The SAP tables behind it

A purchase order is a header with many items, and each item has its own history. EKKO holds the header: PO number EBELN, document type, company code, purchasing org and the vendor. EKPO holds the items, keyed by EBELN plus the item number EBELP, with material, quantity, price and value. EKET holds the delivery schedule lines for each item. EKBE holds the PO history, the goods receipts and invoice receipts posted against each item, which is what tells you how much has actually been delivered and invoiced. The vendor name is joined from LFA1 on LIFNR, and the material description from MAKT on MATNR. The report is keyed at item level so each PO line is one row.

SAP data model behind the SAP purchase order report, showing how the tables EKKO, EKPO, EKET, EKBE, LFA1, MAKT join on EBELN + EBELP and how the text tables are resolved into one flat report.
The SAP purchase order report data model: how EKKO, EKPO, EKET, EKBE, LFA1, MAKT join on EBELN + EBELP.

The joins are the whole reason this is worth automating. Miss one and the report is subtly wrong; get the key fields slightly off and rows fan out or drop. Doing it once, correctly, and then reusing it is what turns a fragile spreadsheet exercise into a reliable report.

The columns you get

Every column below is a real SAP field, labelled in plain English, with the table it is read from. These are the fields most teams want on a purchase order report; a tool like PostNow lets you add or remove columns without touching the underlying join.

SAP fieldWhat it isSource
EBELNPO numberEKKO
BSARTPO typeEKKO
BUKRSCompany codeEKKO
EKORGPurchasing orgEKKO
LIFNRVendorEKKO
BEDATPO dateEKKO
EBELPItemEKPO
MATNRMaterialEKPO
TXZ01Short textEKPO
MENGEOrder quantityEKPO
NETPRNet priceEKPO
NETWRNet valueEKPO
ELIKZDelivery completeEKPO

Building it yourself: ME2M/ME2L, SE16 or SQVI

ME23N shows one purchase order in full but only one at a time. ME2M and ME2L give list views, but they are shaped around specific selection logic and are awkward to bend into a flat export with exactly the columns you want. SE16 on EKKO and EKPO gives you the header and item tables, which you then match on the PO number in Excel, and you still have to bring in EKET for schedules and EKBE for the receipt history separately. The GR/IR history in EKBE is the hardest part to assemble by hand, because it holds several movement types per line that have to be summed correctly. Getting all of that into one refreshable sheet is a developer job.

None of this is impossible; people do it every month. The problem is that it is manual, easy to get subtly wrong, and stale the moment it is saved. Each refresh means repeating the same exports and the same lookups, and any new column means another round with a developer. For a one-off you can push through it. For a report you run every period, the cost adds up. If you want the general landscape of options first, see our overview of SAP reporting tools and how to get SAP to Excel.

The out-of-the-box way: PostNow's purchase order report

PostNow's Report Library already contains this exact report, pre-built. You do not assemble the joins or resolve the texts; that is done for you. You open Excel, log in to postnow.ai from the task pane, pick the purchase order report, set your range filters, and run. The governed, joined data lands in the sheet, ready to filter, pivot or share, and you can refresh it whenever you need the latest.

The finished SAP purchase order report open in Excel through the PostNow task pane, with the joined columns, a refresh control and governed data pulled straight from SAP without ABAP.
The finished SAP purchase order report open in Excel through PostNow: joined columns, resolved texts and a refresh control, straight from SAP.

Two things make this different from a SE16 dump. First, it is governed: PostNow enforces your own SAP authorizations, so you only ever see the data you are entitled to, and every row can be traced back to its source. Second, it is repeatable: the same report, the same columns, refreshable on demand, with no ABAP to write or maintain. That is the payoff of teaching the hard version first, then handing you the shortcut.

Filters and selection you'll want

A good purchase order report is only as useful as the selection you can put on it. The filters most teams reach for are:

  • PO range (EBELN from / to)
  • Vendor (LIFNR)
  • Purchasing org (EKORG)
  • Company code (BUKRS)
  • Document date (BEDAT range)
  • Open / completed (ELIKZ)

You set these once as your selection, then reuse or adjust them each run. Because the selection travels with the report, a monthly extract becomes a single refresh rather than a rebuild.

Step-by-step of running the SAP purchase order report in PostNow: open Excel, log in, pick the report from the library, set filters, run, and refreshable SAP data lands in the sheet.
Running the SAP purchase order report in PostNow, from a blank sheet to governed SAP data, entirely inside Excel.

ECC vs S/4HANA

The purchase order tables are read through standard interfaces, so the report behaves the same way on SAP ECC and S/4HANA. Where the underlying data model shifts between releases, a table-based read stays stable because it targets the fields your report actually needs.

The practical takeaway is that a report built on the tables and read through standard interfaces survives a migration far better than one wired to a specific screen or a custom program. When you eventually move from ECC to S/4HANA, a table-based purchase order report keeps working, which is one less thing to rebuild in an already large project.

Frequently asked questions

How do I get a purchase order report out of SAP into Excel?

You can export the underlying tables with SE16 and stitch them together in Excel, build a query in SQVI, or ask a developer for an ABAP report. The quickest governed route is a tool that already has the report built: in PostNow you log in to postnow.ai from the Excel task pane, pick the purchase order report from the Report Library, set your filters and run, and the joined data lands in the sheet.

Which SAP tables hold purchase order data?

The data is spread across several tables that have to be joined on their key fields: EKKO, EKPO, EKET, EKBE, LFA1, MAKT. The report links them on EBELN + EBELP and resolves the text tables so the output reads in plain language.

Is there a standard SAP report or transaction for purchase order?

There are standard transactions (ME2M/ME2L and others), but they are built for on-screen display or for a fixed layout, not for a clean, refreshable Excel extract with exactly the columns you want. That is why most teams fall back to SE16 exports or a custom report.

How do I export purchase order data to Excel without ABAP?

Use a tool whose SAP connection is set up once and then reads through standard interfaces, so no ABAP is needed for day-to-day reporting. PostNow reads the purchase order tables, performs the joins and text lookups, and writes the result straight into Excel, refreshable on demand, with your own SAP authorizations enforced.

Can I refresh or schedule the report?

Yes. Because the report keeps its connection and selection, you can refresh it to pull the latest data at any time rather than rebuilding the extract. This is the main advantage over a one-off SE16 dump, which is stale the moment it is saved.

Does it work in S/4HANA?

The report reads the same tables through standard interfaces, so it behaves consistently across SAP ECC and S/4HANA without a redesign.

How do I get the goods-receipt and invoice history on a PO report?

The receipt and invoice postings live in EKBE, the PO history table, one row per movement against a PO item. A report that reads EKBE can sum the received and invoiced quantities per line and place them next to the ordered quantity, so you see what is still open. PostNow assembles this automatically rather than leaving you to reconcile movement types by hand.

Can I report only open purchase order lines?

Yes. The delivery-complete indicator ELIKZ on EKPO marks lines that are fully delivered, and comparing the ordered quantity against the received quantity from EKBE shows what remains open. A PostNow report can filter to open lines so you get a clean commitment or expediting list.