Wenn Sie Werte von bestimmten Attributtypen in den Ausgabedateien ändern oder zusätzliche Attributtypen erzeugen möchten, müssen Sie in einer XML-Konfigurationsdatei entsprechende Angaben machen. Der Name dieser XML-Konfigurationsdatei wird dem Kommandozeilenprogramm als Argument übergeben.
Diese Konfigurationsdatei enthält die Einstellungen zur Bearbeitung existierender Attributtypen sowie zur Erzeugung und Transformation neuer Attributtypen beim Erstellen der XML-Ausgabedatei(en).
Das Format der XML-Datei ist durch folgende DTD vorgegeben:
XML-Element bzw. XML-Attribut |
Bezeichnung |
---|---|
attributecalculation |
Konfiguration der Attributtransformation |
calculateattribute |
Erzeugung eines System-Event-Attributtyps bei erfolgreicher Ausführung der Transformations-vorschrift (operation) |
type |
Name des erzeugten System-Event-Attributtyps |
onfailure |
Abbruchverhalten bei Transformationsfehlschlag. Mögliche Werte: Standardwert: info |
operation |
Transformationsvorschrift, die durch eine Java-Klasse implementiert wird. Jede Operation hat genau einen Rückgabewert in Form einer Zeichenfolge. Schlägt die Operation fehl, wird nichts zurückgegeben. |
name |
Name der Operation |
constant |
Konstanter Wert, der bei der Transformation verwendet werden soll |
valueof |
Wert eines vorhandenen bzw. eines bereits transformierten Quellsystemattributtyps |
Die Elemente calculateattribute werden in der Reihenfolge abgearbeitet, in der sie in der Konfigurationsdatei angegeben sind. Verschachtelungen der XML-Elemente operation werden von innen nach außen bzw. oben nach unten bearbeitet.
Aus Effizienzgründen werden während einer Attributtransformation nur die Argumente ausgewertet, die für die Transformation unerlässlich sind. Beispielsweise wird in der Operation if_then_else nach Prüfung des ersten Arguments auf Wahrheit entweder nur das zweite Argument (then) oder das dritte Argument (else) abgearbeitet. Die Attributtransformation wird mit einer Fehlermeldung abgebrochen, sobald ein benötigtes Element keinen Wert zurückgeben kann.
Wenn das XML-Attribut onfailure in der Attributtransformationsdatei den Wert error hat, wird bei nicht erfolgreicher Attributerzeugung in der XML-Ausgabedatei das entsprechende System-Event mit dem Attribut EVENT_HAS_ATTRIBUTE_ERRORS=true versehen. Zusätzlich wird in der Protokolldatei eine Fehlermeldung erzeugt.
Wenn das XML-Attribut onfailure den Wert warn hat, wird bei nicht erfolgreicher Attributerzeugung in der XML-Ausgabedatei das entsprechende System-Event mit dem Attribut EVENT_HAS_ATTRIBUTE_WARNINGS=true versehen. Zusätzlich wird in der Protokolldatei eine Warnung erzeugt.
Warnung
Mit calculateattribute werden bei erfolgreicher Ausführung der entsprechenden Transformationsvorschriften (operation) Werte bereits vorhandener Attributtypen überschrieben. Es wird keine Warnung ausgegeben. Stellen Sie gegebenenfalls sicher, dass die Werte bereits vorhandener Attributtypen nicht versehentlich überschrieben werden, indem Sie mit einer geeigneten Transformationsvorschrift eine bedingte Existenzprüfung durchführen. Dazu können Sie die Operation exists (siehe Kapitel Operationen) verwenden.
Wenn die komplette Transformation eines Attributs abgebrochen wird, bleibt der bestehende Attributwert unverändert. Abhängig von Ihren Angaben zur Option onfailure wird eine entsprechende Meldung mit einem Verweis auf das erzeugte System-Event ausgegeben. Bei nolog erfolgt keine Protokollausgabe.
Beispiel
Der Auslesevorgang von Quellsystemdaten aus dem R/3-System und die anschließende Bearbeitung durch den XML-Generator haben folgenden Eintrag in der XML-Ausgabedatei event.xml erzeugt:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE eventlist SYSTEM "event.dtd">
<eventlist>
<event>
<attribute type="VBAP-VBELN">3866</attribute>
<attribute type="VBAP-POSNR">20</attribute>
<attribute type="VBAP-ERNAM">SCHMIDT</attribute>
<attribute type="VBAP-MATNR-MAKTX">100038</attribute>
<attribute type="VBAP-KWMENG">3</attribute>
</event>
</eventlist>
Durch folgende Angaben in der Attributtransformationsdatei attributetransform.xml können Sie die Wertdarstellung des Attributtyps VBAP-ERNAM so abändern, dass als neuer Wert die Konkatenation des ursprünglichen Werts mit einer konstanten Zeichenfolge verwendet wird:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE attributecalculation SYSTEM
"attributetransformation.dtd">
<attributecalculation>
<calculateattribute type="VBAP-ERNAM">
<operation name="concat">
<constant>Walter, "A" </constant>
<valueof>VBAP-ERNAM</valueof>
</operation>
</calculateattribute>
...
</attributecalculation>
Folgender Kommandozeilenaufruf erzeugt aus der ursprünglichen XML-Ausgabedatei unter Verwendung der o. g. Attributtransformationsdatei die erwünschte XML-Ausgabedatei:
runjdbc2ppm -systemconfig SysConfig.xml ides_doc_vdap -tableconfig TableConf.xml SD_C -begindate 01.01.2005 -enddate 31.01.2005 -calcconfig attributetransform.xml -outfile event -outfileencoding ISO-8859-1 -nozip
Der gleiche Eintrag wie oben sieht dann folgendermaßen aus:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE eventlist SYSTEM "event.dtd">
<eventlist>
<event>
<attribute type="VBAP-VBELN">3866</attribute>
<attribute type="VBAP-POSNR">20</attribute>
<attribute type="VBAP-ERNAM">Walter, "A" SCHMIDT
</attribute>
<attribute type="VBAP-MATNR-MAKTX">100038</attribute>
<attribute type="VBAP-KWMENG">3</attribute>
</event>
</eventlist>