Eine Protokollierung in SAP ERP kann nützlich und von Vorteil sein. Denn dadurch erkennt man, wer wann eine Datenbanktabelle verändert hat. Dabei gibt es mehrere Möglichkeiten wie Du eine Protokollierung in SAP ERP aktivierst und anschließend auch analysierst. Mit diesem Artikel möchte ich Dir einmal die verschiedenen Lösungsmöglichkeiten zeigen. Viel Spaß.
Voraussetzungen für Protokollierung von geänderten Datensätzen
Technische Einstellungen in SE11
Damit Änderungen von einer Datenbanktabelle unter SAP ERP aufgezeichnet werden und für Analysen in einer Log-Tabelle gespeichert werden, muss die zugehörige technische Einstellung aktiviert werden.
Im ABAP-Dictionary (Transaktion SE11
) muss hierfür die technische Einstellung „Datenänderungen protokollieren“ aktiv sein. Dadurch werden Änderungen in der Log-Tabelle DBTABLOG gespeichert und können dort eingesehen werden.
Profilparameter rec/client gesetzt
Damit generell die Protokollierung im SAP-System möglich ist, muss der Profilparameter rec/client
gesetzt sein. Hierbei gibt es drei verschiedene Parameter
- ALL – Die Protokollierung ist im gesamten SAP-System aktiv
- <Mandant> – Die Protokollierung ist beim angegeben <Mandant> aktiv (z.B. 100)
- OFF – Die Protokollierung ist deaktiviert.
Welcher Parameter gesetzt ist findet man leicht über die Transaktion RZ11
heraus. Nach Aufruf der Transaktion gibt man den Profilparameter /rec/client ein und bestätigt mit Enter oder klickt auf „Anzeigen„.
Unter „Aktueller Wert“ kann man sich den Wert anzeigen lassen. In diesem Beispiel ist die Protokollierung deaktiviert (OFF).
Wenn Du die Protokollierung über den Profilparameter /rec/client aktivieren möchtest, kannst Du über Bearbeiten > Wert ändern
den Wert ändern. Oft ist diese Einstellung jedoch deaktiviert weshalb man nicht so einfach diesen Wert ändern kann.
Dann kannst Du den Profilparameter über die Transaktion RZ10
verändern bzw. setzen. Das sollte von der SAP-Basis durchgeführt werden.
Nachdem Du die Transaktion RZ10
aufgerufen hast, wählst Du das Profil das genutzt wird und die jüngste Version. Trage das Profil ein. Nutze hier die F4-Hilfe, um die jüngste bzw. aktuellste Version zu finden. Klicke draufhin auf „Ändern“, um das Profil zu bearbeiten.
Anschließend wählt man „Anlegen“ oder F5 aus, um den Parameter rec/client anzulegen oder bearbeitet den Parameter, wenn er bereits angelegt wurde. Unter „Parameter-Wert“ trägt man den gewünschten Wert ein und übernimmt die Anpassung mit „Übernehmen„. Anschließend ist der Profilparameter rec/client gesetzt. Damit die Änderungen übernommen werden, muss man noch einmal auf „Übernehmen“ klicken. Alternativ kann man die Übersicht verlassen (F3) und die Abfrage für eine Speicherung mit „Ja“ bestätigen.
Um das Profil letztlich zu speichern, musst Du in der Eingangsmaske auf „Sichern“ oder Strg + S klicken. Nach einem Neustart des SAP-Systems ist der Profilparameter gesetzt. Du kannst anschließend in der RZ11
die Änderung kontrollieren.
Protokollierung anzeigen lassen
Wenn also die Protokollierung im ABAP Dictionary (SE11) gesetzt ist und der Profilparameter rec/client eine Protokollierung im Mandanten zulässt, gibt es zwei Möglichkeiten wie man die Änderungen anzeigen lassen kann:
- Auswertung von Änderungsprotokollen in SCU3
- Recherche von geänderten Datenbankeinträgen über DBTABLOG
Auswertung von Änderungsprotokollen in SCU3
Eine gute Möglichkeit, sich Tabellenänderungen anzuzeigen, ist die Transaktion SCU3
. Nach Aufruf der Transaktion kann man sich die Protokolle anzeigen lassen in dem man auf den Button „Protokolle auswerten“ klickt.
Sollte am Anfang ein Hinweis für die Auswertung von Änderungsprotokollen angezeigt werden, dass die Protokollierung gegenwärtig nicht aktiv ist, ist das ein Hinweis, dass der Profilparameter rec/client noch nicht gesetzt wurde. Natürlich kann man sich trotzdem die Protokolle anzeigen lassen, in dem man auf „Ja“ klickt.
In dem nächsten Selektionsbild gibt man die zu analyiserende Tabelle ein. Stelle sicher, dass der Radio-Button „Tabellen“ ausgewählt ist, wenn Du im Eingabefeld „Customizing-Objekt/Tabelle“ eine Tabelle eingegeben hast. Möchtest Du ein Customizing-Objekt auswerten, so muss hier natürlich der Radio-Button „Customizing-Objekten“ ausgewählt werden.
Bei der Ausgabeoption „ALV Grid Anzeige“ bekommst Du die Änderungen im ALV Grid Control angezeigt. Außerdem kannst Du den Auswertungszeitraum anzeigen lassen, wenn Du z.B. nur an einem Tag die Änderungen anzeigen lassen möchtest.
Nach der Ausführung siehst Du sehr gut, welcher Benutzer wann in welchem Feld den Wert geändert hat. Dabei wird der alte und der neue Wert angezeigt.
Du kannst natürlich auch Änderungen an Customizing-Tabellen Dir anzeigen lassen.
Bei vielen SAP-Customizingtabellen sind die Protokolländerungen standardmäßig aktiviert. Aber nicht alle. Es ist nicht ungewöhnlich, die Tabellenprotokollierung für Standard-SAP-Konfigurationstabellen zu aktivieren, die für das Unternehmen wichtig sind.
Die Tabellenprotokollierung ist dabei natürlich kein Ersatz für Änderungsbelege. SAP-Standard erzeugt Änderungsbelege für Änderungen an Belegen, die für Verfolgungs- und Audit-Zwecke aufbewahrt werden müssen. Dies gilt für alle wichtigen länderübergreifenden Objekte und die ihnen zugrunde liegenden Tabellen. Aus diesem Grund ist z.B. für eine wichtige Tabelle wie VBAK (Kundenauftragskopf) die Tabellenprotokollierung ausgeschaltet, da bereits Änderungsbelege erzeugt werden.
Recherche von geänderten Datenbankeinträgen über DBTABLOG
Indem die Protokollierung aktiviert wird, werden Änderungen in der Log-Tabelle DBTABLOG gespeichert. Dadurch kann man schon aktuell Änderungen über den Data Browser (Transaktion SE16N
) anzeigen lassen. Folgende Schritte sind hierfür notwendig:
- Data Browser mit dem Transaktionscode
SE16N
aufrufen - Tabellenname „DBTABLOG“ eingeben
- Als Selektionsparameter „TABNAME“die gewünschte Tabelle eingeben
- Datumsangaben der Log-Einträge eingrenzen
- Ausführen (F8)
- Gewünschten Log-Eintrag suchen und mit Doppelklick auswählen
- Manuell Einträge wie beispielsweise den Logeintrag/Logkey, den Benutzername und die Operation auswerten
Das kann man auch vereinfachen, wenn man einen eigenen Report programmiert, der die Protokollierung wie gewünscht in einem ALV Grid Control anzeigt. Neben den Selektionskriterien und der Datendeklaration selektiert man zuerst die Daten gemäß den Eingrenzungen.
SELECT username logdate logtime optype logkey
INTO CORRESPONDING FIELDS OF TABLE it_alv_table
FROM dbtablog
WHERE logdate IN s_date "Datum
AND logtime IN s_time "Uhrzeit
AND username LIKE s_user "Änderungsuser
AND tabname EQ p_table. "Tabelle
In der internen Tabelle it_alv_table
befinden sich nun alle ausgelesenen Datensätze aus der Logging-Tabelle DBTABLOG
. Hier ist wichtig, dass die interne Tabelle die Struktur für die Ausgabe besitzt.
Nach der Selektion kann man sich den logkey mit String-Operationen den gewünschten Attributen bzw. Spalten zuweisen.
Anschließend kann man den ALV Grid Control im Output-Module des Dynpros aufrufen oder mit einfachen WRITE-Befehlen die Ausgabe textuell erstellen.
CALL METHOD r_alv->set_table_for_first_display
EXPORTING
"Feldkatalog, gewünschte DDIC-Struktur
i_structure_name = 'ZLOG_DDIC'
CHANGING
"interne Tabelle und Feldkatalog übergeben
it_outtab = it_alv_table
it_fieldcatalog = t_fcat
EXCEPTIONS
program_error = 1
OTHERS = 2.
Protokollierung löschen
Möchte man Langtexte aus der Tabelle DBTABLOG und damit Protokolleinträge löschen, verwendet man die Transaktion S_AUT04. Hat man diese Transaktion aufgerufen, kann man im jeweiligen Textobjekt ein Löschkennzeichen setzen bzw. entfernen. Daraufhin kann man zur Löschung vorgemerkte Langtexte in der Transaktion S_AUT05 oder mit dem Report S_AUT_DEL löschen.
Die SAP empfiehlt, dass man die Transaktion S_AUT05 „mit Auswahl“ ausführt oder direkt den Report S_AUT_DEL nutzt. Dabei sollte man ebenfalls zu Testzwecken vorerst kleine Datenmengen löschen.
Für ein performantes Löschen empfiehlt es sich, Indizes auf die Tabelle DBTABLOG anzulegen. Details sind im SAP-Hinweis 531923 beschrieben.
Anwendungslog löschen
Das Anwendungslog kann mit der Transaktion SLG2
gelöscht werden.
Mit dieser Transaktion sollte man natürlich vorsichtig umgehen. Nur autorisierte SAP-Benutzer sollten die Transaktion SLG2
und das SAP-Programm SBAL_DELETE
aufrufen dürfen.
Unter Umständen kann die Transaktion SLG2
für eine lange Zeit laufen. Der OSS-Hinweis 2507213 – SBAL_DELETE runs too long kann dabei helfen.
Über den Autor
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.
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.
Schön geschrieben, danke. Aber SLG2 ist nur für das Application Log, nicht für die DB-Protokolle, denke ich.
Hallo Edo,
vielen Dank für Deinen Kommentar. Du hast absolut recht. Ich habe das noch einmal genauer beschrieben, um Klarheit zu schaffen.
VG
Andreas