SM19 — Security Audit Log Configuration
SM19 configures the Security Audit Log, defining which security-relevant events (failed logons, RFC calls, transaction starts, user master changes) get recorded, for which clients and users. It does not display the log itself, that is SM20. Its main trap is that a filter activated dynamically is lost on the next instance restart unless it is also written to the static profile.
This page covers SM19, the transaction that maintains filters for the Security Audit Log, and the diagnostic work of proving whether a given event was actually captured or silently missed. It focuses on the dynamic-versus-static activation split, filter scope mistakes, and cross-checking against SM20 and the instance profile.
Reviewed by an ERPClimb SAP consultant on 15 Sept 2026· 1,260 words
Diese Seite ist noch nicht auf Deutsch verfügbar.
Purpose
SM19 is the maintenance transaction for the Security Audit Log (SAL), the standard SAP mechanism for recording security-relevant events - failed logons, user master changes, RFC and CPIC calls, transaction starts, report starts, and changes to critical authorization objects - per client and per user. The structural fact that explains most confusion: SM19 has two independent activation states, dynamic and static. A filter activated dynamically takes effect immediately in the running kernel but is lost at the next application server restart unless it is also saved into the static instance profile configuration. Consultants who turn on logging dynamically during an incident, watch it work, then find it silently gone after a routine restart or a kernel parameter transport are running into exactly this split, not a bug.
When it is used
SM19 is reached for whenever what gets logged needs to be established or adjusted before an investigation, or when troubleshooting why an expected security event never appeared in SM20. It gets used ahead of a planned penetration test, before turning on monitoring for a newly built productive system, after an incident to check retroactively whether the relevant event class was even switched on, and periodically by security or GRC teams doing audit log housekeeping across a landscape. It is not used to view the log itself, that is SM20's job. It is not used for authorization design, that belongs to SU24 and PFCG, and it cannot answer who did what after the fact if the filter was never active in the first place - in that case SM19 only answers whether the event was configured to be caught, and frequently the answer is no.
How to use it in practice
- Call SM19, select the target system and client, and decide whether the goal is reviewing an existing filter or defining a new one going forward
- Choose or create a filter slot and specify the client, the user pattern (wildcard or exact name), and the event classes to capture: dialog logon, RFC/CPIC logon, transaction start, report start, user master changes, other events
- Set the severity level for each event class if the filter allows it, and confirm the filter is marked enabled
- Decide whether to activate dynamically only (immediate, memory-resident, lost on restart) or write the filter to the static profile so it survives a restart
- Save, then check the filter status display to confirm the filter shows as active, not merely saved
- Cross-check in SM20 shortly afterward that events matching the new filter are actually being written before relying on it during an incident
Key data objects
- Instance profile (the application server's start profile) - holds the static parameters rsau/enable, rsau/selection_slots, rsau/user_selection and rsau/local/file that determine whether logging is active and survives a restart
- Kernel shared memory filter buffer - holds the currently active dynamic filter set for the instance; not a transparent database table, and lost when the instance restarts
- Security audit log store - the actual repository of recorded events, either an OS-level file directory or a database-backed store depending on the configured storage target, read back through SM20
- SM19's own saved filter definitions - persisted in the audit log configuration store so filters can be reactivated later without redefining them from scratch
How to prove it in the data
Use RZ11 to display the live value of rsau/enable and rsau/selection_slots on the specific application server instance in question, and compare that against SM19's own status display for the filter believed to be active - a mismatch means the profile change never propagated to that instance or the instance restarted without re-saving. Then go to SM20, filter on the exact client, user and timestamp window of the incident, and check whether any entries exist at all. Entries missing despite SM19 showing 'active' points to the wrong event class being selected, a user wildcard that does not actually match the account involved, or the event happening through RFC rather than dialog logon when only dialog was filtered.
ECC vs S/4HANA
On S/4HANA the underlying audit log mechanism is unchanged in concept: filters still control which event classes get captured, and the dynamic-versus-static split still applies. Storage can be database-backed rather than purely file-based, which changes retention behavior and how quickly entries become visible in SM20. SAP has offered a newer, more structured configuration interface for the audit log alongside SM19 in later releases, but SM19 generally remains available and functional as the classic entry point. There is no Fiori app replacement, since this is a Basis and security-level configuration task rather than an end-user process.
Common pitfalls and how to diagnose them
- Dynamic versus static mismatch: a filter is activated dynamically during an investigation, works, then disappears after any restart because it was never written to the static profile; always check both activation states before declaring a filter permanent
- Filter scope too narrow: the user wildcard used in the filter does not match the naming convention of the actual account involved, for example a filter for 'DDIC*' never catching a differently named service account, or the relevant client was left out of the filter entirely
- Event class not selected: a very common gap is enabling dialog logon failures while leaving RFC and CPIC logon failures unchecked, so an entire attack surface through background or interface logons goes unlogged while the team believes coverage is complete
- Log rollover or full storage: when the log target is file-based with a fixed size or number of generations, older entries get overwritten once the limit is reached, which looks like logging stopped when it actually just aged out; check the storage target and retention settings before assuming a configuration failure
- Instance-by-instance inconsistency: SM19 activation applies to the instance it was run on; in a landscape with multiple application servers behind a load balancer, other instances may still be running the old filter, producing inconsistent capture depending on which server a session landed on
- Confusing SM19 with SM20: trying to read log entries inside SM19, which is a configuration screen, not a viewer, or trying to change filter settings from SM20, which only displays what was already captured
Whose problem this is
This belongs to Basis and Security/GRC, not to functional consultants. Functional teams typically only need to confirm that a filter covers a specific event for compliance sign-off. A good handover states the filter number in use, whether it is activated dynamically, statically, or both, which instances are covered, the storage target, and the retention window, so the receiving team does not have to reverse-engineer the configuration from scratch.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tcodes/sm19ERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.