Folgende Abbildung stellt ein Beispieldatenmodell einer Datenextraktion dar.
Es muss eine Tabelle definiert werden, bei der für jede gelesene Datenzeile ein PPM-System-Event erzeugt werden soll. Im Beispiel soll für jede im Januar 2006 neu angelegte oder geänderte Verkaufsbelegposition, die in der SAP-Tabelle VBAP enthalten ist, ein PPM-System-Event erzeugt werden. Zusätzlich sollen zu jeder Verkaufsbelegposition die entsprechenden Zeilen und Felder der anderen Tabellen ausgelesen werden. Die zugehörige Konfiguration sieht im CTK bzw. in XML folgendermaßen aus:
<docspec>
<doctable name="VBAP">
<booleancondition logicaloperator="OR">
<condition logicaloperator="creationtimestamp"
fieldname="ERDAT">
<value>yyyyMMdd</value>
</condition>
<condition logicaloperator="creationtimestamp"
fieldname="AEDAT">
<value>yyyyMMdd</value>
</condition>
</booleancondition>
<pkfield name="VBELN" />
<pkfield name="POSNR" />
</doctable>
</docspec>
<table name="VBAP">
<pkfield name="VBELN" fktablename="VBAP"
fkfieldname="VBELN"/>
<pkfield name="POSNR" fktablename="VBAP"
fkfieldname="POSNR"/>
<fieldtoread name="ERDAT"/>
<fieldtoread name="ERZET"/>
<fieldtoread name="ERNAM"/>
<fieldtoread name="AEDAT"/>
<fieldtoread name="MATNR">
<textref tablename="MAKT" reffieldname="MATNR"
textfieldname="MAKTX" langfieldname="SPRAS"/>
</fieldtoread>
<fieldtoread name="PRODH">
<textref tablename="T179T" reffieldname="PRODH"
textfieldname="VTEXT" langfieldname="SPRAS"/>
</fieldtoread>
</table>
<table name="VBAK">
<pkfield name="VBELN" fktablename="VBAP"
fkfieldname="VBELN"/>
<fieldtoread name="VKORG"/>
<fieldtoread name="VBTYP"/>
<fieldtoread name="BSTDK"/>
<fieldtoread name="ERNAM"/>
<fieldtoread name="ERDAT"/>
<fieldtoread name="ERZET"/>
</table>
<table name="MARA">
<pkfield name="MATNR" fktablename="VBAP"
fkfieldname="MATNR"/>
<fieldtoread name="MTART">
<textref tablename="T134T" reffieldname="MTART"
textfieldname="MTBEZ" langfieldname="SPRAS"/>
</fieldtoread>
</table>
Die erste Abfrage, die von PPM Process Extractor SAP-2-PPM erzeugt und im SAP-System ausgeführt wird, sieht folgendermaßen aus:
SELECT vbeln, posnr FROM vbap WHERE (erdat >= 20060101 AND erdat <= 20060131) OR (aedat >= 20060101 AND aedat <= 20060131)
Da die Tabelle VBAP meistens recht groß ist, sollten folgende beiden Datenbankindices angelegt werden, um einen Full-Table-Scan der Datenbank zu verhindern, und um somit den Auslesevorgang zu beschleunigen:
MANDT, ERDAT
MANDT, AEDAT
Nachdem die Schlüsselfelder des Quellsystem-Event aus der Tabelle VBAP gelesen wurden, werden die anderen Felder der Tabelle VBAP bzw. der anderen Tabellen ausgelesen und zu dem Quellssystem-Event hinzugefügt. Diese Tabellen werden in unserem Beispiel mittels einfacher Fremdschlüssel- beziehungen ausgelesen. Die entsprechende Abfrage, die z. B. für das Lesen der Felder der Tabelle VBAK ausgeführt wird, sieht folgendermaßen aus:
SELECT vbeln, vkorg, vbtyp, bstdk, ernam, erdat, erzet FROM vbak WHERE vbeln in (…)
Das Quellsystem-Event, das mit der obigen Event-Spezifikation ausgelesen wird, kann folgendermaßen aussehen:
<event>
<attribute type="MARA-MTART">HAWA</attribute>
<attribute type="MARA-MTART-MTBEZ">Handelsware
</attribute>
<attribute type="VBAK-BSTDK">19970306</attribute>
<attribute type="VBAK-ERDAT">19970306</attribute>
<attribute type="VBAK-ERNAM">BOLLINGER</attribute>
<attribute type="VBAK-ERZET">091423</attribute>
<attribute type="VBAK-VGTYP"></attribute>
<attribute type="VBAK-VKORG">1000</attribute>
<attribute type="VBAP-AEDAT">20020117</attribute>
<attribute type="VBAP-ERDAT">19970306</attribute>
<attribute type="VBAP-ERNAM">BOLLINGER</attribute>
<attribute type="VBAP-ERZET">091423</attribute>
<attribute type="VBAP-MATNR">DPC1009</attribute>
<attribute type="VBAP-MATNR-MAKTX">
Standard-Tastatur – EURO-Modell
</attribute>
<attribute type="VBAP-POSNR">000020</attribute>
<attribute type="VBAP-PRODH">001250010000000135</attribute>
<attribute type="VBAP-VBELN">0000005056</attribute>
</event>