As informações sobre documentos de alteração das tabelas SAP CDPOS e CDHDR são armazenadas em atributos do sistema de origem especiais, de eventos do sistema que usam uma classe específica.
Os documentos de alteração são extraídos usando uma configuração adequada de uma tabela de dados. A classe com.idsscheer.ppm.xmlextractortools.extractor.
sap2ppm.ZChangeDocTable_sap2ppm é usada para extrair os documentos de alteração.
Se não houver documentos de alteração para eventos do sistema extraídos, somente os campos da tabela configurada serão transferidos como atributos do sistema de origem.
As seguintes condições devem ser especificadas na configuração da tabela de dados da qual os documentos de alteração devem ser extraídos:
<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>
Não especifique outras condições.
A tabela a seguir exibe os atributos do sistema de origem que são criados a partir das informações extraídas do documento de alteração. CH_DOCS foi especificado como identificador da tabela de dados na configuração.
Atributo do sistema de origem |
Descrição |
---|---|
CH_DOCS-SUM_OF_CHANGES |
Número total de alterações no documento extraído (número de operações de salvamento). |
CH_DOCS-FIRST_CHANGE_DATE |
Data da primeira alteração |
CH_DOCS-LAST_CHANGE_DATE |
Data da última alteração |
CH_DOCS-CHANGE_USER_<x> |
Nome do processador que criou documentos de alteração. O atributo é criado para cada processador.<x> é o número consecutivo do processador. |
CH_DOCS-NUM_OF_CHANGES_USER_<x> |
Número total de alterações realizadas pelo processador.<x> é o número consecutivo do processador. |
Exemplo
O extrato de arquivo abaixo ilustra a configuração para extrair as alterações nas tabelas VBAK e 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>CLIENT#-#</value>
<value>VBAP-VBELN#-#</value>
<value>VBAP-POSNR</value>
</condition>
<condition fieldname="TABKEY"
logicaloperator="eq_concatEventAttrValues">
<value>CLIENT#-#</value>
<value>VBAP-VBELN</value>
</condition>
</booleancondition>
</booleancondition>
<pkfield name="VBELN" fktablename="VBAP"
fkfieldname="VBELN"/>
<pkfield name="POSNR" fktablename="VBAP"
fkfieldname="POSNR"/>
</table>
</configuration>
O operador eq_concatEventAttrValues compara o conteúdo do campo especificado com valores de atributo combinados dos campos especificados. Os valores especificados nos elementos XML value são interpretados como identificadores dos atributos do sistema de origem já extraídos.
Nota sobre os valores dos campos OBJECTID e TABKEY
Os valores de campos individuais (<value>...</value>) são concatenados usando a cadeia de caracteres separadora especificada #-# entre os valores de campos individuais. No exemplo, os valores dos campos OBJECTID e TABKEY contêm o seguinte:
OBJECTID
Valor |
Descrição |
Valor de exemplo |
---|---|---|
VBAP-VBELN |
O valor já extraído do campo VBELN na tabela VBAP deve corresponder como uma condição para o campo OBJECTID. |
0000004972 |
TABKEY
Valor |
Descrição |
Valor de exemplo |
---|---|---|
CLIENT |
Parâmetro que é substituído pelo número do cliente SAP do qual foi feita a extração. |
800 |
VBAP-VBELN |
Valor do campo extraído VBELN da tabela VBAP. |
0000004972 |
VBAP-POSNR |
Valor do campo extraído POSNRVBELN da tabela VBAP. |
000020 |
Com base nos valores de exemplo da configuração acima, os valores concatenados 800#-#0000004972#-#000020 e 800#-#0000004972 são o resultado para o campo TABKEY (chave da linha da tabela alterada).
O extrato do arquivo de saída abaixo ilustra um possível evento de sistema:
<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>