FNDLOAD – EBS Setup Objekte exportieren und importieren

Die Oracle eBusiness Suite hat ein ganzes Arsenal an Setup Objekten, wo Implementierer und Anwender Daten eintragen können, die dann vom System für Steuerungen verwendet werden.

Dazu gehören reine Datenobjekte, die relevante Daten strukturiert speichern, damit sie dann im restlichen System verwendet werden können, wie zum Beipiel

  • Lookups
  • Werte Sets
  • Profiloptionen
  • Schlüssel Flexfelder
  • Beschreibende Flexfelder
  • Messages

Aber auch Ausführungs Objekte, die eine Benutzung bestimmter Funktionen erst ermöglichen, wie zum Beispiel

  • Hintergrundprogramme
  • Sets von Hintergrundprogrammen
  • Masken & Funktionen
  • Menüs
  • Hintergrund Prozessgruppen
  • Zuständigkeiten

Bis hin zu Daten, die dann das Standard System erweitern oder verändern können, wie zum Beispiel

  • Forms Personalisierung
  • CRM Metadata für so genannte Grids

Alle diese Daten können in das System eingetragen werden und steuern die Oracle eBusiness Suite.

Doch wenn man mehrere Systeme im Einsatz hat, wie z.B. ein Testsystem und ein Produktivsystem, wie kann man dann eigentlich diese Daten übertragen lassen?

Dafür hat Oracle vor vielen Jahren einen Mechanismus entwickelt, der sich FNDLOAD nennt und der bis heute in der eBusiness Suite im Einsatz ist.

Dabei werden die Daten der jeweiligen Objekte in eine Datei herunter geladen (üblicherweise mit der Endung .ldt, sprich „Loader Data Text“) und diese Dateien können dann transportiert und wieder hochgeladen werden.

Doch wie so oft bei Oracle Produkten ist dieser Mechanismus zwar technisch gut, er ist aber absolut unkomfortabel zu benutzen.

FNDLOAD Befehle werden nämlich direkt in der UNIX/Linux Shell (Kommandozeile) aufgerufen. Das sieht dann ungefähr so aus.

Upload eines Hintergrundprogrammes aus Datei „file_to_upload.ldt“:

$FND_TOP/bin/FNDLOAD $LOGIN@$DATABASE 0 Y UPLOAD $FND_TOP/patch/115/import/afcpprog.lct file_to_upload.ldt

Download eines Hintergrundprogrammes in die Datei file_to_download.ldt:

$FND_TOP/bin/FNDLOAD $LOGIN@$DATABASE 0 Y DOWNLOAD $FND_TOP/patch/115/import/afcpprog.lct file_to_download.ldt PROGRAM APPLICATION_SHORT_NAME=$APP_NAME CONCURRENT_PROGRAM_NAME=$OBJ_NAME

Es sieht komliziert aus und man muss offensichtlich die Werte für diverse Parameter kennen, damit man diese Funktion nutzen kann.

Sowohl Export als auch Import werden über den Aufruf des Programmes FNDLOAD ausgeführt, dass sich im FND Verzeichnis einer jeden Oracle eBusiness Suite Installation befindet. Um es nutzen zu können muss man sich auf dem so genannten „Apps Tier“, sprich dem Applikationsserver per SSH oder ähnlichem anmelden.

Im Beispiel oben nutzen wir die EBS spezifische Pfad-Variable $FND_TOP, die gesetzt ist, wenn man sich mit dem Oracle installationsuser anmeldet oder den folgenden Befehl verwendet:

source <install_dir>/EBSapps.env run

Dabei müsst ihr das Installations Verzeichnis wissen und es anstelle von <install_dir> eintragen. Wahlweise könnt ihr auch in Erfahrung bringen, in welchem Verzeichnis sich die FND Sourcen befinden. In jedem Fall müsst ihr aber in der Lage sein, auf das Verzeichnis, dass sich hinter $FND_TOP verbirgt und seine Unterverzeichnisse zuzugreifen.

Wenn ihr das geschafft habt, dann müsst ihr außerdem noch die Zugangsdaten für die Datenbank ermitteln. Dazu benötigt ihr das Passwort für den Benutzer APPS und den Datenbanknamen, der verwendet wird. Da der Benutzer „APPS“ sehr weitreichende Berechtigungen hat wird es übrigens oft schwer sein, von den Administratoren dieses Passwort zu bekommen.

Dann kann es mit der Verwendung von FNDLOAD losgehen.

Bei Export und Import müssen dann die folgenden Parameter angegeben werden:

  • Login Informationen:
    Hier müsst ihr den Datenbank Login angeben, z.B. APPS/APPSPASSWWORD@DATENBANKNAME
  • Concurrent Program Flags
    Die Werte „0“ und „Y“, die in der Doku immer als „Concurrent Program Flag“ bezeichnet werden. Wir haben hier nie einen anderen als diese beiden Werte gesehen, also packt sie einfach rein und fragt nicht weiter warum.
  • DOWNLOAD/UPLOAD
    Hiermit wird gesteuert, ob ihr exportieren oder importieren wollt. Für den Export nimmt man den Wert DOWNLOAD Für den Import den Wert UPLOAD
  • Kontroll-Datei/Control-File (.lct)
    Hier wird definiert, welche Art von Objekt exportiert werden soll. Es gibt eine ganze Liste dieser so genannten „Data Configuration Text“ Dateien mit der Endung .lct im Verzeichnis „$FND_TOP/patch/115/import/“ (immer das Verzeichnis /115/ egal auch für die Oracle eBusiness Suite version 12.x)
    Einige Beispiele von
    • Concurrent Programs: $FND_TOP/patch/115/import/afcpprog.lct
    • Profile Options: $FND_TOP/patch/115/import/afscprof.lct
    • Value Sets, Key Flexfields and Descriptive Flexfields: $FND_TOP/patch/115/import/afffload.lct

