Dokumentation zur VorgehensweiseStammdaten über das SMD Tool verteilen Dieses Dokument in der Navigationsstruktur finden

 

Das Shared Master Data Tool (SMD-Tool) protokolliert Änderungen an Stammdatenobjekten in der Form von Änderungszeigern. Es ist an die Änderungsbelegschnittstelle angeschlossen. Um Stammdaten über das SMD-Tool verteilen zu können, müssen beim Ändern, Neuanlegen und Löschen eines Stammdatenobjekts Änderungsbelege erzeugt werden. Das Stammdatenobjekt muss an die Änderungsbelegschnittstelle angeschlossen sein.

Änderungszeiger erzeugen und auswerten

Änderungszeiger werden zum Ermitteln und Verteilen von Änderungen an Stammdatenobjekten verwendet.

Das Erzeugen von Änderungszeigern läuft wie folgt ab:

Das Anwendungsprogramm ruft die Änderungsbelegschnittstelle zu einem sogenannten Änderungsbelegobjekt auf. Hierfür wird ein generierter Funktionsbaustein xyz_DOCUMENT_WRITE aufgerufen. In seiner Schnittstelle befinden sich für jede Tabelle und Struktur, für die Deltas als Änderungsbelege ermittelt werden sollen, zwei Parameter - die alten Sätze und die neuen Sätze. Die Änderungsbelegschnittstelle erzeugt daraus eine Liste von Änderungen (Tabellenname, Tabellenschlüssel, Feldname, Änderungsart, alter Wert, neuer Wert).

Im wesentlichen gibt es drei Änderungsarten:

  • Insert

    Beim Einfügen wird genau ein Satz geschrieben (Tabellenname, Tabellenschlüssel, Feldname = "KEY", Änderungsart = Insert, Alter Wert = leer, Neuer Wert=leer). Die Feldwerte werden nicht dokumentiert, da sie auf der Datenbank zu finden sind. Wichtig ist hierbei, dass in diesem Fall der spezielle Feldname KEY verwendet wird.

  • Update

    Beim Ändern wird für jedes geänderte Feld ein Satz geschrieben (Tabellenname, Tabellenschlüssel, Feldname = <Feldname> , Änderungsart = Update, alter Wert = ABC, neuer Wert=DEF).

    Hierbei gibt es noch eine Variante:

    In der Definition des Änderungsbelegobjekts kann auch noch bestimmt werden, dass nicht ein Update-Satz, sondern ein Delete- und ein Insert-Satz geschrieben werden. Daher ist auch die Änderungsart ein Schlüsselfeld in der CDPOS-Tabelle. Somit können zu einem Tabellennamen, Tabellenschlüssel und Feldnamen zwei Sätze für Delete und Insert geschrieben werden.

  • Delete

    Beim Löschen wird genau ein Satz geschrieben (analog zum Einfügen). In der Definition des Änderungsbelegobjekts kann auch angegeben werden, dass alle Werte gespeichert werden, dann gibt es je Feld einen Satz.

Beim Schreiben der Änderungsbelege wird auch die Schnittstelle zum Schreiben von Änderungszeigern aufgerufen. Hier wird aus der Tabelle TBD62 ermittelt, ob zu Tabellenname, Tabellenschlüssel, Feldname Sätze mit zu versendenden Nachrichtentypen gefunden werden. TBD62 besteht aus Tabellenname, Tabellenschlüssel, Feldname, Nachrichtentyp. Für jeden Nachrichtentyp, der in der Tabelle TBDA2 als aktiv gekennzeichnet ist, wird ein Änderungszeiger geschrieben. Dabei wird in die Tabelle BDCP ein Satz mit den eigentlichen Änderungsinformationen und in die Tabelle BDCPS für jeden Nachrichtentyp ein Statussatz geschrieben.

Daher müssen Sie in die Tabelle TBD62 alle Felder aufnehmen, deren Änderung das Versenden einer Nachricht (IDoc) bewirken soll.

Performance-Verbesserung über neue Ablage

Für bestimmte Nachrichtentypen wurde aus Gründen einer besseren Performance eine neue Ablage BDCP2 für Änderungszeiger implementiert. Um eine Nutzung der neuen Ablage zu ermöglichen, müssen folgende Voraussetzungen erfüllt sein:

