Anwendungslog in SAP: So erstellst und analysierst Du Logs mit SLG0 und SLG1

Wenn Du in SAP ERP bzw. SAP S/4HANA arbeitest, kennst Du sicher das Problem: Nachrichten entstehen in Programmen, Prozessen oder Schnittstellen. Du möchtest sie strukturiert sammeln, nachvollziehen und später wieder anzeigen. Genau dafür gibt es den Anwendungslog, auch Application Log genannt. Er bietet Dir eine zentrale Infrastruktur, um Nachrichten zu erfassen, dauerhaft in der Datenbank zu speichern und übersichtlich darzustellen.

In diesem Artikel zeige ich Dir Schritt für Schritt, wie Du in ABAP Logs erstellst, speicherst und mit den wichtigsten Transaktionen SLG0 und SLG1 wieder abrufst.

Was ist der Anwendungslog?

Ein Anwendungslog ist nichts anderes als eine Sammlung von Nachrichten, die zu einem Prozess gehören. Zusätzlich enthält er Metadaten wie:

  • Log-Typ
  • Benutzername
  • Erstellungszeitpunkt
  • Programmname

Besonders praktisch: Jede Nachricht im Log erhält ein Symbol (z. B. ein grünes, gelbes oder rotes Ampelsymbol), das die Art bzw. Schwere des Hinweises sofort erkennen lässt. So kannst Du Fehler, Warnungen oder reine Informationen schnell unterscheiden.

Die wichtigsten Transaktionen

Für die Arbeit mit Anwendungslogs gibt es zentrale Transaktionen:

  • SLG0
    • Hier legst Du ein neues Log-Objekt und ein Sub-Objekt an.
  • SLG1
    • Mit dieser Transaktion rufst Du bestehende Logs ab und kannst sie analysieren.
  • SLGD
    • Das ist die neuere SLG1 Transaktion mit mehr Selektionsmöglichkeiten. Mit dieser Transaktion rufst Du ebenfalls bestehende Logs ab und kannst sie analysieren.
  • SLG2
    • Hierüber lassen sich alte oder nicht mehr benötigte Logs löschen.
  • SLGN
    • Hier pflegst Du die Nummernkreise.

Objekte und Sub-Objekte anlegen (SLG0)

Bevor Du eigene Logs schreiben kannst, musst Du ein Log-Objekt anlegen. Dieses Objekt ist sozusagen die Oberkategorie für Deine Protokolle. Zusätzlich kannst Du Unterobjekte erstellen, die eine feinere Unterteilung ermöglichen.

So gehst Du vor:

  1. Rufe die Transaktion SLG0 auf
  2. Klicke auf „Neue Einträge“
  3. Gib einen Objektnamen und -beschreibung an und speichere
  4. Optional: Lege ein Unterobjekt für detaillierte Klassifizierung an
Transaktion SLG0: Objekt und Unterobjekt für Anwendungslog erstellen

Nachrichten im Programm sammeln

Sobald Dein Objekt in der Transaktion SLG0 definiert ist, kannst Du im ABAP-Programm Nachrichten in den Anwendungslog schreiben. Dafür stehen Dir spezielle Funktionsbausteine zur Verfügung:

  • BAL_LOG_CREATE
    • Erstellt den Log mit Kopf­daten (z. B. Benutzer, Programmname).
  • BAL_LOG_MSG_ADD
    • Fügt Nachrichten in den Log ein.
  • BAL_LOG_MSG_ADD_FREE_TEXT
    • Fügt einen einfachen Text in den Log ein.
  • BAL_DB_SAVE
    • Speichert den Log dauerhaft in der Datenbank.
  • BAL_DSP_LOG_DISPLAY
    • Zeigt den Log im Speicher an.

Der Ablauf ist immer ähnlich:

  1. Mit BAL_LOG_CREATE öffnest Du einen Log. Der Rückgabewert ist ein Log-Handle, ein eindeutiger Schlüssel, den Du später wiederverwendest.
  2. Mit BAL_LOG_MSG_ADD fügst Du Nachrichten hinzu. Jede Nachricht kann dabei den Typ (I, W, E), eine ID und Variablen enthalten, ähnlich wie bei T100-Meldungen.
  3. Mit BAL_DB_SAVE speicherst Du alles dauerhaft.
  4. Optional kannst Du mit BAL_DSP_LOG_DISPLAY die Nachrichten sofort anzeigen lassen.

