Skip to content
Cette page existe aussi en français. Voir en français
SAP Tutorials

SAP Output Determination: How SAP Decides What to Print or Send (NACE)

SAP output determination: how SAP decides which document to print or send (NACE)

A SAP output document never fires “just because”. When a sales order goes out as an email confirmation, when an invoice prints on the right printer, or when a shipping notification is sent to the customer via EDI, the system made a decision. And that decision follows a precise mechanism, the very same one that handles pricing. This is exactly what SAP output determination (output management) is about, and the entry point to this mechanism on the configuration side is called NACE.

If you are a key user or a junior SD consultant, sooner or later you will run into the question: “why did this document go out, and why is that one not going out?”. This article answers from the functional side, following the thread of “how SAP decides”, not “how I build a form”. We won’t touch SAPscript, Adobe Forms or ALE. We look at the decision logic.

Key takeaways in 30 seconds
  • SAP document output is driven by the condition technique, exactly like price determination.
  • Transaction NACE is the entry point for configuring classic output management (output types, access sequences, condition tables and condition records).
  • The output type says what to send, the condition record says through which medium and to which recipient.
  • The NAST table stores the output decision and the message status (to be processed, processed, in error).
  • A document that “won’t go out” is often just waiting for its job: the program RSNAST00 sweeps the pending messages.
  • To diagnose the “why”, the official tool is the determination analysis, the exact equivalent of the pricing analysis.

The business problem: at a given moment, SAP must decide what to send, to whom, through which channel

Take a sales order you have just created. At that instant, SAP must answer three questions, at the same time and automatically:

  • What? Should a document be sent out, and which one (an order confirmation, an acknowledgment, a notification)?
  • To whom? Which recipient, that is, which partner function (the sold-to party, the goods recipient, the payer)?
  • How and when? Through which output medium: print, email, EDI, fax? And at what time: right now, or later through a job?

Nobody hard-codes these answers. If we did, every customer, every sales organization, every document type would require an exception in the program. It would be unmanageable. SAP therefore needs a configurable mechanism that looks at the document context and derives the correct output. You may already know this mechanism under another name.

SAP’s answer: the condition technique, the same one used for pricing

SAP documentation is explicit on this point: just like price determination and text determination, document output is driven by the condition technique. This is the heart of the article, and it is also the best learning shortcut I can give you.

If you have already understood the condition technique explained in price determination, you already know 90 percent of output management. Same building blocks, in the same order, with the same vocabulary. Only the object changes: instead of determining an amount, SAP determines which output message to propose and with which properties.

Here is the term-for-term mapping between the two worlds:

Price determination (SD)Output management (document output)Shared role
Condition type (e.g. PR00)Output type (e.g. BA00)The object SAP is trying to determine
Access sequenceAccess sequenceThe search strategy, from specific to general
Condition tablesCondition tablesThe possible combinations of key fields
Condition records (price)Output condition recordsThe concrete data maintained by the business
Pricing procedureMessage determination procedureThe ordered list of what SAP must look for
Term-for-term mapping between price determination and output management: the same condition technique applied to two different objects.
The learning shortcut

Remember this mapping. If you can read a pricing analysis, you can read an output analysis. The mental gymnastics are identical: you are, in fact, learning the same technique twice.

Parallel between price determination and output management in SAP Two identical pipelines side by side, price on the left and output on the right, sharing the same condition technique: procedure, access sequence, condition tables, condition records. One condition technique, two objects Pricing and document output follow exactly the same path Price determination (SD) Output management Pricing procedure ordered list of condition types Determination procedure ordered list of output types Access sequence Access sequence identical Condition tables Condition tables identical Condition records (price) Output condition records Object determined: an amount the line item price Object determined: a message medium, timing, recipientOnly the final object changes. The decision path is the same.
Pricing and output management use the same condition technique: same procedure, access sequence, tables and condition records. Only the determined object changes (an amount for pricing, an output message for output).

The building blocks of message determination: output type, access sequence, tables, records, procedure

Let’s go through each building block in the order SAP uses them.

The output message determination chain in SAP Ordered sequence of building blocks SAP goes through to determine a message: determination procedure, output type, access sequence, condition tables, condition records, then output medium and timing. How SAP determines an output message From the document context down to the medium and timing 1. Message determination procedure assigned by document type 2. Output type what to send: confirmation, invoice, notification 3. Access sequence search strategy, from specific to general 4. Condition tables and records the combination that matches the context record found 5. Selected message with its properties Output medium Timing PartnerNo record found = no message = nothing goes out
The output message determination chain, step by step: the procedure assigned to the document starts the search for output types, the access sequence scans the tables from specific to general, and the first condition record found sets the medium, timing and recipient.

The output type

The output type is the basic unit. It is what represents “an order confirmation”, “a printed invoice”, “an EDI shipping notification”. In standard SD, the order confirmation often carries the code BA00. A condition record attached to an output type holds its properties in a given context: the output medium, the timing, the language, and the recipient partner function.

The access sequence

