Schreibzugriff aus SAP BW auf eine Oracle Datenbank: Unterschiede zwischen klassischem BW und BW4HANA

In diesem Blogeintrag wird anhand einer Oracle-Datenbank beschrieben, wie ein Schreibbefehl früher per SAP BW und heute in SAP BW4HANA implementiert werden kann.

Unter gewissen Umständen kann es notwendig sein aus dem SAP BW heraus einen Schreibbefehl in eine Quelldatenbank abzusetzen, bspw. um einen Zeitstempel zurückzuschreiben. In diesem Blogeintrag wird anhand einer Oracle-Datenbank beschrieben, wie ein Schreibbefehl früher per SAP BW und heute in SAP BW4HANA implementiert werden kann.

 

Warnhinweis: Vor der Umsetzung des im Folgenden beschriebenen Schreibzugriffs ist auf jeden Fall die organisatorische Freigabe von der Quellsystembetreuung einholen. Auch die Berechtigungen des Datenbank-Users sollten vorab geklärt und ggf. eingeschränkt werden um den Schreibzugriff von vorneherein ausschließlich dort zu ermöglich, wo es vorgesehen ist.

 

 

1)     Klassisches Vorgehen in SAP BW

Mit einem traditionellen SAP BW war das Zurückschreiben kein Problem, wenn die Quelldatenbank (z.B. Oracle) per DBCONNECT am SAP BW angebunden war. Über die ABAP-Klassen CL_SQL_CONNECTION und CL_SQL_STATEMENT konnte man eine Verbindung zur im BW hinterlegten Quelldatenbank aufbauen und je nach Anforderung per SQL sowohl Read- als auch Write-Statements ausführen.

 

Coding-Beispiel im klassischem SAP BW, um SQL-Statements auszuführen:

 

 

2)     Umsetzung in BW/4HANA

Mit BW/4HANA steht der Quellsystemtyp DBCONNECT nicht mehr zur Verfügung. Ein Standardvorgehen wäre nun via Smart Data Integration (SDI), DP-Agent und Oracle Log Reader Adapter auf die Quell-Datenbank zuzugreifen. Der entscheidende Unterschied ist aber, dass man in einem ABAP-Programm das SDI-Quellsystem nicht direkt als SQL-Verbindung ansprechen kann, so wie es bei DBCONNECT der Fall war.

Deswegen ist nun folgendes Vorgehen notwendig: Die Datenbanktabelle (TABLE_A im Beispiel oben) muss im BW/4HANA als Virtual Table auf der HANA-Datenbank angelegt und für den BW-Systemuser berechtigt werden. Danach können in einer kundeneigenen AMDP-Klasse durch die Funktion EXECUTE IMMEDIATE SQL-Statements auf die Virtual Table ausgeführt werden.

Beispiel-Definition der neuen AMDP-Klasse:

 

 

Beispiel-Implementierung der neuen AMDP-Klasse:

 

Die AMDP-Klasse wiederum kann aus dem gleichen ABAP-Programm angesprochen werden, das bisher die DBCONNECT Verbindung verwendet hatte:

  

Angepasstes ABAP-Coding (Vergleich mit erstem Beispiel s. oben):