Der Zugriff auf die Änderungszeiger erfolgt ausschließlich über folgende Schnittstellen und das Löschprogramm RBDCPCLR:

  • CHANGE_POINTERS_CREATE

  • CHANG E_POINTERS_CREATE_DIRECT

  • CHANGE_POINTERS_READ

  • CHANGE_POINTERS_STATUS_WRITE

Wenn diese Voraussetzungen jeweils für einen Nachrichtentyp erfüllt sind, kann dieser unter   ALE-Entwicklung   IDoc   Änderungsdienst   Funktionsbaustein für Auswertung pflegen (BD60)   als BDCP2-fähig markiert werden.

Einzelheiten zur Durchführung der Migration finden Sie im Einführungsleitfaden.

Vorgehensweise

Damit das Schreiben der Änderungszeiger über das SMD-Tool für Ihr Stammdatenobjekt aktiviert werden kann, müssen Sie folgende Schritte ausführen:

  • Änderungszeiger pro Nachrichtenyp aktivieren

  • Änderungsrelevante Felder für Nachrichtentypen pflegen

  • Änderungszeiger generell aktivieren

Darüber hinaus müssen Sie folgende Schritte ausführen:

  • Funktionsbaustein für Auswertung der Änderungszeiger implementieren

  • ALE-Objekttyp MSGFN definieren und als Filterobjekttyp pflegen

Hinweis Hinweis

Wenn Sie die Stammdaten über ein asynchrones BAPI verteilen, dann gelten alle nachfolgend beschriebenen Einstellungen für den generierten Nachrichtentyp der BAPI-ALE-Schnittstelle.

Ende des Hinweises
Änderungszeiger pro Nachrichtenyp aktivieren

Durch einen Eintrag in Tabelle TBDA2 können Sie das Schreiben der Änderungszeiger für ein bestimmtes Stammdatenobjekt aktivieren bzw. deaktivieren.

Die Pflege der Tabelle TDBA2 erreichen Sie im Customizing über folgenden Pfad:

  SAP Web Application Server   IDoc-Schnittstelle / ALE   Geschäftsprozesse modellieren und implementieren   Verteilung von Stammdaten konfigurieren   Replikation von geänderten Daten einrichten   Änderungszeiger pro Nachrichtentyp aktivieren  

(Transaktion BD50).

Nehmen Sie in der Tabelle TBDA2 einen Eintrag mit dem Nachrichtentyp für Ihr Stammdatenobjekt auf. Für die Auslieferung zum Kunden soll das Kennzeichen "Aktiv" bei dem Eintrag nicht gesetzt werden. Falls zu Testzwecken das Schreiben der Änderungszeiger für Ihr Stammdatenobjekt aktiviert wird, muss im TBDA2-Eintrag für Ihren Nachrichtentyp das Kennzeichen "Aktiv" gesetzt werden.

Beispiel Beispiel

Sehen Sie sich als Beispiel den TBDA2-Eintrag für den Nachrichtentyp MATMAS des Materialstamms an.

Ende des Beispiels.
Änderungsrelevante Felder für Nachrichtentypen pflegen

In Tabelle TBD62 werden die Änderungsbelegfelder aus dem Änderungsbelegobjekt beschrieben, deren Protokollierung über die Änderungsbelegschnittstelle zum Schreiben der Änderungszeiger führen soll.

Hinweis Hinweis

Zur Pflege der Tabelle TBD62 wählen Sie in der ALE-Entwicklung   BAPI   Änderungswesen   Änderungsrelevante Felder   (Transaktion BD52).

Ende des Hinweises

Definieren Sie in der Tabelle TBD62 für Ihren Nachrichtentyp alle Änderungsbelegfelder, für die die Änderungszeiger geschrieben werden sollen, damit Sie die entsprechenden Änderungen an Ihrem Stammdatenobjekt an andere Systeme verteilen können.

Beim Hinzufügen eines Eintrages in eine Tabelle zu Ihrem Stammdatenobjekt wird zur Protokollierung solcher Änderung das Änderungsbelegfeld mit dem imaginären Feldnamen KEY benutzt (z.B. MATERIAL MARA KEY bei der Neuanlage eines Materials oder MATERIAL MARC KEY beim Hinzufügen der Werksdaten zu einem Werk). Solche Einträge müssen Sie auch in die Tabelle TBD62 aufnehmen, und zwar für alle Tabellen aus dem Änderungsbelegobjekt für Ihr Stammdatenobjekt.

