NAST table — NAST Output and Message Status Table
NAST stores one row per output message generated by classic SAP output determination for a business document such as a sales order, delivery, invoice, or purchase order. Each row records the output type, partner, transmission medium, language, and processing status. It is a control and status table, not a content table: it tells whether an output was triggered and processed, not what was printed or sent.
This page covers the NAST message status table used by classic output determination across SD, MM, and other application areas. It focuses on how output rows are created, why a missing row is a different problem from a failed row, and how to trace a print, fax, EDI, or email failure back through NAST to the processing program and the document.
Published 15 Sept 2026· 1,175 words
What it stores
One row in NAST represents a single output request created by the output determination procedure attached to a business document. When a sales order is saved, a purchase order is released, or a billing document is created, the system evaluates condition records for output types and, for each match, writes a NAST entry recording which output type applies, which partner it goes to, by which medium (print, fax, EDI, email), in which language, and whether it should fire immediately or on a collective run. NAST does not hold the printed form, the IDoc payload, or the email body. It holds the instruction and the outcome of executing that instruction. The actual content is generated at processing time by a form, a Smart Form, an IDoc, or an XML mapping, driven by the processing routine assigned to the output type.
Key fields
- MANDT - client
- KAPPL - application area of the output type (V1 sales, V2 delivery, V3 billing, EF/ME purchasing, and others)
- OBJKY - key of the business document the output belongs to, in the document's own key format
- KSCHL - output type (condition type for output, e.g. an order confirmation or invoice print)
- SPRAS - language the output is generated in
- PARVW - partner function the output is directed to
- PARNR - partner number for that function
- NACHA - transmission medium (print, fax, EDI, email, and so on)
- VSTAT - processing status of this output row (not yet processed, processed, processed with errors)
- VSZTP - dispatch time indicator (immediate, at save, or via collective run)
- ERDAT / ERUHR - date and time the NAST row was created
- DATVR / UHRVR - date and time the output was actually processed
- TDDATE / TDTIME - requested date and time for the output
- ANZAL - number of messages/copies requested
How it joins the data model
- NAST-OBJKY = VBAK-VBELN (sales order output)
- NAST-OBJKY = LIKP-VBELN (delivery output)
- NAST-OBJKY = VBRK-VBELN (billing document output)
- NAST-KAPPL = TNAPR-KAPPL and NAST-KSCHL = TNAPR-KSCHL (resolves the processing program/form logic for the output type)
- STXH/STXL linked by text name and object when the processing routine stores or retrieves a SAPscript or Smart Form text tied to the output
How to read it safely
NAST is client-dependent and grows continuously in any live system, so a query without MANDT and at least KAPPL plus OBJKY restriction will scan a large fraction of the table. The safe pattern is to always know the business document number first, convert it to the OBJKY format used by that application (padding, leading zeros, or concatenation varies by KAPPL), then select on KAPPL plus OBJKY, optionally narrowing by KSCHL if the output type is known. Restricting only on KSCHL across all applications is a common way to accidentally pull unrelated documents, because the same output type code can be reused with different meanings under different KAPPL values.
How to prove it in the data
Symptom: a billing clerk reports the invoice print never came out for billing document 90001234. Select NAST where KAPPL equals the billing application code and OBJKY equals the billing document number, ordered by ERDAT and ERUHR descending. If no row exists, output determination never triggered for that document, meaning the condition record is missing or the requirement routine did not fire. If a row exists with VSTAT indicating an error, the processing program ran and failed, which is a different fix entirely.
ECC vs S/4HANA
NAST still exists in S/4HANA and continues to carry output status for processes that remain on classic output determination, including much of purchasing and parts of sales and distribution that have not been migrated. S/4HANA introduced a newer output management framework built on BRFplus-based determination for several document types, notably billing and outbound delivery in many implementations, which bypasses NAST entirely for those flows. The practical consequence is that the same SAP system can have some document types writing to NAST and others writing to the newer output log, so the first check on any output issue in S/4HANA is which framework that specific document type actually uses.
Common pitfalls
- Treating a missing NAST row and a failed NAST row as the same problem. No row means output determination never created the request (condition record missing, requirement not met). A row with an error status means the request was created but the processing program failed. The fix path is completely different in each case.
- Reading VSTAT as proof of delivery. A successful status confirms the processing program executed without error, not that the printer produced paper, the fax line connected, or the EDI partner accepted the IDoc. Those failures live downstream in spool, the communication subsystem, or the IDoc status record.
- Assuming one row per document per output type. Every reprocessing attempt, whether manual or via a collective run, typically inserts a new row rather than updating the old one. Picking 'the' NAST row without sorting by creation timestamp gives an arbitrary, often stale, result.
- Filtering on KSCHL alone. The same output type key can exist under multiple KAPPL values with unrelated meaning. Any query that omits KAPPL risks matching the wrong application's output entirely.
- Expecting NAST to hold the message content. It never does. Anyone trying to find the actual printed text, the Smart Form output, or the IDoc data has to follow the processing routine to the form, spool request, or IDoc number, not stay inside NAST.
- Deleting or archiving NAST rows to clear a queue without checking whether a document is still expected to reprocess. Once the row is gone, the standard reprocessing transactions for that document no longer see it as outstanding.
Whose problem this is
The functional consultant for the module that owns the document (SD for sales and billing output, MM for purchasing output) owns the condition record and output determination configuration. Basis or the interfaces team owns spool, printer, fax gateway, and EDI subsystem failures once NAST shows the processing program ran. A developer gets involved only when the processing routine or form logic itself is at fault.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tables/nastERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.