SAP Basis administrators and release managers reading an import log and deciding whether a transport succeeded, needs work, or must be reversed.
Whether a given return code can be accepted, and which import phase has to be investigated before the transport is called done.
Decision context
A transport return code is the worst result across the import phases, not a single verdict. The same code means different things depending on which phase produced it, so the code alone is not enough to decide anything.
The practical rule is that the phase matters more than the number. Return code 8 in the generation phase for a program nobody calls is a different problem from return code 8 in dictionary activation, which can leave a table inconsistent.
This page is a lookup. The codes, the phases, where to read the log, and the small set of judgements that are genuinely a matter of team policy rather than fact.
The return codes
These are the standard tp and import return codes. Higher is worse, and the transport is assigned the highest code any phase returned.
- 0. Successful. Every phase completed without warnings.
- 4. Warnings. The import completed but something was reported: a generation warning, a missing translation, an object that imported with a note. Frequently accepted, but accepted is a decision, not a default.
- 8. Errors. Something did not import or did not activate. Objects can be missing or inactive in the target. This always needs investigation, and the phase determines the severity.
- 12. Fatal error. The import was terminated. The target is in a partial state and the transport must be corrected and re-imported rather than assumed complete.
- 16. Internal or system error. The failure is in the transport infrastructure rather than in the content: the transport directory is unreachable, a cofile or data file is missing or unreadable, the database or the target system is unavailable, or tp itself could not run.
The phases and what a failure there means
Read the phase from the import log in STMS before deciding anything. Each phase fails for different reasons and has different consequences.
- Dictionary import. The dictionary definitions are written. A failure here means the definitions the rest of the import depends on are not in place.
- Dictionary activation. Definitions are activated and tables adjusted. This is the phase where an error can leave a table or a structure inconsistent, and it is the phase to treat most seriously.
- Main import. The remaining objects and table entries are imported. Errors here typically mean specific objects did not arrive.
- After-import methods and XPRA. Programs that run after the import to convert or complete data. A failure here can leave data partially converted, which is invisible from the object list.
- Generation. ABAP sources are generated. Errors here are often the most survivable, because a program can be regenerated, but they can also indicate a genuinely missing dependency.
Where to read the evidence
The return code in the queue is a summary. The detail is in the logs, and the logs are where the phase and the specific object become visible.
- STMS import queue, select the request, then the import logs, for the per-phase result and the object-level messages.
- The transport logs in the transport directory's log folder, where the action log and the single-step logs hold the full tp output.
- The tp command log for what was actually executed, which matters when an import was started with unconditional modes.
- For after-import method failures, the application log or the specific report's own log, because the object list will not show what the method did.
- For dictionary activation errors, the activation log for the specific object, which names the inconsistency rather than just reporting the code.
Judgements that are policy, not fact
These are the questions where teams reasonably differ. Decide them once and write them down, because deciding them per transport under time pressure produces inconsistency.
- Whether return code 4 is accepted automatically in quality assurance, in production, or in neither.
- Whether a return code 8 in generation only can be accepted with a follow-up, or always blocks the release.
- Who is allowed to approve an import that returned 8 or higher into production.
- Whether a failed import is corrected forward with a new request or reversed, and what reversal means for the objects already applied.
- How long an unresolved non-zero return code can stay open before it blocks the next import to the same system.
What the workflow must cover
- Phase-aware results. Record which phase produced the code rather than only the aggregate, so the severity can be judged from the evidence.
- Result binding. Attach the import result to the exact package that was imported, so a later change to the request invalidates the earlier outcome.
- Open item tracking. Keep unresolved non-zero results as open items against the target system rather than as log entries nobody revisits.
- Policy enforcement. Apply the team's written rule about which codes block a release instead of leaving the judgement to whoever is on shift.
Implementation workflow
Start with a bounded customer scenario and explicit acceptance criteria. Preserve native SAP permissions and accountable review while the software creates a repeatable evidence chain.
- Read the return code and then the phase that produced it.
- Open the per-object messages for that phase.
- Decide against the written policy whether the code blocks the release.
- Correct forward with a new request or reverse, and record which was chosen.
- Verify the affected objects and data in the target before closing the item.
Evidence to require
A transformation claim should resolve to observable artifacts, decisions, and execution receipts. Ask for the following evidence in a representative evaluation:
- Return code per phase
- Per-object import messages
- Activation log for dictionary errors
- After-import method output
- Unconditional modes used
- Policy decision and approver
- Corrective request number
- Post-correction verification
Boundaries and non-claims
Adranum separates analysis, proposal, human review, package creation, customer-local validation, and production execution. A later state never rewrites the evidence that supported an earlier decision.
- A return code describes the import, not the correctness of the change. A transport can return 0 and still break a process.
- After-import method failures can leave data partially converted in ways the object list does not reveal.
- Whether a specific code is acceptable is a team policy question, and this page does not decide it for you.
Buyer checklist
- Which phase produced the code?
- Which specific objects failed?
- Is the target in a partial state?
- Does the written policy allow this code into this system?
- Was the correction a new request or a reversal, and was the result verified?
Practical answers
Is SAP transport return code 4 acceptable?
Often, but it should be a written policy rather than a habit. Read which phase produced it. A generation warning on an unused program is not the same as a warning in dictionary activation.
What does return code 8 mean in an SAP transport?
At least one object did not import or did not activate. The consequence depends entirely on the phase. In generation it is usually recoverable, in dictionary activation it can leave a table inconsistent and needs immediate attention.
What does return code 16 mean?
The failure is in the transport infrastructure rather than in the content: the transport directory, a missing or unreadable cofile or data file, an unavailable database, or tp itself. Fix the infrastructure and re-run, the request content is usually not at fault.