Das Hinzufügen bzw. Ändern eines Langtextes wird in der Änderungsbelegposition mit einem Eintrag protokolliert. Dieser besitzt als Tabellenname das Textobjekt und als Feldname einen Wert, der sich aus der Text-ID und dem Sprachenschlüssel zusammensetzt. Falls Änderungen an Langtexten zu einem Stammdatenobjekt verteilt werden sollen, müssen solche Einträge in die Tabelle TBD62 aufgenommen werden. Es ist aber nicht notwendig, dies für jeden möglichen Sprachenschlüssel zu tun. Es genügt, für die betroffene Text-ID einen Eintrag in die Tabelle TBD62 aufzunehmen, der als Feldname einen Wert hat, der aus der Text-ID und dem Zeichen * zusammengesetzt ist (z.B. MATERIAL MATERIAL BEST* für den Einkaufsbestelltext im Materialstamm).

Beispiel Beispiel

Sehen Sie sich die TBD62-Einträge für den Nachrichtentyp MATMAS für den Materialstamm im SAP-System an.

Ende des Beispiels.
Änderungszeiger generell aktivieren

Zur generellen Aktivierung der Stammdatenverteilung über Änderungszeiger wählen Sie im Customizing folgenden Pfad:

  SAP Web Application Server   IDoc-Schnittstelle / ALE   Geschäftsprozesse modellieren und implementieren   Verteilung von Stammdaten konfigurieren   Replikation von geänderten Daten einrichten   Änderungszeiger generell aktivieren   (Transaktion BD61).

Funktionsbaustein für Auswertung der Änderungszeiger implementieren

Bei der Auswertung der Änderungszeiger werden die IDocs für die geänderten Stammdatenobjekte aufgebaut und versendet. Die Auswertung der Änderungszeiger mit dem anschließenden Aufbau und Versand der IDocs erfolgt pro Nachrichtentyp (z.B. MATMAS für den Materialstamm) und wird über einen Funktionsbaustein (z.B. MASTERIDOC_CREATE_SMD_MATMAS für den Materialstamm) realisiert.

Der Funktionsbaustein ist für jeden Nachrichtentyp zu implementieren. Die Namenskonvention für den Funktionsbaustein ist MASTERIDOC_CREATE_SMD_xxxxxx, wobei xxxxxx der Name des Nachrichtentyps ist.

Die folgende Beschreibung der Implementierung des Funktionsbausteins für die Änderungszeigerauswertung mit dem anschließenden Aufbau und Versand der IDocs können Sie am Beispiel des Funktionsbausteins MASTERIDOC_CREATE_SMD_MATMAS für den Materialstamm nachvollziehen. Sie können aber auch den Funktionsbaustein MASTERIDOC_CREATE_SMD_MATCOR für den Core Materialstamm als Vorlage für Ihren Funktionsbaustein nehmen. Der IDoc-Typ MATCOR01 für den Core-Materialstamm besteht lediglich aus den beiden Segmenten E1MARAC und E1MAKTC und enthält nur die Core-Daten aus dem Materialstamm. Daher ist der Funktionsbaustein MASTERIDOC_CREATE_SMD_MATCOR für den Core Materialstamm übersichtlicher und einfacher gestaltet als der Funktionsbaustein MASTERIDOC_CREATE_SMD_MATMAS für den kompletten Materialstamm.

Legen Sie also einen Funktionsbaustein für Ihren Nachrichtentyp an. Die Schnittstelle des Funktionsbausteins ist vorgegeben und besteht aus dem Parameter für den Nachrichtentyp.

Hinweis Hinweis

Zum Aufruf des Funktionsbausteins wählen Sie im Bildschirm der ALE-Administration   Dienste   Änderungszeiger   Auswerten (Transaktion BD21).

Ende des Hinweises

Bevor Sie die Transaktion für Ihren Nachrichtentyp starten können, müssen Sie die Zuordnung vom Nachrichtentyp zum Funktionsbaustein in der Steuertabelle TBDME pflegen. Definieren Sie für Ihren Nachrichtentyp einen Eintrag in der Tabelle TBDME mit dem Referenznachrichtentyp gleich Ihrem Nachrichtentyp und ordnen Sie den Funktionsbaustein zu. Als Beispiel können Sie die Einträge für Nachrichtentyp MATMAS (Master Material) und MATCOR (Core Master Material) ansehen.