Beim Export müssen dann die folgenden weiteren Parameter angegeben werden:

  • Name/Pfad der Datei in die der Export geschrieben werden soll
  • Spezifische Parameter des jeweiligen Objektes. Für ein Hintergrundprogramm (Concurrent Program) sind da z.B. die folgenden:
    • PROGRAM:
      Definiert, dass ein Programm exportiert werden soll
    • PROGRAM APPLICATION_SHORT_NAME:
      Code der EBS Applikation zu der das Hintergrundprogramm gehört. Z.B. „AR“, es kann aber auch ein „%“ mitgegeben werden, das steht dann für alle Applikationen.
    • CONCURRENT_PROGRAM_NAME:
      Der kurze interne Name des Hintergrundprogrammes. Auch hier kann mit „%“ als Platzhalter gearbeitet werden, z.B. wenn man „XX_PROGRAM%“ angibt, werden alle Programme die mit „XX_PROGRAMM“ anfangen exportiert.

Beim Import müssen hingegen die folgenden weiteren Parameter angegeben werden:

  • Name/Pfad der Datei in die der Export geschrieben werden soll
  • Optional die folgenden Parameter zur Steuerung des Uploads:
    • CUSTOM_MODE=FORCE
      Der Custom Mode kontrolliert, wie der Import erfolgen soll. Normalerweise vergleicht FNDLOAD das Änderungsdatum (LAST_UPDATE_DATE) eines Objektes mit dem in der Datei existierenden LAST_UPDATE_DATE und ändert das Objekt nur dann, wenn es in der Datei neuer ist. Damit stellt man sicher, dass nicht eine alte Version importiert wird und die letzten Änderungen überschreibt. Mit CUSTOM_MODE=FORCE erfolgt diese Prüfung nicht. Allerdings hängt es immer von der benutzten Kontrolldatei (.lct) ab und nicht alle unterstützen diesen Parameter zu 100%. Wir passen üblicherweise lieber die LAST_UPDATE_DATE Werte in der Datendatei (.ldt) an und lassen diesen Parameter weg.
    • UPLOAD_MODE = NLS
      Wird verwendet, wenn man mehrsprachige Daten laden will. Auch hier ist die Benutzung abhängig von der verwendeten Kontroll Datei (.lct), denn nich alle unterstützen diesen Parameter. Ein Beispiel wo der Parameter verwendet wird ist die Datei „$FND_TOP/patch/115/import/afmdmsg.lct“, mit der Meldungen geladen werden. Um mehrsprachige Daten zu laden muss zunächst die Meldung in der Basissprache ohne den Parameter geladen werden. Danach kann man für jede Sprache eine weitere Datei mit dem Parameter „UPLOAD_MODE = NLS“ laden, um die Übersetzungen zu laden.

Mehr informationen direkt von Oracle bekommt ihr übrigens unter der folgenden URL:

https://docs.oracle.com/cd/E18727_01/doc.121/e12893/T174296T206863.htm

Wie ihr seht kann es etwas kompliziert werden, die FNDLOAD funktion zu verwenden. Außerdem werden Administratoren nicht gerne die Zugänge zu ihren Servern freigeben.

Damit man auch ohne diese Zugänge und das detaillierte Wissen über Linux Shell und die FNDLOAD parameter Objekte exportieren kann haben wir vor einigen Jahren ein kleines Programm erstellt mit dem man die Export Funktion für diverse Objekte direkt in der Oracle eBusiness Suite benutzen kann. Hier kann man dann Objekte einfach durch starten eines Hintergrundprogrammes exportieren.

Nun stellen wir es kostenlos zur Verfügung, damit auch ihr diese Erleichterung nutzen könnt. Zu finden ist es in dem folgenden Bitbucket Repository

https://bitbucket.org/heimann_it/apps-exporter/src/master/

oder ihr ladet hier die komplette ZIP Datei herunter, diese enthält alle benötigten Dateien um das Hintergrundprogramm zu installieren:

https://bitbucket.org/heimann_it/apps-exporter/src/master/zips/Apps-Exporter-0.9.9.zip

Ihr könnt das Programm herunterladen, es verwenden oder auch erweitern. Bitte habt Verständnis, dass wir für dieses kostenlose Programm keinerlei Gewährleistung übernehmen können.

Den Import haben wir derzeit nicht implementiert. Dies vor allem weil der Import in der Regel durch nachvollziehbare und dokumentierte Installationspakete erfolgen sollte, besonders auf Produktivinstanzen, und dann meißt durch Administratoren erfolgt.

Aber vielleicht werden wir uns irgendwann auch an den Import setzen und euch dann diesen auch hier zur Verfügung stellen.