Show TOC

KonzeptLocate this document in the navigation structure

Verwendung

Um Änderungen zu einem betriebswirtschaftlichen Objekt in einem Änderungsbeleg protokollieren zu können, muss dieses Objekt als Änderungsbelegobjekt im System definiert worden sein. Ein Änderungsbelegobjekt fasst in seiner Definition Tabellen zusammen, die ein betriebswirtschaftliches Objekt im System darstellen. In der Definition kann ferner festgelegt werden, ob bei Löschungen die einzelnen Felder dokumentiert werden sollen. Falls eine Tabelle Felder enthält, deren Werte sich auf Einheiten- und Währungsfelder beziehen, so kann die entsprechende Tabelle, in der die Einheiten und Währungen hinterlegt sind, mitangegeben werden.

Für jede Tabelle muss entschieden werden, ob jeweils nur eine Zeile (Single Case) oder mehrere Zeilen (Multiple Case) zu einem betriebswirtschaftlichen Objekt gehören. Beispielsweise gehören zu einem Auftrag ein Auftragskopf sowie mehrere Auftragspositionen. Bei einer Auftragsänderung werden deshalb in der Regel jeweils eine Zeile für den Auftragskopf und mehrere Zeilen für die Auftragspositionen an die Änderungsbelegerstellung übergeben.

Der Name, unter dem ein Änderungsbelegobjekt angelegt ist, stellt eine Objektklasse dar.

Die Objektklasse kann das Namensraum-Konzept anwenden.

Beispiel

Für das Änderungsbelegobjekt Bestellanforderung wurde die Objektklasse BANF definiert, die aus den Tabellen EBAN (Bestellanforderung) und EBKN (Bestellanforderung-Kontierung) besteht.

Änderungen zu diesem betriebswirtschaftlichen Objekt können dann unter den einzelnen Objektwerten dieses Änderungsbelegobjekts, d.h. der Objekt-ID und einer Änderungsbelegnummer im System abgelegt werden. Die Objekt-ID ist der Schlüssel der Objektausprägungen, d.h. aller Sätze, die laut Definition zu einem Änderungsbelegobjekt gehören.

Unter diesem Schlüssel werden alle Änderungen zu einem betriebswirtschaftlichen Objekt als Objektausprägung zusammengefasst. Dies ist beispielsweise bei Bestellanforderungen die Bestellanforderungsnummer oder bei Nummernkreisobjekten der Name des Nummernkreisobjekts. So kann auf alle Änderungen zu einer bestimmten Bestellanforderung oder einem bestimmten Nummernkreisobjekt zugegriffen werden.

Beispiel

Die Objektausprägung BANF mit der Objekt-ID 3000000000 besteht aus den Zeilen der Tabellen EBAN und EBKN mit der Bestellanforderungsnummer 3000000000.

Sollen Änderungen noch nicht durchgeführt werden, jedoch als Änderungsvorhaben festgehalten werden, so können diese Änderungsvorhaben als geplante Änderungen protokolliert werden. Hierbei ist es möglich, einen geplanten Termin mitanzugeben. Die geplanten Änderungen können ausgewertet und in die eigentlichen Tabellen übernommen werden. Die Übernahme muss jedoch von Ihnen selbst programmiert werden.

Alle Aufgaben zur Protokollierung werden von SAP-Funktionsbausteinen übernommen. Voraussetzung ist die Einbindung bestimmter INCLUDE-Programme in die Anwendungsentwicklung. Die Übergabe an die Änderungsbelegerstellung erfolgt mit der Angabe alter Stand/neuer Stand. Die eingebundenen Funktionsbausteine ermitteln die Änderungen für alle Tabellenfelder, die im Dictionary als änderungsbelegrelevant gekennzeichnet sind.

Hinweis

Änderungsbelege sind unicode-fähig.

Änderungsbeleg

