Auslesevorgang

Folgende Abbildung stellt ein Beispieldatenmodell einer Datenextraktion dar.

n_sap_tables-633

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:

s_ctk_system-event-tabelle_edit633

<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:

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>