Änderungshistorie in ABAP – SAP-Tabellen

Die Änderungshistorie ist eine sehr wichtige Funktion im gesamten SAP-ERP bzw. SAP S/4HANA-System. Dadurch kann man einfach und schnell nachvollziehen, welche Änderungen, wann und von wem an einem SAP-Objekt durchgeführt wurden. Gerade für die Wirtschaftsprüfung und Revision ist das eine wichtige Prüfinstanz eines Unternehmens. Aber auch für interne Prüfungen ist die Änderungshistorie nützlich.

Dabei kann man zum einen manuell eine Auswertung durchführen, indem man die Änderungshistorie direkt im SAP-Objekt aufruft, man den Data Browser (Transaktion SE16N) nutzt oder eine eigene Auswertung mit ABAP programmiert.

Aus meiner Sicht sind die zwei wichtigsten Tabellen für die Änderungshistorie folgende:

  • CDHDR – Änderungsbelegkopf
  • CDPOS – Änderungsbelegpositionen

Welche weiteren wichtigen SAP-Tabellen es gibt, wie man einfach und schnell mit ABAP die Änderungshistorie verwendet und welche weiteren wichtigen Tipps es in diesem Zusammenhang gibt, erfährst Du in diesem Artikel.

Änderungshistorie in einer Bestellung

Möchte man sich beispielsweise die Änderungshistorie der Kopfdaten einer Bestellung ansehen, so startet man bspw. die Transaktion ME23N, wechselt bei Bedarf auf die gewünschte Bestellnummer und wählt „Umfeld > Belegkopf > Änderungen Kopf“.

Änderungshistorie in einer Bestellung: Umfeld > Belegkopf > Änderungen Kopf

Anschließend erhält man eine Übersicht der Änderungen einer Bestellung in einer ALV-Grid-Ansicht. Hierbei wird exakt ausgegeben, welche Werte wann und von wem geändert wurden.

Ausgabe der Änderungshistorie einer Bestellung

Änderungshistorie – Übersicht SAP-Tabellen

Im Rahmen der Änderungshistorie gibt es folgende wichtige Tabellen meiner Meinung nach.

TabelleBeschreibung
CDHDR Änderungsbelegkopf
CDPOSÄnderungsbelegpositionen
TCDOBObjekte für Änderungsbelegerstellung
TCDOBTTexte für Objekte für Änderungsbelegerstellung
SE16N_CD_KEYTabellenanzeige: Änderungsbelege: Kopf
SE16N_CD_DATATabellenanzeige: Änderungsbelege: Daten

Übersicht über wichtigsten Änderungsbelegobjekte

Vor allem in den Tabellen CDHDR und CDPOS werden wichtige Daten zur Änderungshistorie gespeichert. Die Tabellen enthalten folgende Spalten als Teil des Primärschlüssels:

  • Änderungsbelegobjekt – OBJECTCLAS
  • Objektwert – OBJECTID
  • Belegnummer – CHANGENR

Das Änderungsbelegobjekt ist die Objektklasse, also das SAP-Objekt an dem die Änderung durchgeführt wurde (z.B. Bestellung, Rechnung, Kostenstelle, etc.).

Der Objektwert ist die Belegnummer bzw. eindeutige ID des Objektes. Abhängig vom Objekt selbst kann der Objektwert aus mehreren Informationen zusammengefügt sein (z.B. Buchungskreis, Belegnummer, Geschäftsjahr).

Die Belegnummer in der Tabelle CDHDR ist eine eindeutige ID zur Änderung an sich. Sie identifiziert die Änderung selbst.

Um also mit dem Data Browser (Transaktion SE16N) alle Änderungen angezeigt zu bekommen, muss man das Änderungsbelegobjekt kennen und angeben. Bei einer systemweiten eindeutigen Belegnummer reicht es theoretisch auch aus, nur den Objektwert (also die SAP-Belegnummer anzugeben).

Eine Übersicht über alle Änderungsbelegobjekte erhält man in der Tabelle TCDOB.

