Patch, der für eine bei Integration vorgegebene Liste von Ordnern installiert werden kann. Diese Liste enthält in der Regel den Supervisor-Ordner. In den meisten Fällen (auch bei Spezial- bzw. Vertikalentwicklungen) ist der Standard-Patch der zu verwendende Patch. Die Auslieferung von Spezial- und Vertikalentwicklungen wird nicht über den Patchtyp, sondern über eine Liste von Aktivitätscodes gesteuert, die einer entsprechenden Tabelle zu entnehmen sind.
Patches, die Dokumentationselemente enthalten, werden auf eine etwas spezielle Art behandelt, wie im entsprechenden Anhang beschrieben.
Tabelle Sprachen
| Diese Tabelle gibt die zu patchenden Sprachen an. Alle Texte im Daten-Dictionary (Code vom Typ ATX) werden in einer separaten Tabelle gespeichert (Tabelle ATEXTE) und sind über eine Nummer identifizierbar (diese Nummer ist für Standardtexte kleiner als 100.000, für andere Texte größer als 100.000). Diese Texte werden per Patch in verschiedene Sprachen übersetzt (die Nummern können sich unterscheiden und werden nicht übersetzt). Der vorliegenden Tabelle ist die Liste aller Sprachen zu entnehmen, in denen Texte integriert werden können. |
Blocknummer 6
| Mit diesem zu Informationszwecken erfassten Kommentar wird die Patch-Datei beschrieben (bezüglich Zweck und Inhalt). Der Kommentar wird in der Logdatei zur Patch-Integration angezeigt. |
| Name des Ordners, aus dem die Patchelemente ausgegeben werden. |
| Durch den Mindestversionscode wird verhindert, dass ein Patch in eine ältere Anwendungsversion intergriert wird. |
| Dieses Feld identifiziert den Artikel, aus dem der Patch ausgegeben wird. Dieses Feld kann nicht erfasst werden. |
Tabelle Objekte
| In dieser Tabelle werden die patchbaren Objekte aufgelistet. Die Liste wird über einen Objekttyp und einen Namen beschrieben. Im Anhang findet sich eine Definition der verschiedenen Typen sowie die Beschreibung ihrer Namen. |
| Hier wird der Schlüssel des Elements erfasst, dessen Code oder Datenzusatz (im Falle eines Datenpatches) erfasst wurde. Besteht der Schlüssel des zu patchenden Datenblatts aus mehreren Teilen, werden diese mit dem Tilde-Zeichen (~) voneinander getrennt. |
| Ermöglicht die Definition einer Bezeichnung für jeden Datensatz. |
Tabelle Aktivitätscode
| In dieser Tabelle kann eine Liste von speziellen oder vertikalen, mit X, Y oder Z beginnenden Aktivitätscodes erfasst werden. Soll ein Patch mit Entwicklungen dieser Typen integriert werden, müssen die betroffenen Aktivitätscodes angegeben werden. Dictionary-Elemente, deren Aktivitätscodes nicht aufgelistet sind, werden bei der Patch-Integration übergangen. Diese Vorsichtsmaßnahme ist erforderlich, da sonst Objekte mit spezifischem oder vertikalem Aktivitätscode von Standard-Patches aktualisiert werden könnten. Werden in der Kopfzeile eines Standardpatches keine spezifischen Aktivitätscodes definiert, erfolgt die Verarbeitung nämlich genau auf diese Art. Die Aktivitätscodes sind also nicht zum Filtern der Patch-Objektausgabe gedacht, sondern zur Markierung der Elemente mit den spezifischen Aktivitätscodes, die bei der Patch-Integration aktualisiert werden. Das Laden der Elemente mit diesen Aktivitätscodes kann über eine Aktion über das Symbol Aktionenauf Ebene der Tabelle, die den Patch-Inhalt definiert, erfolgen. |
Schließen
Symbol Aktionen
Mit dieser Aktion können Sie alle Ordnerelemente mit den in der entsprechenden Tabelle aufgelisteten Aktivitätscodes in die Tabelle laden.
Mit dieser Aktion können Sie prüfen, ob die aktuelle Position mit der im anderen Ordner übereinstimmt. Hierfür öffnet sich ein Fenster, in dem die beiden Ordnercodes erfasst werden können. Nach Erfassung der Daten in diesem Fenster wird in einem Logfenster das Ergebnis angezeigt. Wird der Elementname nicht als abweichend erwähnt, sind die beiden Elemente in den verglichenen Ordnern identisch.
Es gibt Objekttypen, zu denen kein Vergleich möglich ist; in diesem Fall wird im Logfenster eine Meldung angezeigt.
Mit dieser Aktion können Sie prüfen, ob sämtliche Patchobjekte in den beiden Ordnern übereinstimmen. Hierfür öffnet sich ein Fenster, in dem die beiden Ordnercodes erfasst werden können. Nach Erfassung der Daten in diesem Fenster wird in einem Logfenster das Ergebnis angezeigt.
Mit dieser Aktion können Sie eine Parametrisierungsvorlage aufrufen, um eine Liste von Patches vom Typ AAA anzugeben (eine Position pro in der Maske angegebenen Datenmodell).
Im Gegensatz zur Funktionsweise im Rahmen der Funktion 'Kopie Parametrisierung' werden an dieser Stelle lediglich AAA-Positionen generiert (darunter nicht die modellbeschreibende APH-Position). Darüber hinaus wird in diesem Schritt kein Rechtsordnungscode erfasst, und jeglicher Filter auf die Rechtsordnung wäre an dieser Stelle fehl am Platz.
Es ist hingegen möglich, eine AAA-Position für ein einheitliches Datenmodell zu generieren, indem Sie auf Datenmodell über das Symbol Aktionenim Feld Objektnameklicken. Es öffnet sich ein Auswahlfenster, in dem Sie das Modell, die Rechtsordnung, den Schlüssel oder die Auswahlformel auswählen können, um eine Position mit allen Elementen anzulegen.
Schließen
Diese Tabelle ermöglicht die Erfassung einer Liste der zu patchenden Objekte. Die Liste wird über einen Objekttyp und einen Namen beschrieben. Im Folgenden eine Definition der verschiedenen Typen sowie die Bedeutung ihrer Namen. Die Spalte Rang gibt die Reihenfolge der Elementtypen in der Patchdatei an (siehe Absatz unten). Elemente mit Rangnummer 100in der Tabelle werden stets am Ende des Patches positioniert (alphabetisch nach Elementcode sortiert).
Code | Bedeutung | Name | Rang |
AAA | Positionen aus einer Parametrisierungsvorlage | Sonderformat, siehe entsprechenden Absatz | 100 |
ABA | Code Wiederkehrende Aufgabe | 46 | |
ABF | Tabellencode | 54 | |
ABG | Gruppencode | 47 | |
ABI | Dimension BI | Dimensionscode | 55 |
ABM | Data Mart BI | Data-Mart-Code | 56 |
ABO | Business Objects-Reports | Reportcode | 58 |
ABT | Aufgabencode | 45 | |
ABV | Regelcode | 57 | |
ACL | Tabellencode | 18 | |
ACN | Anzeigecode | 36 | |
ACS | Verarbeitet als Bedingung (CODACS = "Wert") | 14 | |
ACT | Aktionscode | 16 | |
ACV | Definition eines Aktivitätscodes | Aktivitätscode | 1 |
ADC | Verarbeitungsbeschreibung (Dictionary) | Verarbeitungsname | 9 |
ADF | Typ ~ Elementcode | 50 | |
ADI | Inhalt einer sonstigen Tabelle | Tabellennummer | 24 |
ADO | Funktionshilfe (alle Absätze) | Typ ~ Hilfecode | 49 |
ADP | Parameter (mit Definition und Wert, sofern auf allgemeiner Ebene vorhanden) | Parametercode | 32 |
ADV | Parametrisierung einer sonstigen Tabelle | Tabellennummer | 23 |
ADX | Verarbeitung (nur in kompilierter Form) | Name der Verarbeitungsdatei | 11 |
ADZ | Hilfecode | 48 | |
AEN | Verarbeitet als Bedingung (CODACC="Wert") | 35 | |
AFC | Funktionscode | 17 | |
AGB | Variablenname | 20 | |
AHH | Hierarchie BI | Hierarchiecode | 59 |
AHI | Formelcode | 7 | |
AIIe | Code Bedingung | 60 | |
ALH | Abfragecode | 51 | |
ALQ | SQL-Abfragecode | 52 | |
ALT | Abfragecode | 53 | |
AMK | Maskencode | 28 | |
AML | Nummer lokales Menü | 2 | |
ANG | Navigationscode | 10 | |
ANM | Definition eines Nummernkreises | Nummernkreiscode | 15 |
ANT | Objektcode für Widget | 65 | |
AOB | Objektcode | 30 | |
AOE | Vorlagencode | 34 | |
AOP | Objektcode | 31 | |
APH | Vorlagencode | 100 | |
APR | Prozesscode | 63 | |
ARP | Reportdefinition im Dictionary | Reportcode | 29 |
ASL | Verarbeitet als Bedingung (COD="Wert") | 19 | |
ASU | Beschreibung eines Unterprogramms im Dictionary | Name des Unterprogramms | 21 |
ASY | Stilcode | 61 | |
ATB | Tabellendefinition (der Inhalt wird nicht übertragen, die Aktualisierung der Struktur erfolgt ohne Verlust der gemeinsamen Daten) | Tabellencode | 25 |
ATN | Transaktionen | Transaktionscode | 8 |
ATY | Typcode | 22 | |
AUR | URL-Code | 27 | |
AVW | Ansichtscode | 26 | |
AWA | Workflow-Regelcode | 43 | |
AWE | Veröffentlichungsname | 64 | |
AWI | Fenstercode | 33 | |
AWM | Workflow Datenmodell | Vorlagencode | 41 |
AWR | Workflow Zuweisungsregel | Code Zuweisungsregel | 42 |
AWW | Workflow Parameter Planungsmaske Arbeitsbereich | Code Planungsmaske Arbeitsbereich | 44 |
BIA | BIAR-Objekte | Objektcode | 4 |
ELT | Client-Schnittstellenelement (xsl, Bild, sonstige Datei) | Dateipfad | 3 |
ETA | Report Crystal Reports (Dateierweiterung rpt) | Reportname | 13 |
EXE | Anfrage Verarbeitungsausführung | Verarbeitungsname | 6 |
GAU | Belegcode | 40 | |
PS1 | Triggercode | 37 | |
PS2 | Statistikcode | 38 | |
TAB | Vollständige Struktur und vollständiger Inhalt einer Tabelle (außer "Dictionary"-Definition). | Tabellencode | 39 |
TFO | Formelcode | 62 | |
TRT | Verarbeitungsquelle (Die Verarbeitung wird bei Patch-Installation kompiliert) | Verarbeitungsname | 12 |
TXT | Textdatei (im TXT-Verzeichnis) | Textname | 5 |
Tabellenabkürzung | Teile des Tabelleninhalts | Ausgabebedingung (ausgedrückt als Where-Klausel) | 100 |
Mit dem Code TABkönnen Tabellendaten über ein erneutes Laden der Datenbank mitsamt ihrer Struktur und ihren Daten übertragen werden. Die Dictionary-Elemente dieser Tabelle werden hingegen nicht angelegt, weswegen die Tabelle nicht sichtbar ist. Dieser Code eignet sich also gut zum erneuten Laden einer bereits im zu patchenden Ordner angelegten Tabelle mit unveränderter Struktur. In allen anderen Fällen muss die Patch-Definition um zwei Zeilen ergänzt werden: die erste betrifft die Definition der Tabelle (ATB XXXXX), die zweite den Inhalte (TAB XXXXX). Sollten die beiden Zeilen in umgekehrter Reihenfolge eingegeben werden, werden sie von der Patch-Funktion umgeordnet. Bei Patch-Integration wird die Tabelle im Dictionary und ggf. in der Datenbank angelegt (falls sie dort bereits vorhanden ist, wird ihre Struktur ggf. aktualisiert). Danach wird die Datentabelle erneut geladen.
Der Inhalt einer Tabelle kann teilweise übertragen werden, wenn in der Spalte 'Typ' die Tabellenabkürzung und in der Spalte 'Name' eine logische Bedingung für die Ausgabe des Ursprungordners und für die Integration in den Zielordner formuliert wird. Wichtiger Hinweis: So ausgegebene Daten können mit den selben Schlüsseln vorhandene Daten verändern oder neue Daten anlegen. Aus Sicherheitsgründen werden aber bei der Patch-Integration niemals Daten gelöscht. So zum Beispiel in der folgenden Situation für die Ländertabelle (Abkürzung TCY):
Ursprungordner | Zielordner | ||
Ländercode | Ländername | Ländercode | Ländername |
AD | Andorra | AD | Andorra |
AE | Vereinigte Arabische Emirate | AF | Afghanistan |
AL | Albanien | AL | Deutschland |
AR | Argentinien | AU | Australien |
BE | Belgien | BE | Belgien |
… | … |
Wird im Patch eine Zeile mit TCY und der Bedingung CRY="AL" erfasst, enthält der Patch nur die Zeile für Albanien. Bei der Integration der Patches in den Zielordner wird erneut AL geschrieben. Dieses AL steht für Deutschland und ersetzt Albanien.
Wird am Patch eine Zeile mit TCY und der Bedingung (CRY,"A") erfasst, enthält der Patch die vier Zeilen AD, AE, AF und AR. Bei der Integration werden dann die Datensätze AE (Vereinigte Arabische Emirate) und AR (Argentinien) angelegt, AL (Deutschland) durch AL (Albanien) ersetzt und A (Afghanistan) sowie AU (Australien) unverändert gelassen. Letztere wurden noch nicht ausgeliefert, befinden sich aber schon im Zielordner.
Dasselbe gilt für Patches mit einer Zeile mit TCY und der Bedingung (CRY,"AD", "AE", "AL"). Der einzige Unterschied wäre, dass AR (Argentinien) nicht übertragen würde.
Daten können nur wie folgt gelöscht werden:
Ein Sonderfall sollte erwähnt werden: der Code EXE, der es ermöglicht, den Namen einer auszuführenden Verarbeitung oder eines Skripts anzugeben. Trotz seiner Rangnummer wird diese Verarbeitung am Ende der Patch-Integration ausgeführt (sie kann bereits vorher existieren oder mit dem Patch ausgeliefert worden sein).
Die Verarbeitung muss ein PATCH-Unterprogramm mit einem dem Ordnercode entsprechenden Parameter integrieren. Dieses Unterprogramm wird dann ausgeführt. Im obigen Fall erhält man folgendes Programm:
Subprog PATCH(NOMDOS)
Value Char NOMDOS
Local File =NOMDOS+".TABCOUNTRY" [TCU]
Trbegin [TCU]
Delete [TCU] Where pat(CRY,"A*")=1 & find(CRY,"AD","AE","AL")=0
Commit
End
Wie man oben sehen kann, müssen die Tabellen in diesem Unterprogramm unter Berücksichtigung ihrer Deklaration in einem Ordner deklariert werden, auch wenn es sich bei diesem nicht unbedingt um den aktuellen Ordner handeln muss (dies wird durch die Syntax Local File = NOMDOS + ".NOMTABLE" sichergestellt).
Werden Patches auf Vorlagenelementen der Benutzerschnittstelle realisiert (Vorlagemasken zur Anlage von Transaktionsfenstern), ist eine erneute Freigabe der betroffenen Masken erforderlich.
Diese erneute Freigabe kann während der Wartung bei Ausführung der entsprechenden Verarbeitung ausgeführt werden. Im Folgenden werden die aufzurufenden Standardverarbeitungen nach Typ des gepatchten Elements beschrieben:
Gepatchtes Element | Aufzurufende | Ergebnis |
Maske für eine parametrisierbare Anzeige | SUBGTC | Freigabe aller Anzeigemasken |
Präsentationsstile | SUBASY | Stilgenerierung |
Systemtransaktion | SUBAMI | Freigabe der Systemtransaktionen |
Statistik-Parameter | SUBPS2 | Erneute Freigabe aller Statistiken |
Basismaske einer Transaktion auf Objekt XXX | SUBXXX | Erneute Freigabe der Transaktionen dieses Objekts |
Dieser Funktionalitätstyp kann auch spezifisch realisiert werden (hierfür ist lediglich, wie oben beschrieben, das Unterprogramm PATCH hinzuzufügen).
Die Datenstruktur der Dokumentation ist relativ speziell. Standardmäßig werden bei Anlage und erneuter Freigabe von Ordnern folgende Regeln angewendet:
Für Patch-Integrationen vom Typ Doc (Typ ADO), gilt Folgendes:
Bei der Patch-Integration wird bei Patchdateien mit numerischer Sequenz im Dateinamen geprüft, ob die Integration der Dateien sequenziell erfolgte. Die Patchdateien sollten in der Form X_yyyy_zzz.dat benannt werden, wobei gilt:
Entspricht der Dateiname diesem Muster, werden bei Integration von Pachdateien in ein Verzeichnis folgende Prüfungen durchgeführt:
Bei Anlage einer Patchdatei müssen die darin enthaltenen Patchelemente so gewählt werden, dass der Ordner kohärent bleibt. Wird beispielsweise per Patch eine neue Funktion angelegt, muss der Patch auch alle zugehörigen Elemente wie Fenster, Maske, Tabelle und / oder Verarbeitungen enthalten.
Um Fehler bei der Integration zu vermeiden, werden die Patchelemente von der Patch-Anlagefunktion in eine bestimmte Reihenfolge gebracht. So wird beispielsweise beim Versuch, ein Fenster vor den zugehörigen Masken zu integrieren, bei der Freigabe die Fehlermeldung Maske nicht vorhanden ausgegeben. So müssen vor den Masken und Tabellen immer zunächst die Datentypen integriert werden, vor den Fenstern die Masken etc.
Die bei der Patchgenerierung zu beachtende Reihenfolge ist dabei der nachstehenden Tabelle zu entnehmen. Diese Reihenfolge wird auch von der Funktion Automatischer Patch vorgeschlagen.
Jedoch können dennoch immer wieder Probleme auftreten - eine völlig konfliktfreie Reihenfolgendefinition ist nicht möglich. Beispielsweise kann ein Datentyp eine Aktion referenzieren, diese Aktion kann ein Fenster referenzieren, das wiederum eine Maske referenzieren kann, der genau diesen Datentyp referenzieren kann. Um solche (seltenen) Konflikte aufzulösen, kann es erforderlich sein, die Patchdatei in zwei Dateien aufzuteilen. Die erste lieferte dabei alle Elemente mit einem die Aktion nicht referenzierenden Datentyp, die zweite den Datentyp der Aktion.
Wenn Sie einen Patch mit Dictionary-Elementen installieren, werden bestimmte Felder als parametrisierbare Dictionary-Elemente betrachtet. Sie bleiben auch über den Schutz durch ihren Aktivitätscode hinaus unverändert. Dies gilt z.B. für das Standardempfängerkonto in einem Report.
Diese geschützten Felder sind im Technischen Anhang aufgeführt.
Ein Patch vom Typ AAA entspricht einer Position aus einer Parametrisierungsvorlage. Für den Elementcode benutzt diese Position ein spezielles Format. Hierbei handelt es sich um eines der beiden folgenden Formate:
MODELE~CODE_LEG~CODE_TRS~='FORMULE_SELECTION'
MODELE~CODE_LEG~CODE_TRS~CLE~SOUS_CLE~SOUS_SOUS_CLE...
In diesen Zeilen:
Standardmäßig sind der Funktion folgende Reports zugeordnet :
PRTSCR : Druck Maske
Dies kann durch geeignete Parameter geändert werden.
Diese Funktion kann im Batch gestartet werden,. Zu diesem Zweck ZPATCHC ist die Standardaufgabe vorgesehen.
Während der Erfassung können außer den generischen Meldungen folgende Fehlermeldungen auftreten: :
Der Zugriffspfad auf die Patchdatei existiert nicht
Der Objekttyp entspricht weder einem vordefinierten Objekttyp, noch der Abkürzung einer vorhandenen Tabelle.
Es wurde versucht, Daten aus einem nicht vorhandenen Dictionary auszugeben.
Die Ausgabebedingung für die Ausgabe von Tabellendaten ist syntaktisch nicht korrekt.