Ein Änderungsbeleg stellt die Protokollierung von Änderungen zu einem betriebswirtschaftlichen Objekt dar. Die Belegerstellung erfolgt in einem von der tatsächlichen Änderung auf der Datenbank unabhängigen Schritt. Der Änderungsbeleg ist folgendermaßen aufgebaut:

  • Änderungsbelegkopf (CDHDR)

    Im Änderungsbelegkopf werden die Kopfdaten des Änderungsvorgangs zu einer Objekt-ID innerhalb einer bestimmten Objektklasse abgelegt. Hierbei wird automatisch eine Änderungsbelegnummer vergeben.

  • Änderungsbelegposition (CDPOS)

    Die Änderungsbelegposition enthält den alten und den neuen Wert zu einem Feld eines bestimmten Änderungsvorgangs sowie ein Änderungskennzeichen. Für das Änderungskennzeichen gelten folgende mögliche Werte:

    • U(pdate)

      Daten wurden geändert (Protokolleintrag für jedes geänderte Feld, das im Dictionary als "änderungsbelegrelevant" gekennzeichnet wurde)

    • I(nsert)

      Daten wurden eingefügt (Protokolleintrag für den ganzen Tabelleneintrag)

    • J (Einzelfelddokumentation bei Insert)

      Einfügen eines Tabelleneintrags mit Einzelfelddokumentation 1 Protokolleintrag pro Feld des eingefügten Tabelleneintrags, der eingefügte Feldinhalt wird aufbewahrt

    • D(elete)

      Daten wurden gelöscht (Protokolleintrag für den ganzen Tabelleneintrag)

    • E(inzelfelddokumentation)

      Löschen eines Tabelleneintrags mit Einzelfelddokumentation 1 Protokolleintrag pro Feld des gelöschten Tabelleneintrags, der gelöschte Feldinhalt wird aufbewahrt

  • Zusätze zu den Änderungsbelegpositionen

    • zusätzliche Änderungsbelegtabelle für TABKEY > 70 Zeichen

      Wenn für eine Tabelle der Tabellenschlüssel größes 70 Zeichen ist, wird dieser lange Tabellen-Key in der CDPOS_UID - Zusatztabelle gespeichert. Es besteht folgende Verbindung zwischen den Tabellen CDPOS und CDPOS_UID:

      Im Feld TABKEY von Tabelle CDPOS_UID ist der lange Tabellenschlüssel für CDPOS in Character 254 gespeichert.

      Im Feld TABKEY von Tabelle CDPOS ist die GUID für CDPOS_UID gespeichert.

      Ist ein Satz in der CDPOS_UID vorhanden, wird das zusätzlich im Feld CDHDR-VERSION = 1 oder 3 gekennzeichnet.

    • zusätzliche Änderungsbelegtabelle für STRINGS

      Sind für eine Tabelle STRING-Felder zu protokollieren, so werden diese in der CDPOS_STR - Tabelle gespeichert.

      Im Feld VALUE_OLD und VALUE_NEW von Tabelle CDPOS_STR sind alter und neuer Änderungsbelegwert für eine STRING - Variable gespeichert.

      Im Feld VALUE_RAWSTR_OLD und VALUE_RAWSTR_NEW von Tabelle CDPOS_STR sind alter und neuer Änderungsbelegwert für eine RAWSTRING - Variable gespeichert; im Feld VALUE_SHSTR_OLD und VALUE_SHSTR_NEW von Tabelle CDPOS_STR sind alter und neuer Änderungsbelegwert für eine SHORTSTRING - Variable gespeichert.

      Ist ein Satz in der CDPOS_STR vorhanden, wird das zusätzlich im Feld CDHDR-VERSION = 2 oder 3 gekennzeichnet.

  • Änderungsbelegnummer

    Die Änderungsbelegnummer wird beim Protokollieren eines Änderungsvorgangs, d.h. beim Anlegen des Änderungsbelegkopfes durch die Funktionsbausteine der Änderungsbelegerstellung (Funktionsgruppe SCD0) vergeben.

    Achtung

    Die Änderungsnummer ist nicht mit der Änderungsbelegnummer zu verwechseln. Die Änderungsbelegnummer wird automatisch von den Funktionsbausteinen der Funktionsgruppe SCD0 bei der Erstellung eines Änderungsbelegs zu einem Änderungsbelegobjekt vergeben. Dazu wird das NUMBER_RANGE Objekt CHANGEDOCU benutzt.

    Die Änderungsnummer wird bei der Planung von Änderungen vom Anwender vergeben. Hierbei kann für verschiedene Änderungsbelegobjekte die gleiche Änderungsnummer verwendet werden.

Interner Ablauf

Beim Aufruf des objektspezifischen Verbuchers wird die objektspezifische Änderungsbelegerstellung aufgerufen. Es wird der objektspezifische Änderungsbelegkopf mit einer Änderungsbelegnummer geschrieben. Für jede zur Objektdefinition gehörende Tabelle wird im Dictionary nachgesehen, welche Felder protokolliert werden sollen. Für diese Felder werden dann gemäß der Objektdefinition die Protokollsätze als Änderungsbelegpositionen erfasst.