Ansicht
Dokumentation

SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up

SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up

General Data in Customer Master   BAL Application Log Documentation  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Erzeugt aus mehreren Eingabelisten eine komplette Liste mit #if...-Logik zum Einlesen durch R3up . Dabei kann eine Tiefe bis zu 3 Ebenen (d.h. bis zu 3 Ersetzungsvariablen) bearbeitet werden.

Die einzulesenden Textdateien werden in EINEM beliebigen Verzeichnis auf Betriebssystemebene erwartet.

Beispiel

Der Aufruf dieses Funktionsbausteins mit folgenden Werten:

INPUTPATH /usr/sap/trans4/tmp/
INPUTFILEEXT TBL
SUBST1 SAPSTRL
SUBST2 DBTYPE
SUBST3 DBVERS
FUNC1 exact
FUNC2 exact
FUNC3 range
OUTPUTFILE /usr/sap/trans4/tmp/CNVTABLS.LST
WRITE_LOGFILE X

bedeutet:

Alle Dateien /usr/sap/trans4/tmp/*.TBL werden eingelesen und anhand der 3 angegebenen R3up-Ersetzungsvariablen SAPSTRL, DBTYPE und DBVERS gruppiert ausgewertet. Die Gesamtausgabedatei heißt /usr/sap/trans4/tmp/CNVTABLS.LST. Bei der Generierung der #if... Logik wird berücksichtigt, daß auf die Variablen SAPSTRL und DBTYPE exakt verglichen wird, während für die Variable DBVERS eine Bereichsabfrage erzeugt wird. Ein kurzes Protokoll über die benutzten Dateien wird im Ausgabepfad erzeugt. Die Protokolldatei heißt dabei - bis auf die letzten 3 Zeichen, welche durch die Zeichenfolge 'LOG' ersetzt werden - genau wie die Ausgabedatei, aus /usr/sap/put/bin/TABLE.LST wird also der Protokolldateiname /usr/sap/put/bin/TABLE.LOG gemacht. Schreibprobleme auf die Protokolldatei werden unterdrückt, um die Stabilität des Bausteins zu gewährleisten.

Hinweise

Namen der Eingabedateien:

Zur Identifikation müssen die zusammengehörigen Dateien jeweils dieselbe eindeutige Fileextension haben.

Die Dateinamen haben KEINE FUNKTIONALE Bedeutung - die Identifikation geschieht nur durch die Dateiextension und die enthaltenen Headerdaten.

Empfehlung: besonders im Hinblick auf viele zu erwartende anfallende Dateien aus verschiedenen Upgradetests würde sich ein 10 stelliger Timestamp wohl am besten eignen, um vor Überschreibern sicher zu sein:

Ein mögliches Format wäre also : ., z.B. 9708130015.TBL. (dies entspricht auch der 10+3 Beschränkung der AS/400)

Struktur der Eingabedateien:

Die Eingabedateien sollen vom R3up erzeugt werden. Das Format: einfache Textdatei. Am Anfang steht jeweils in einer Zeile die Zuweisung einer Ersetzungsvariablen zum aktuellen Wert (ohne '$' und Klammern), also z.B

SAPSTRL=30C
DBTYPE=ORACLE
DBVERS=7.3.1.6.0

Wichtig dabei: die Variable steht links, direkt (ohne Leerzeichen) gefolgt vom '=' und dann ebenfalls direkt der Wert.

Nachdem alle notwendigen Ersetzungsvariablen benannt sind, muß ein Trennzeichen folgen, um die Kopfdaten von den Listdaten zu unterscheiden:

Dazu dient ein String '------------....' (40 oder mehr '-') der zwischen den Variablen und den Listdaten in einer einzelnen Zeile steht. In den folgenden Zeilen stehen dann die gewünschten Werte - jeweils einer pro Zeile - bis zu einer Breite von 80 Zeichen. Leezeilen werden ignoriert.

IMPORT-Parameter:

  • INPUTPATH Pfad zu den Eingabedateien
  • INPUTFILEEXT Fileextension (z.B. 'TBL' für Dateien *.TBL)
  • SUBST1 Ersetzungsvariable 1 (Bsp:'SAPSTRL') - obligatorisch
  • SUBST2 Ersetzungsvariable 2 (Bsp:'DBTYPE') - optional
  • SUBST3 Ersetzungsvariable 3 (Bsp:'DBVERS') - optional
  • FUNC1 'exact' oder 'range'
  • FUNC2 'exact' oder 'range'
  • FUNC3 'exact' oder 'range'
  • OUTPUTFILE Name der Ausgabedatei (mit komplettem Pfad)
  • WRITE_LOGFILE 'X' oder ' ' (bei 'X' wird Protokolldatei erzeugt)

Das Füllen von SUBST1 ist obligatorisch. Zusätzlich können mit SUBST2 und SUBT3 noch 2 weitere Ersetzungvariablen als Sortierkriterium angegeben werden. Die Angabe von SUBST3 setzt dabei die Angabe von SUBST2 voraus. Ist SUBST2 nicht oder nicht korrekt gefüllt, so wird eine in SUBST3 eingetragene Ersetzungsvariable ignoriert und die Ausgabe wird entsprechend SUBST1 sortiert generiert.

Die FUNC Felder beziehen sich auf die angegebenen SUBST Felder: Wird 'exact' gewählt, so wird eine #if... Zeile mit einem '==' Vergleich erzeugt. Bei 'range' wird jeweils auf '<=' geprüft (dies ist notwendig, wenn noch nicht alle Daten aller möglicher Varianten vorliegen - z.B. noch nicht alle Datenbankversionen, etc.)

Funktionsweise:

Einlesen einer Dateiliste anhand der gemachten Eingaben (Pfad und Extension) - plattformunabhängig - vom Betriebssystem. Dazu wird der Funktionsbaustein SUBST_GET_FILE_LIST benutzt.

Untersuchung der ermittelten Dateien auf gültige Kopfdaten: nur wenn die richtigen (in SUBST1, SUBST2 und SUBST3 angegebenen) Ersetzungsvariablen in den Textdateien vollständig mit Werten belegt sind, wir diese Textdatei zur Eingabe benutzt. Sind nicht alle Ersetzungsvariablen in einer Textdatei mit Werten belegt, so wird diese Textdatei ignoriert. "Zuviel" belegte bzw. genannte Ersetzungsvariablen in Textdateien werden dabei einfach ignoriert. Wurde also z.B. beim Funktionsbaustein nur SUBST1 mit SAPSTRL gefüllt, die benutzten Eingabedateien enthalten außerdem aber noch 2 weitere Angaben, so wird die Ausgabedatei letzlich nur nach SUBST1 gruppiert generiert - weitere Differenzen werden unterdrückt.

Ausgaben:

Aus den Eingabedateien zusammengemischte und aufbereitete Ausgabedatei entspr. Eingabeparameter.

Ausnahmen im Fehlerfall:

  • NO_INPUT_FILE_FOUND keine Eingabedatei im angeg. Pfad
  • COULD_NOT_READ_INPUT_FILE mind. eine Eing.datei nicht lesbar
  • COULD_NOT_WRITE_OUTPUT_FILE Schreibprobleme auf
  • ERROR_OPEN_PATH kommt, wenn das Ermitteln der
Dateiliste schon fehlerhaft ist





Parameter

FUNC1
FUNC2
FUNC3
INPUTFILEEXT
INPUTPATH
OUTPUTFILE
SUBST1
SUBST2
SUBST3
WRITE_LOGFILE

Ausnahmen

COULD_NOT_READ_INPUT_FILE
COULD_NOT_WRITE_OUTPUT_FILE
ERROR_OPEN_PATH
NO_INPUT_FILE_FOUND

Funktionsgruppe

SAUS

Vendor Master (General Section)   CPI1466 during Backup  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 7819 Date: 20240427 Time: 174019     sap01-206 ( 126 ms )