The access sequence is the search strategy. The rule, written in black and white in the SAP documentation, is to search “from specific to general”. Concretely, each step of the sequence points to a condition table, and SAP scans them in order: first the finest combination (this specific customer, this sales organization), then broader combinations if nothing was found. As soon as a condition record matches, SAP stops. Exactly like for pricing.

The condition tables

Each condition table defines a combination of key fields on which a record can exist. For example: one record per sales organization, or one record per customer and document type. It is this structure that makes output configurable without touching code: you add a combination, not a software exception.

The output condition records

This is the master data the business maintains. An output condition record says, for example: “for customer C650 in sales organization 1010, send the confirmation BA00 by fax”. This is where the medium and recipient are concretely decided. The consultant sets up the mechanism; the key user, on the other hand, mostly lives in the condition records, because that is where you handle a specific customer case without requesting development.

The message determination procedure

The procedure is the ordered list of output types SAP must evaluate for a given object (the order header, or an item). It is assigned by document type. It is the direct equivalent of the pricing procedure: without an assigned procedure, SAP doesn’t know what to look for, and nothing goes out.

NACE: the transaction where everything is set up

What is transaction NACE for? It is the single entry point for configuring classic output management. From NACE, you choose the relevant application (for example V1 for sales, V3 for billing) then you access the entire condition-technique tree: the output types, the access sequences, the condition tables, the procedures, and the assignment to document types. It is the screen where the consultant assembles the mechanism described above.

NACE transaction home screen: list of output management applications (V1 sales, V3 billing) giving access to output types and access sequences
The NACE home screen: you choose the application (V1 sales, V3 billing) to access the output types, access sequences, tables and procedures.
Customizing of output types in NACE for an application (purchase order): list of the NEU and Z08 message types and the configuration structure (mail titles, processing routines, partner functions)
Once the application is chosen (here EF, purchase order), NACE shows its output types: NEU, Z08… This is where you define each output message type and its behavior.

An important point of vocabulary about SAP S/4HANA versions. Alongside the classic output management driven by NACE, SAP offers New Output Management, which no longer relies on the condition technique but on a rules engine, BRFplus (Business Rule Framework plus), with decision tables instead of access sequences and condition records. It is configured elsewhere, through the Cross-Application components and activation per application object type, for example SALES_DOCUMENT. The two worlds coexist. To know which one applies, you first check whether New Output Management is active for the object concerned. As long as it is inactive, it is indeed the classic NACE mechanism that drives the output. For the official details of both worlds depending on your version, the official SAP S/4HANA on-premise documentation is the authority.

For a key user, the good news is that the decision logic stays the same in both cases: SAP looks at the document context, from the most specific to the most general, to derive what to send, through which channel and to whom. Only the engine and the location of the configuration change.

Medium and timing: through which channel and at what time SAP sends the document

Once SAP has determined which output type to propose, two properties of the condition record drive the actual output.

The output medium says how the document is sent. The SAP documentation lists print, email, EDI (Electronic Data Interchange, for automated exchanges between systems), fax. Concretely: an order confirmation can go out as print for one customer, and as EDI for another, simply because their condition records differ. That is data, not development.

The dispatch time (timing) says when the document goes out. SAP offers several standard times. The document can be sent automatically as soon as the object is saved (immediate send), or queued to be processed by a program that runs at regular intervals (by job). The standard program RSNAST00 is precisely the one that sweeps the pending messages and sends them on the next run. This is a distinction that saves a lot of diagnostic time: a document that “won’t go out” is very often a perfectly determined document, simply waiting for its job.

NAST: the table where SAP stores its decision and the message status

When SAP has decided to send a message for a document, it stores that decision and its status in the message table, NAST. Each record carries a processing status: to be processed, processed successfully, or in error. It is the memory of the output decision.

The life cycle of a message in the NAST table An output message moves from the to-be-processed status to processed-successfully or in-error, depending on the result of its send, immediate or via the RSNAST00 program. The life cycle of a message in NAST The status tells where the output document stands 0 To be processed message determined, not yet sent Send immediate or via RSNAST00 1 Processed document sent successfully 2 In error send failed, to analyze A document that won’t go out often stays in status 0: it is waiting for its job, not an error
The life cycle of a message in the NAST table: from to-be-processed (0) to processed successfully (1) or in error (2), depending on the result of the send, immediate or triggered by the RSNAST00 program. A persistent status 0 signals a message waiting for a job, not a bug.

For the key user, NAST and a document’s output screen are the first two diagnostic reflexes. On the document itself, the output screen lists the determined messages and their status. And SAP provides a dedicated analysis function: from a sales document, you open the output screen then the determination analysis, following this menu path:

Menu path:

Extras → Output → Header (or Item) → Edit → Goto → Determination analysis

This analysis tells you why an output type was proposed, or why it was not. It is the exact equivalent of the pricing analysis. When people ask me “why won’t my SAP output document go out”, my first answer is almost always: run the determination analysis, then look at the status in the document output.