Beispiel in ABAP

REPORT z_application_log.


DATA: log        TYPE bal_s_log,
      log_handle TYPE balloghndl,
      msg        TYPE bal_s_msg.
DATA:
  l_s_msg TYPE bal_s_msg.

log-object = 'ZERPUP'.
log-subobject = 'ZERPUP_SUB'.
log-aluser = sy-uname.
log-alprog = sy-repid.

CALL FUNCTION 'BAL_LOG_CREATE'
  EXPORTING
    i_s_log      = log
  IMPORTING
    e_log_handle = log_handle.

CALL FUNCTION 'BAL_LOG_MSG_ADD_FREE_TEXT'
  EXPORTING
    i_log_handle = log_handle
    i_msgty      = 'E'
    i_text       = 'Das ist die Nachricht im Anwendungslog.'.


CALL FUNCTION 'BAL_DB_SAVE'
  EXPORTING
    i_save_all = 'X'.

Tipp – Ablaufdatum versehen

Es ist zwar praktisch, das Anwendungslog intensiv zu nutzen, doch dabei entsteht schnell eine große Datenmenge in der Datenbank. Um den Speicherverbrauch zu begrenzen, kannst Du beim Anlegen eines Logs ein Ablaufdatum (ALDATE_DEL) im Typ BAL_S_LOG mitgeben.

log-aldate_del = sy-datum + 30. "Ablaufdatum in 30 Tagen = Anwendungslog wird nach 30 Tagen gelöscht

Nach Erreichen dieses Datums werden die Einträge bei einem Reorg-Lauf automatisch gelöscht. Standardmäßig entfernt die Basis alte Logs nach 90 Tagen bis zu einem halben Jahr, in den meisten Fällen völlig ausreichend. Möchtest Du es detaillierter steuern, kannst Du das Ablaufdatum abhängig von Objekt und Unterobjekt setzen, z. B. direkt im Coding oder über eine Customizing-Tabelle.

Für ein manuelles Löschen steht Dir außerdem die Transaktion SLG2 zur Verfügung.

Logs ansehen (SLG1)

Nachdem Du Nachrichten gesammelt und gespeichert hast, kannst Du sie jederzeit mit der Transaktion SLG1 einsehen.

  1. Rufe die Transaktion SLG1 auf
  2. Trage Dein Objekt und ggf. Unterobjekt ein
  3. Ergänze weitere Filter wie Benutzername oder Datum
  4. Klicke auf „Ausführen“ oder nutze die F8-Taste
Transaktion SLG1 - Anwendungslog auswerten

Jetzt siehst Du alle Logs, die zu Deinem Objekt gehören. Mit einem Doppelklick öffnest Du die Details und kannst jede Nachricht im Kontext prüfen.

Transaktion SLG1 - Protokolle anzeigen

Über den Autor

Andreas Geiger

Mein Name ist Andreas Geiger und ich bin ein erfahrener Senior SAP Berater. Mit mehr als 10 Jahren Berufserfahrung habe ich mehrere SAP-Projekte erfolgreich abgeschlossen und umfangreiche Kenntnisse in verschiedenen Bereichen wie SAP FI, SAP MM und ABAP erworben. Nun möchte ich mein Wissen mit Dir teilen, um Dir einen Mehrwert zu bieten und Dich bei Deiner täglichen Arbeit mit dem SAP-System zu unterstützen.

Mehr zu ERP UP

ERP UP unterstützen

Wenn Du mit ERP UP zufrieden bist, kannst Du mich gerne unterstützen. Dabei gibt es unzählige Möglichkeiten, wie Du mich einfach und schnell unterstützen kannst. Wie Du genau ERP UP unterstützen kannst, erfährst Du hier. Vielen Dank.

Schreibe einen Kommentar