Das Prozessfragment-Mapping definiert, welche Prozessfragmentdefinitionen zum Instanziieren der System-Event-Typen verwendet werden. Es kann durch beliebig viele, miteinander UND-verknüpfte Bedingungen (XML-Element condition) gesteuert werden.
Die Regeln für den Aufbau des Prozessfragment-Mapping in der XML- Mapping-Datei sind in folgendem Auszug der Datei eventmapping.dtd festgelegt:
Beispiel für die bedingte Prozessfragmenterzeugung (Dateiauszug):
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE eventmapping SYSTEM "eventmapping.dtd">
<eventmapping>
<processfragmentmapping>
<processfragment graphid="FRG_ORD_CREATED">
<condition eventattributetype="AUFTR_TYP">
<value>C</value>
</condition>
<condition eventattributetype="MAT_NR" logicaloperator="in">
<value>123456</value>
<value>56789</value>
<value>78901</value>
</condition>
</processfragment>
...
</processfragmentmapping>
<attributemapping>
...
</attributemapping>
</eventmapping>
Das Prozessfragment FRG_ORD_CREATED wird erzeugt, wenn die beiden folgenden Bedingungen erfüllt sind:
Das betreffende System-Event stellt einen Auftragsbeleg dar (Attribut AUFTR_TYP hat den Wert C).
Der Wert des System-Event-Attributs MAT_NR stimmt mit einer der angegebenen Materialnummern überein.
Eine Prozessfragmentdefinition muss keine Bedingungen enthalten. In diesem Fall wird für jedes importierte System-Event dieselbe angegebene Fragmentdefinition verwendet. Die Objekte des instanziierten Fragments werden beim anschließenden Attribut-Mapping spezifiziert.
Definition einer Prozessfragmentgruppe
Prozessfragmentdefinitionen können zu Gruppen zusammengefasst werden. Daraus ergeben sich folgende Vorteile:
Performance-Steigerung
Vereinfachte Erstellung der Prozessfragment-Mapping-Definitionen
Verbesserte Übersichtlichkeit
Die folgenden beiden Prozessfragmentdefinitionen sind in einer XML-Mapping-Datei enthalten:
<processfragment graphid="AUFTRAG_ANLEGEN">
<condition eventattributetype="AUFTR_TYP">
<value>C</value>
</condition>
<condition eventattributetype="CHARGEN_PFL" logicaloperator="neq">
<value>X</value>
</condition>
</processfragment>
<processfragment graphid="CHPLICHT_AUFTRAG_ANLEGEN">
<condition eventattributetype="AUFTR_TYP">
<value>C</value>
</condition>
<condition eventattributetype="CHARGEN_PFL">
<value>X</value>
</condition>
</processfragment>
Das erste Prozessfragment AUFTRAG_ANLEGEN wird für ein System-Event des Typs Auftragsbeleg erzeugt (Attributwert AUFTR_TYP ist gleich C), das nicht chargenpflichtig ist (Attributwert CHARGEN_PFL ist ungleich X).
Das zweite Prozessfragment CHPLICHT_AUFTRAG_ANLEGEN wird für ein System-Event des Typs Chargenpflichtiger Auftragsbeleg erzeugt (Attributwert AUFTR_TYP ist gleich C und Attributwert CHARGEN_PFL ist gleich X).
Die beiden gezeigten Prozessfragmente lassen sich in einer Prozessfragmentgruppe zusammenfassen:
<processfragmentgroup>
<condition eventattributetype="AUFTR_TYP">
<value>C</value>
</condition>
<processfragment graphid="AUFTRAG_ANLEGEN">
<condition eventattributetype="CHARGEN_PFL" logicaloperator="neq">
<value>X</value>
</condition>
</processfragment>
<processfragment graphid="CHPLICHT_AUFTRAG_ANLEGEN">
<condition eventattributetype="CHARGEN_PFL">
<value>X</value>
</condition>
</processfragment>
</processfragmentgroup>
Durch Zusammenfassen in einer Prozessfragmentgruppe muss beim Import nur einmal geprüft werden, ob das Quellsystemattribut AUFTR_TYP den Wert C hat. Ist dies nicht der Fall, werden beide Prozessfragmente der Prozessfragmentgruppe nicht instanziiert.
Verwenden Sie Prozessfragmentgruppen, um die Übersichtlichkeit von Prozessfragment-Mapping-Definitionen und die Performance des Imports zu verbessern.
Ausgabe von Warnungen unterdrücken
Wenn Sie in Ihrem Customizing bestimmte System-Events nicht importieren möchten und für diese System-Events auch kein Prozess-Mapping definiert haben, können Sie die zu erwartende Fehlermeldung beim Import unterdrücken. Hierfür geben Sie im XML-Element ignoreevent Bedingungen an, die die Ausgabe einer Fehlermeldung für bestimmte Fragmente unterdrücken, wenn diese nicht importiert werden können.
Für mit ignoreevent-Mapping spezifizierte System-Events wird lediglich die Ausgabe der Warnung unterdrückt, wenn das System-Event nicht importiert werden kann. Das heißt, wenn Sie System-Events importieren, für die sowohl ein Prozessfragment-Mapping als auch ein ignoreevent-Mapping zutreffen, werden diese System-Events importiert.
Beispiel
Sie möchten Prozessfragmente importieren, wenn das System-Event-Attribut EKKO_BSTYP existiert und das System-Event-Attribut MSEG_SHKZG den Wert S für „Wareneingang buchen“ oder H für „Wareneingang stornieren“ hat. Andere Werte des Attributes MSEG_SHKZG führen zur Ausgabe einer Warnung.
Ist das System-Event-Attribut EKKO_BSTYP nicht vorhanden, soll kein Prozessfragment importiert und keine Warnung ausgegeben
werden.
Folgendes Prozess-Mapping erfüllt die genannten Bedingungen:
...
<processfragmentgroup>
<!-- nur Wareneingänge mit MM-Vorgängerbelegen importieren
-->
<condition eventattributetype="EKKO-BSTYP" logicaloperator="exists"/>
<processfragment graphid="GWEOF">
<!-- Wareneingang buchen
-->
<condition eventattributetype="MSEG-SHKZG" logicaloperator="eq">
<value>S</value>
</condition>
</processfragment>
<processfragment graphid="GWSOF">
<!-- Wareneingang stornieren
-->
<condition eventattributetype="MSEG-SHKZG" logicaloperator="eq">
<value>H</value>
</condition>
</processfragment>
</processfragmentgroup>
<ignoreevent>
<!-- Keine Warnung ausgeben, wenn kein MM-Vorgängerbeleg vorhanden,
da diese Systemevents nicht importiert werden sollen
-->
<condition eventattributetype="EKKO-BSTYP" logicaloperator="notexists"/>
</ignoreevent>
...