Hinweis Hinweis

Die Pflege der Tabelle TBDME erreichen Sie im Bildschirm der ALE-Entwicklung über   IDoc   Datenfilterung   Reduzierung   Nachrichtentyp reduzierbar setzen  (BD60).

Ende des Hinweises

In Ihrem Funktionsbaustein für die Änderungszeigerauswertung mit dem anschließenden Aufbau und Versand der IDocs müssen Sie folgende Schritte implementieren:

  1. Lesen Sie alle noch nicht abgearbeiteten Änderungszeiger für Ihren Nachrichtentyp mittels des Funktionsbausteins CHANGE_POINTERS_READ.

  2. Für jedes geänderte Stammdatenobjekt bauen Sie ein IDoc auf. Füllen Sie im IDoc nur die Segmente, die laut der Änderungszeiger geändert wurden. Das erste Feld MSGFN in jedem Segment ist folgendermaßen zu füllen:

    009, wenn das Segment hinzugefügt wurde

    004, falls Segmentfelder geändert wurden

    003, wenn das Segment gelöscht wurde

    018, falls Segmentfelder nicht geändert wurden, das Segment aber im IDoc stehen muss, da hierarchisch untergeordnete Segmente im IDoc versendet werden.

  3. Übergeben Sie das IDoc an die ALE-Schicht durch den Aufruf des Funktionsbausteins MASTER_IDOC_DISTRIBUTE.

  4. Die Änderungszeiger für das gerade abgearbeitete Stammdatenobjekt auf "Erledigt" setzen. Dies geschieht über den Aufruf des Funktionsbausteins CHANGE_POINTERS_STATUS_WRITE.

  5. Setzen Sie den Befehl COMMIT WORK ab und rufen Sie den Funktionsbaustein DEQUEUE_ALL auf. Aus Performance-Gründen sollte man diesen Schritt nicht nach jedem IDoc durchführen, sondern z.B. erst nach 50 aufgebaute IDocs.

ALE-Objekttyp MSGFN definieren und als Filterobjekttyp pflegen

Bei der Empfängerermittlung zu Nachrichtentypen, die nicht durch die BAPI-ALE-Schnittstelle generiert wurden, kann es vorkommen, dass IDoc-Segmente, die geänderte Daten enthalten, weggefiltert werden. Es bleiben unter Umständen an den Enden der Segmentketten IDoc-Segmente übrig, die keine geänderten Daten enthalten und nur aufgrund der Segmenthierarchie in das IDoc aufgenommen wurden.

Um der ALE-Ausgangsverarbeitung zu ermöglichen, solche hängenden Segmente zu unterdrücken, muss ihnen beim Aufbau des IDocs im Feld MSGFN den Wert 018 zugewiesen werden.

Zusätzlich müssen Sie folgende Einstellungen treffen:

  • MSGFN muss als ALE-Objekttyp definiert sein. Wählen sie dazu im Menü der ALE-Entwicklung   IDoc   Datenfilterung   Filterobjekttyp pflegen   (Transaktion BD95). Im allgemeinen ist MSGFN bereits als ALE-Objekt definiert und ihm das Feld MSGFN der Tabelle BDIPARAM zugeordet.

  • MSGFN muss in Tabelle TBD21 als Filterobjekttyp des neuen Nachrichtentyps und der neuen IDoc-Segmente eingetragen werden. Der vollständige Eintrag in TBD21 besteht aus dem Namen des Nachrichtentyps unter MESTYP, des Segmenttyps unter SEGTYP und dem Feldnamen MSGFN unter FLDNAM. Wählen sie dazu im Menü der ALE-Entwicklung   IDoc   Datenfilterung   Filterobjekttyp einem IDoc-Feld zuordnen   (Transaktion BD59).

  • Hinweis Hinweis

    Bei der Verteilung von Änderungen mit asynchronen BAPIs sollten Sie aus Gründen der Kompatibilität das Feld FUNCTION mit dem Datenelement BAPIFN und den Festwerten INS, DEL, UPD, REF und IGN verwenden. Dadurch kennzeichnen Sie die Art der Änderung, die mit dem BAPI verteilt wird.

    Nehmen Sie das Feld FUNCTION in jeden strukturierten Parameter auf. So ist es z.B. auch möglich, das Löschen eines Datensatzes zu verteilen.

    Ende des Hinweises