Die wichtigsten Änderungsbelegobjekte sind meiner Meinung nach folgende:

ObjektBeschreibung
BANFBestellanforderung
BELEGRechnungsbeleg
EINKBELEGBestellung
KOSTLKostenstelle
KREDKreditor
PROJPSP-Element
SACHSachkonto

Änderungshistorie in ABAP

Mit dem ABAP-Report RSSCD100 kannst Du Dir die Änderungsbelege anzeigen lassen.

Es kann sehr gut sein, dass manche SAP-Tabellen keinen Änderungszeitstempel führen. Möchte man trotzdem gewisse Daten selektieren, die ab einem Zeitpunkt geändert wurden und nicht den kompletten Inhalt der Tabelle, muss man ein eigenes ABAP-Programm dafür erstellen.

Möchte man als Beispiel alle Kreditoren selektieren, die ab einem gewissen Tag geändert wurde, muss man die Tabellen LFA1 und CDHDR verwenden. In der Tabelle LFA1 gibt es leider keine Spalte, die die Änderung protokolliert. In der Tabelle CDHDR hingegen werden die Änderungen verwaltet.

Beispielsweise dient folgendes ABAP-Programm dafür, von einem Datum ausgehend nur die geänderten Kreditoren aus der Tabelle LFA1 zu selektieren.

*----------------------------------------------------------------------
* Datendeklaration
*----------------------------------------------------------------------
DATA: lt_cdhdr TYPE TABLE OF cdobjectv,
      lv_cdhdr TYPE cdobjectv,
      lt_lfa1  TYPE TABLE OF lfa1,
      ls_lfa1  TYPE lfa1,
      lv_lifnr TYPE lifnr.

PARAMETERS: p_date TYPE date.

*----------------------------------------------------------------------
* Selektiere geänderte Kreditoren
*----------------------------------------------------------------------
SELECT objectid FROM cdhdr INTO TABLE lt_cdhdr
  WHERE objectclas = 'KRED'
  AND   udate >= p_date
  AND   udate <= sy-datum.

*----------------------------------------------------------------------
* Ermittle Kreditordaten
*----------------------------------------------------------------------
LOOP AT lt_cdhdr INTO lv_cdhdr.
  lv_lifnr = lv_cdhdr.
  SELECT SINGLE * FROM lfa1 INTO ls_lfa1
    WHERE lifnr = lv_lifnr.

  IF sy-subrc = 0.
    APPEND ls_lfa1 TO lt_lfa1.
  ENDIF.
ENDLOOP.

Änderungen der SE16N nachvollziehen

In dem Artikel „Editorsperre in SAP ERP einfach entfernen“ wurde eindrucksvoll gezeigt, wie schnell und einfach man Daten direkt auf der Datenbanktabelle ändern kann, wenn man im Debugging die Variablen GD-EDIT und GD-SAPEDIT auf den Wert ‚X‘ setzt.

Aber diese Anpassungen bleiben natürlich nicht ungesehen bzw. unbemerkt. Bei diesem Verfahren sollte man stets die Notwendigkeit im Auge behalten und nur dann durchführen, wenn es absolut notwendig ist und es keine andere Möglichkeiten gibt. Vor allem im Produktivsystem sollte man dieses Verfahren nicht durchführen.

Alle Änderungen direkt im Data Browser (Transaktion SE16N) werden in den Tabellen SE16N_CD_KEY und SE16N_CD_DATA gespeichert.

Der Report RKSE16N_CD_DISPLAY ermöglicht dabei die Anzeige von geänderten Tabelleneinträgen von der Datenbank und/oder dem Archiv selbst. Dabei kann man nach der Tabelle, dem SAP-Benutzer, dem Datum und Uhrzeit der Änderung filtern.

Report RKSE16N_CD_DISPLAY

Ü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.

2 Gedanken zu „Änderungshistorie in ABAP – SAP-Tabellen“

Schreibe einen Kommentar