SAP transaction codeObjectSM20ModuleSECURITY_GRC

SM20 — Security Audit Log Analysis

SM20 displays the Security Audit Log (SAL) — the record of logon attempts, transaction starts, RFC calls and other security-relevant events captured by the kernel. It is read-only; it shows only what the filters configured in SM19 (or RSAU_CONFIG) told the system to capture. An empty result almost always means the filter did not cover the event, not that nothing happened.

This page covers SM20, the display transaction for the SAP Security Audit Log, including how the filter configuration in SM19 determines what SM20 can ever show, the recurring reasons the log appears empty during an incident investigation, and how ownership splits between Basis/security administration and the functional consultant doing the analysis.

Reviewed by an ERPClimb SAP consultant on 15 Sept 2026· 1,185 words

Purpose

SM20 reads and displays entries from the Security Audit Log, a kernel-level log of security-relevant events: successful and failed logons, transaction and report starts, RFC and CPIC calls, changes to user master records, and other flagged actions. SM20 itself writes nothing and configures nothing. The single fact that explains most confusion is that the log only contains what the active filters, defined and activated separately in SM19 (or RSAU_CONFIG on later releases), told the kernel to record for a given client, user, and event class, on a given application server, during a given time window. If the filter did not cover the event, the event is not in the log, and SM20 will show an empty list even though the underlying action genuinely occurred.

When it is used

SM20 is reached for during security incident investigation, audit trail review for compliance (SOX, internal audit, external audit requests), and tracing suspicious logon or privilege activity such as repeated failed logons, use of a dormant service user, or a dialog logon into a background-only user. It is distinct from change document review: SM20 shows who logged on and which transaction or report was started, not what data was changed inside that transaction. For data change history, change documents or table logging is the correct tool. For read access to sensitive fields specifically, a dedicated read access logging configuration is used instead. Consultants reach for SM20 when the question is 'who accessed the system and how', not 'what did they change once inside'.

How to use it in practice

  • Confirm the audit log is active and check what the active filters actually cover, using SM19 or RSAU_CONFIG, before assuming SM20 will show anything for the period in question.
  • Open SM20 and set the date and time range tightly around the suspected incident window.
  • Select the application server (or all servers) and the client; audit log files are written per server per day, so the wrong server selection silently returns nothing.
  • Choose the event categories of interest (dialog logon, RPC/RFC logon, transaction start, report start, other) matching what was actually filtered.
  • Execute, then double-click individual entries for full message text, terminal, and program detail.
  • Export the result list if it needs to go into an incident report or be handed to an auditor.

Key data objects

  • Audit log store - the actual log entries, written continuously by the kernel as events occur; historically stored as operating-system files, one per application server per day, with database persistence available as an alternative on later releases depending on configuration.
  • SM19 / RSAU_CONFIG filter definitions - the static configuration deciding which clients, users, and event classes get logged; changes here only affect future events, never retroactively surface past activity.
  • ABAP variant store (standard variant tables) - the only thing SM20 itself ever saves, when a user saves a selection screen variant for repeated use; SM20 has no other save function.

How to prove it in the data

There is usually no direct SE16 path for the raw log because it lives in OS-level files rather than a standard transparent table; the supported way to prove content is running SM20 or the equivalent read report with the exact date, server, and client used during the incident, and cross-checking the filter scope in SM19/RSAU_CONFIG for that same window to confirm the event class in question was actually being captured at the time. If database persistence has been configured for the audit log on the system in question, the underlying table can be queried directly for timestamp, user, and event code, but the table name is release and configuration dependent and should be confirmed with Basis rather than assumed.

ECC vs S/4HANA

On S/4HANA, SM19 and SM20 are formally superseded by RSAU_CONFIG for configuration and a corresponding read report for analysis, though SM19 and SM20 remain usable as compatibility transactions on many releases, pointing at the same underlying log. There is no widely adopted dedicated Fiori app replacing this analysis; it stays a SAP GUI activity in most landscapes. The core structural point is unchanged: the log only contains what filters permitted, regardless of which transaction is used to read it.

Common pitfalls and how to diagnose them

  • Empty result set: the most common complaint. Almost always the filter in SM19/RSAU_CONFIG did not include the client, user, or event class involved, or the audit log was not active at all during the window. Check filter status first, before concluding the log is broken.
  • Retention and rotation: log files are purged on a retention schedule. An incident from several weeks ago may simply be gone if retention was shorter than the gap between the event and the investigation. Check retention settings before spending time on a selection that cannot possibly return data.
  • Wrong server: audit log files are per application server. An event that occurred on one app server will not appear if SM20 is only scoped to another. Select all servers when the origin server is unknown.
  • Filter changes are not retroactive: adding a filter today does not backfill past events. If a filter was missing during the incident window, no configuration change now recovers that data.
  • Confusing it with change documents: SM20 shows logons and transaction/report starts, not field-level data changes. Requests to 'see what was changed in the sales order' belong in change document or table logging tools, not SM20.
  • Silent authorization gap: a user without the correct display authorization for the audit log gets an empty or restricted list with no error, which looks identical to an empty log. Confirm authorization before trusting a blank result.
  • Timestamp confusion: entries are recorded in system time; cross-timezone incident timelines built without converting to system time produce wrong conclusions about sequence of events.

Whose problem this is

Basis and security administration own SM19/RSAU_CONFIG filter setup, log retention, and storage sizing. Functional or GRC consultants typically only read SM20 output during an investigation. A clean handover states the exact date/time window, the client and server in question, and the filter scope that was active at the time, so Basis can confirm whether the data could ever have existed.

Related SAP objects

Reviewed pages this object connects to in the ERPClimb knowledge graph.

Source: ERPClimb — https://erpclimb.com/sap-tcodes/sm20ERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.