Output screen of a SAP purchase order: the determined message NEU with its output medium Print output, its partner function and its processing status
The output screen of a document (here a purchase order): the determined message appears with its output medium (Print output), its partner function and its processing status. This is the output decision, concrete, at the document level.
Content of the SAP NAST message table displayed in SE16N: output type, output medium and processing status (0 not processed, 1 processed, 2 in error)
The NAST table displayed in SE16N: output type, output medium and processing status (0 not processed, 1 processed, 2 in error).

End-to-end practical case: from the order to the sent document

Let’s follow an order confirmation, from the save click to the sent document. This is the sequence SAP runs, and it is also the one you trace backwards when something goes wrong.

  1. 1
    Procedure identification

    You save the sales order. SAP looks at the document type and identifies the message determination procedure assigned to the header.

  2. 2
    Launching the access sequence

    For each output type in the procedure (for example BA00), SAP launches the access sequence and scans the condition tables from specific to general.

  3. 3
    A condition record matches

    As soon as a condition record matches the context (this customer, this sales organization), SAP retains the output type with its properties: output medium, timing, partner function.

  4. 4
    Recording in NAST

    SAP creates the message record in NAST, with its initial status.

  5. 5
    Applying the timing

    Depending on the timing, the message goes out immediately, or waits for the send program to run (RSNAST00 for job processing).

  6. 6
    Transmission on the medium

    The document is transmitted on the right medium (printer, email, EDI) to the retained partner.

If nothing came out in the end, you replay this chain backwards: the NAST status first, then the determination analysis to see where the search failed, then the missing or mistargeted condition record. Nine times out of ten, the problem is a missing condition record or a misunderstood timing, not a bug.

Common mistakes and control points for the key user

Here are the confusions I see most often with juniors, and the associated control reflex.

  • Confusing “not determined” with “not sent yet”. A message that is determined but waiting for a job is not an error. Check the timing before panicking.
  • Looking for the problem in the form. If no message appears in the document output, the issue is in the determination (condition technique), not in the SAPscript or the Adobe form. The form only comes into play once the message is determined.
  • Forgetting the partner function. An output type can be perfectly determined but never arrive if the recipient partner has no email address or no valid contact details for the chosen medium.
  • Ignoring the determination analysis. It is the tool SAP provides specifically to answer “why”. Don’t guess, run the analysis.
  • Thinking that NACE and New Output Management are mutually exclusive. Both coexist on the same system (New Output Management relies on a BRFplus rules engine, not on the classic condition technique). Check which one is active for your object before looking in the wrong place.

Frequently asked questions

How does SAP decide which document to print or send?

SAP uses the condition technique. When a document is saved, it reads the message determination procedure, launches the access sequence over the condition tables, and as soon as a condition record matches the context, it retains the output type with its output medium, timing and recipient.

What is transaction NACE for in SAP?

NACE is the entry point for configuring classic output management. There you set up, per application (sales, billing), the output types, access sequences, condition tables, procedures and their assignment to document types.

What is the difference between output type, access sequence and condition record?

The output type is what SAP tries to propose (a type of document). The access sequence is the search strategy, from specific to general. The condition record is the concrete data maintained by the business that says, for a specific context, which medium and which recipient to use.

Why won’t my SAP output document go out, and how do I check its status?

First check the message status in the NAST table and in the document output screen. If the message does not appear, run the determination analysis from the output screen to see why no output type was retained. If it appears but did not go out, look at the timing: it may be waiting for its job.

Do price determination and output management use the same mechanism?

Yes. Both rely on the condition technique: access sequence, condition tables, condition records and procedure. Whoever can read a pricing analysis can read an output analysis. It is the same reflex.

In conclusion

SAP output management is not a black box: it is a decision, made by the condition technique, exactly like pricing. Once you see NACE, the output types, the access sequence, the condition records and the NAST table as a single decision mechanism, diagnosis becomes mechanical rather than magical. The next time a document won’t go out, don’t search at random: open the determination analysis and look at the NAST status. And if you want to anchor the mechanism for good, re-read SAP SD price determination keeping in mind that you are, in fact, learning the same technique twice.

Share

Keep reading

SAP Tutorials

SAP IDoc Guide: Read an IDoc, Fix Status 51 (WE02, BD87)

SAP IDoc Guide: How to Read an IDoc, Diagnose an Error (WE02 / WE19 / BD87) and Know When to Use It A failed SAP IDoc is often a junior...

Michael Antoine Michael A. 17 min read
SAP Tutorials

SAP SM30 Table Maintenance: Edit a Table Without a Developer

SAP SM30: maintain a customizing table without a developer (and when to use SM31 or SE11) A consultant forwards me a screenshot: "Michael, the client wants to add three rows...

Michael Antoine Michael A. 16 min read
SAP Tutorials

SAP Selection Variant: Save, Reuse and Schedule a Report

SAP Selection Variant: Save, Reuse and Schedule the Execution of a Report Every Monday morning, it is the same ritual: you open your report, you retype the same company code,...

Michael Antoine Michael A. 16 min read
SAP Tutorials

SAP SD Pricing Determination: The Condition Technique

Sooner or later, on a project, a user shows you a sales order and asks why the displayed price is not the one they expected. You open the line, you...

Michael Antoine Michael A. 14 min read