A ilustração abaixo mostra um exemplo do modelo de dados de uma extração de dados.
É necessário definir uma tabela para a qual um evento do sistema PPM será gerado para cada leitura da linha de dados. Nesse exemplo, um evento do sistema PPM deve ser gerado para cada item do documento de vendas criado ou modificado em janeiro de 2006 e incluído na tabela VBAP do SAP. Além disso, para cada item do documento de vendas, devem ser extraídas as linhas e os campos correspondentes das outras tabelas. A configuração associada no CTK ou XML se parece com isso:
<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>
A primeira consulta gerada pelo PPM Process Extractor SAP-2-PPM e executada no sistema SAP se parece com isso:
SELECT vbeln, posnr FROM vbap WHERE (erdat >= 20060101 AND erdat <= 20060131) OR (aedat >= 20060101 AND aedat <= 20060131)
Como normalmente a tabela VBAP é muito grande, recomendamos que crie os dois índices do banco de dados seguintes para evitar uma análise completa da tabela do banco de dados e, assim, acelerar o processo de extração:
Depois que os campos chave do evento do sistema de origem tiverem sido extraídos da tabela VBAP, os outros campos serão extraídos da tabela VBAP ou das outras tabelas e incluídos no evento do sistema de origem. Nesse exemplo, os dados são extraídos dessas tabelas usando relacionamentos de chave estrangeira simples. A consulta correspondente, por exemplo, executada para extrair os campos da tabela VBAK, é semelhante a essa:
SELECT vbeln, vkorg, vbtyp, bstdk, ernam, erdat, erzet FROM vbak WHERE vbeln in (…)
O evento do sistema de origem, que é extraído usando a especificação de evento acima, pode ser semelhante a isso:
<event>
<attribute type="MARA-MTART">HAWA</attribute>
<attribute type="MARA-MTART-MTBEZ">Trading goods
</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 Keyboard - EURO Model
</attribute>
<attribute type="VBAP-POSNR">000020</attribute>
<attribute type="VBAP-PRODH">001250010000000135</attribute>
<attribute type="VBAP-VBELN">0000005056</attribute>
</event>