Workaround für SAP BW/BODS-Verbindung bei einem Fehler beim Zugriff auf das Repository

Der Blog beschreibt einen Workaround für die Einrichtung der Verbindung zwischen SAP BW und BODS bei Auftreten eines „Fehler beim Zugriff auf Repository: <…> Verletzung der PRIMARY KEY-Einschränkung“

Sie erhalten die Fehlermeldung „Fehler beim Zugriff auf Repository: <…> Verletzung der PRIMARY KEY-Einschränkung“

Beschreibung:

Generell muss für die Extraktion der Daten mit Hilfe von BODS ein Job in BODS erstellt werden. Dieser kann entweder in BW oder in BODS gestartet werden. Um den BODS Job in BW zu starten, wird in einer Prozesskette der Stepp „Starte Job in SAP BusinessObjects Dataservices“ erstellt.

Hierbei werden die Einträge unter „Dataservices-System“ aus den Attributen des BODS-Quellsystem automatisch übernommen. Der Jobname muss eingetragen werden.
Eine andere Möglichkeit ist es, ein InfoPackage in BW auszuführen. Dort muss der BODS-Jobname unter „3rd-Party-Abgrenzungen“ eingetragen werden. Leider ist es so, dass der Job nur ein Ziel (die BW-DataSource von dem InfoPackage) haben darf, damit es zu keiner Fehlermeldung kommt.

Fehler:
Die Extraktion der Daten funktioniert nicht, wenn ein Job in BODS gestartet wird. Der Job endet mit dem Status Grün, der Request von dem InfoPackage bekommt jedoch Status Rot, obwohl Daten in BW ankommen. Die Fehlermeldung weist auf fehlerhafte Einträge in der Tabelle AL_BW_REQUEST hin. Umgekehrt wird ein InfoPackage in BW gestartet, werden Daten ohne Fehler übergeben. Die Voraussetzung dafür ist, dass der BODS-Job nur ein Ziel (die DataSource von dem InfoPackage) hat. Sind in den BODS-Job mehrere BW-DataSource eingetragen, funktioniert die Datenübertragung ebenfalls nicht.

Derzeit gibt es einen Bug in BODS bzw. in BW, der in diesem Thread beschrieben ist:  https://archive.sap.com/discussions/thread/3681955.

SAP hat in April zu dieser Fehlermeldung den Hinweis 2461405 mit der Bemerkung erstellt, dass das Thema an die Entwicklungsabteilung weitergeleitet wurde. Aus diesem Grund wird zunächst ein Workaround benötigt.
Nachfolgend wird beschrieben, wie die Datenübertragung mit ein paar Einschränkungen trotzdem funktioniert. Das Ziel ist es, in einem BODS-Job die Daten zu extrahieren und ans BW zu übergeben. Das Ziel ist es  nicht, für jede DataSource einen separaten BODS-Job zu erstellen.

1. BODS-Job erstellen

In dem BODS Job sind mehrere Datenquelle und mehrere Datenziele implementiert.

Zu beachten ist, dass in BODS unter den Eigenschaften der einzelnen Transferstrukturen das richtige InfoPackage eingetragen ist:

2. Attribute des BO Data Services Systems anpassen

Die Einträge unter Repository und Job Server löschen.

 

Die Einträge in der Tabelle RSBOBJDS_LOGSYS sind für das logische System natürlich auch weg.

Dies hat zur Folge, dass man nun aus BW heraus, einen bestimmten Job auf einem bestimmten BODS-Server nicht starten kann. Da die Einträge in dem PK-Prozess „Starte Job in SAP BusinessObjects Dataservices“ weg sind:

Weiterhin sind die Einträge in den InfoPackages auf dem Reiter „3rd-Party-Abgrenzungen“ auch weg. Somit kann das InfoPackage in BW nicht ausgeführt werden.

Will man dennoch ein InfoPackage in BW starten, so kann man ein neues InfoPackage erstellen und das Repository, den JobServer und den Jobnamen eintragen. Wichtig ist dabei, dass der BODS-Job nur ein Ziel (die BW-DataSource) hat:

3. Job in BODS ausführen

Sowohl der Job in BODS als auch alle Requests in BW haben den Status Grün.