Datumsformat konvertieren: Oracle DB – DB Connect – SAP BW
Bei der Replikation von Daten aus non-SAP-Quellsystemen in das SAP BW treten immer wieder Herausforderungen mit dem Datumsformat auf. So auch bei der Extraktion eines Datumsfelds aus einer Oracle DB via DB Connect.
Das Problem mit dem Datumsformat
Sie haben eine Oracle DB und möchten ein Datumsfeld DATE nach SAP BW exportieren – und zwar kompatibel zum DDIC-Typ DATS.
Das Oracle Datumsformat hat mit DD-MMM-YY genau 7 Characters (z.B. 06-MAR-17). Anders beim SAP-internen Datumsformt: Datenelemente wie SYDATUM, Domains wie SYDATS und Datentypen wie DATS zeigen uns das klassische SAP-Datumsformat YYYYMMDD mit 8 Characters. Wenn die Felder in dieser Form einander zugewiesen werden entstehen unbrauchbare Daten. In der PSA tauchen mit diesem Vorgehen verrückte Werte wie -1.UN.12-J auf, was für den 12.Juni des letzten Jahres stehen soll.
Fazit: Unbrauchbar.
Die Lösung
Ich möchte Ihnen hier einige Lösungsvorschläge aufzeigen und diese auch bewerten.
Zum Ersten gibt es die Möglichkeit, die im BW ankommenden werte via Parsing so umzugestalten, dass sie zum SAP-internen Standard passen. Das wird die anfälligste und auch mühselige Lösung sein.
Zum Zweiten gibt es die Möglichkeit, verschiedene Konvertierungsroutinen bei der Übertragung einzustellen. SAP hält im Standard bereits Conversion-Exits bereit, mit denen ein Datum umformatiert werden kann.
- CONVERSION_EXIT_JPDAT_OUTPUT
- CONVERSION_EXIT_PDATE_INPUT
- CONVERSION_EXIT_PDATE_OUTPUT
- CONVERSION_EXIT_IDATE_INPUT
- CONVERSION_EXIT_IDATE_OUTPUT
- CONVERSION_EXIT_LDATE_OUTPUT
- CONVERSION_EXIT_SDATE_OUTPUT
- CONVERSION_EXIT_*
Versuchen Sie, ob eine der o.g. Möglichkeiten bei Ihnen funktioniert.
Als letzte – und sauberste – Variante führt uns jedoch eine Anpassung auf Seite der Oracle DB sicher zum Ziel.
Das Datumsformat in welchem die Daten von Oracle geliefert werden, hängt vom eingestellten NLS (National Language Settings) in der DB Connection ab. Wir können die Oracle DB jedoch unabhängig vom eingestellten NLS zwingen, das Datum im von SAP definierten Format auszugeben. Folgend möchte ich aufzeigen, wie diese – aus meiner Sicht beste – Variante umzusetzen ist.
Organigramm in SAP Fiori
mindsquare org chart: Ihre Möglichkeit Ihre Organisation schnell und flexibel mit Daten aus dem SAP HCM abzubilden. Schaffen Sie den Überblick
Technische Umsetzung
Um die Ergebnisse der SQL-Abfrage auf die Oracle DB im SAP-internen Format zu erhalten, kann wie folgt vorgegangen werden.
Das SELECT-Statement muss um die Funktion TO_CHAR erweitert werden, um das Format für die Extraktion auf den SAP-internen Standard anzupassen. Im besten Fall sollte eine eigene View in Oracle erstellt werden, um die TO_CHAR-Funktion zu nutzen. Das SELECT-Statement würde in diesem Fall wie folgt aussehen:
select to_char(‘YYYYMMDD’) as dat from … where… ;
Im Ergebnis erhalten Sie das Result-Set im von ihnen definierten Datumsformat YYYYMMDD und können es problemlos auf SAP BW-Seite in Empfang nehmen.
Weitere Informationen zur Anbindung von Oracle DB via DB Connect erhalten Sie über die SAP-Note: “518241 – DB Connect in BW for an external Oracle database”.