Informationen zu Änderungsbelegen aus den SAP-Tabellen CDPOS und CDHDR werden in speziellen Quellsystemattributen von System-Events unter Verwendung einer besonderen Klasse gespeichert.
Änderungsbelege werden durch eine geeignete Konfiguration einer Datentabelle ausgelesen.
Zum Lesen der Änderungsbelege wird die Klasse com.idsscheer.ppm.xmlextractortools.
extractor.sap2ppm.ZChangeDocTable_sap2ppm verwendet.
Wenn es zu einem gelesenen System-Event keine Änderungsbelege gibt, werden nur die konfigurierten Tabellenfelder als Quellsystemattribute übernommen.
In der Konfiguration der Datentabelle, aus der die Änderungsbelege gelesen werden sollen, müssen folgende Bedingungen angegeben werden:
<table name="..." classtouse="com.idsscheer.ppm.
xmlextractortools.extractor.sap2ppm.
ZChangeDocTable_sap2ppm">
<booleancondition>
<condition fieldname="OBJECTCLAS" ...>
...
</condition>
<condition fieldname="OBJECTID" ...>
...
</condition>
<condition fieldname="TABNAME" ...>
...
</condition>
<booleancondition logicaloperator="OR">
<condition fieldname="TABKEY" ...>
...
</condition>
<condition fieldname="TABKEY" ...>
...
</condition>
...
</booleancondition>
</booleancondition>
...
</table>
Andere Bedingungen dürfen nicht angegeben werden.
Die folgende Tabelle zeigt die Quellsystemattribute, die aus gelesenen Änderungsbeleginformationen erzeugt werden. Als Identifizierer der Datentabelle wurde in der Konfiguration CH_DOCS angegeben.
Quellsystemattribut |
Bezeichnung |
---|---|
CH_DOCS-SUM_OF_CHANGES |
Gesamtanzahl der Änderungen des gelesenen Belegs (Anzahl der Speichervorgänge). |
CH_DOCS-FIRST_CHANGE_DATE |
Datum der ersten Änderung |
CH_DOCS-LAST_CHANGE_DATE |
Datum der letzten Änderung |
CH_DOCS-CHANGE_USER_<x> |
Name des Bearbeiters, der Änderungsbelege erzeugt hat. Das Attribut wird für jeden Bearbeiter erzeugt. <x> ist die laufende Nummer des Bearbeiters. |
CH_DOCS-NUM_OF_CHANGES_USER_<x> |
Gesamtanzahl der Änderungen, die der Bearbeiter durchgeführt hat. <x> ist die laufende Nummer des Bearbeiters. |
Beispiel
Der gezeigte Dateiauszug veranschaulicht die Konfiguration zum Auslesen der Änderungen der Tabellen VBAK und VBAP:
<configuration name="SD_CHANGE_DOC_SUM">
<docspec>
<docreftable name="VBAK">
<condition fieldname="ERDAT#-#ERZET"
logicaloperator="creationtimestamp">
<value>yyyyMMdd</value>
<value>HHmmss</value>
</condition>
<pkfield name="VBELN" />
</docreftable>
<doctable name="VBAP">
<pkfield name="VBELN" fktablename="VBAK"
fkfieldname="VBELN"/>
<pkfield name="POSNR" />
<fieldtoread name="VBELN"/>
<fieldtoread name="POSNR"/>
<fieldtoread name="ERDAT"/>
<fieldtoread name="ERZET"/>
<fieldtoread name="ERNAM"/>
</doctable>
</docspec>
<table name="CH_DOCS" classtouse="com.idsscheer.ppm.
xmlextractortools.extractor.
sap2ppm.ZChangeDocTable_sap2ppm">
<booleancondition>
<condition fieldname="OBJECTCLAS">
<value>VERKBELEG</value>
</condition>
<condition fieldname="OBJECTID"
logicaloperator="eq_concatEventAttrValues">
<value>VBAP-VBELN</value>
</condition>
<condition fieldname="TABNAME" logicaloperator="in">
<value>VBAK</value>
<value>VBAP</value>
</condition>
<booleancondition logicaloperator="OR">
<condition fieldname="TABKEY"
logicaloperator="eq_concatEventAttrValues">
<value>MANDANT#-#</value>
<value>VBAP-VBELN#-#</value>
<value>VBAP-POSNR</value>
</condition>
<condition fieldname="TABKEY"
logicaloperator="eq_concatEventAttrValues">
<value>MANDANT#-#</value>
<value>VBAP-VBELN</value>
</condition>
</booleancondition>
</booleancondition>
<pkfield name="VBELN" fktablename="VBAP"
fkfieldname="VBELN"/>
<pkfield name="POSNR" fktablename="VBAP"
fkfieldname="POSNR"/>
</table>
</configuration>
Der Operator eq_concatEventAttrValues vergleicht den Inhalt des angegebenen Feldes mit zusammengesetzten Attributwerten der angegebenen Felder. Dabei werden die in den XML-Elementen value angegebenen Werte als Identifizierer bereits gelesener Quellsystemattribute interpretiert.
Hinweis zu den Wertzusammensetzungen der Felder OBJECTID und TABKEY
Die Konkatenation der einzelnen Feldwerte (<value>...</value>) erfolgt mittels der angegebenen Trennzeichenkette #-# zwischen den einzelnen Feldwerten. Die Zusammensetzung der Wertangaben der Felder OBJECTID und TABKEY ist im Beispiel wie folgt:
OBJECTID
Wertangabe |
Bezeichnung |
Beispielwert |
---|---|---|
VBAP-VBELN |
Die Übereinstimmung mit dem bereits gelesenen Wert des Feldes VBELN der Tabelle VBAP wird als Bedingung für das Feld OBJECTID festgelegt. |
0000004972 |
TABKEY
Wertangabe |
Bezeichnung |
Beispielwert |
---|---|---|
MANDANT |
Parameter, der durch die Nummer des SAP-Mandanten, aus welchem ausgelesen wird, ersetzt wird |
800 |
VBAP-VBELN |
Wert des bereits gelesenen Feldes VBELN der Tabelle VBAP |
0000004972 |
VBAP-POSNR |
Wert des bereits gelesenen Feldes POSNR der Tabelle VBAP |
000020 |
Für das Feld TABKEY (Key der geänderten Tabellenzeile) ergibt sich auf Basis der Beispielwerte gemäß obiger Konfiguration zum einen der konkatenierte Wert 800#-#0000004972#-#000020 und zum anderen 800#-#0000004972.
Der folgende Auszug aus der Ausgabedatei zeigt ein mögliches System-Event:
<event>
<attribute type="CH_DOCS-CHANGE_USER_1">
sapuser
</attribute>
<attribute type="CH_DOCS-CHANGE_USER_2">
ANFEL
</attribute>
<attribute type="CH_DOCS-FIRST_CHANGE_DATE">
20030919
</attribute>
<attribute type="CH_DOCS-FIRST_CHANGE_TIME">
181020
</attribute>
<attribute type="CH_DOCS-LAST_CHANGE_DATE">
20030930
</attribute>
<attribute type="CH_DOCS-NUM_OF_CHANGES_USER_1">
1
</attribute>
<attribute type="CH_DOCS-NUM_OF_CHANGES_USER_2">
3
</attribute>
<attribute type="CH_DOCS-SUM_OF_CHANGES">
4
</attribute>
<attribute type="VBAP-ERDAT">20030919</attribute>
<attribute type="VBAP-ERNAM">ANFEL</attribute>
<attribute type="VBAP-ERZET">174938</attribute>
<attribute type="VBAP-POSNR">000010</attribute>
<attribute type="VBAP-VBELN">0000007500</attribute>
</event>