Configuração da tabela

O extrato de arquivo abaixo mostra a configuração da tabela SD_C para extrair dados de um sistema SAP SD:

...

<xmlextractor_tableconfiguration>

<configuration name="SD_C">

<docspec>

<docreftable name="VBAK">

<booleancondition>

<condition fieldname="ERDAT#-#ERZET"

logicaloperator="creationtimestamp">

<value>yyyyMMdd</value>

<value>HHmmss</value>

</condition>

<condition fieldname="VBTYP"

logicaloperator="eq">

<value>C</value>

</condition>

</booleancondition>

<pkfield name="VBELN" />

</docreftable>

<doctable name="Orders" tablename="VBAP">

<pkfield name="VBELN" fktablename="VBAK"

fkfieldname="VBELN"/>

<pkfield name="POSNR" />

<fieldtoread name="ERDAT"/>

<fieldtoread name="ERZET"/>

<fieldtoread name="MATNR">

<textref tablename="MAKT" reffieldname="MATNR"

textfieldname="MAKTX" langfieldname="SPRAS"/>

</fieldtoread>

<fieldtoread name="KONDM">

<textref tablename="T178T" reffieldname="KONDM"

textfieldname="VTEXT" langfieldname="SPRAS"/>

</fieldtoread>

<fieldtoread name="SPART">

<textref tablename="TSPAT" reffieldname="SPART"

textfieldname="VTEXT" langfieldname="SPRAS"/>

</fieldtoread>

<fieldtoread name="WERKS">

<textref tablename="T001W" reffieldname="WERKS"

textfieldname="NAME1"/>

</fieldtoread>

<fieldtoread name="CHARG"/>

<fieldtoread name="PSTYV"/>

<fieldtoread name="ERNAM"/>

<fieldtoread name="NETWR"/>

</doctable>

</docspec>

<table name="VBAK">

<pkfield name="VBELN" fktablename="Orders"

fkfieldname="VBELN"/>

<fieldtoread name="VTWEG">

<textref tablename="TVTWT" reffieldname="VTWEG"

textfieldname="VTEXT" langfieldname="SPRAS"/>

</fieldtoread>

<fieldtoread name="VKORG">

<textref tablename="TVKOT" reffieldname="VKORG"

textfieldname="VTEXT" langfieldname="SPRAS"/>

</fieldtoread>

<fieldtoread name="VDATU"/>

<fieldtoread name="VKBUR">

<textref tablename="TVKBT" reffieldname="VKBUR"

textfieldname="BEZEI" langfieldname="SPRAS"/>

</fieldtoread>

<fieldtoread name="VKGRP">

<textref tablename="TVGRT" reffieldname="VKGRP"

textfieldname="BEZEI" langfieldname="SPRAS"/>

</fieldtoread>

<fieldtoread name="VBTYP"/>

<fieldtoread name="AUART"/>

</table>

<table name="MARA">

<pkfield name="MATNR" fktablename="Orders"

fkfieldname="MATNR"/>

<fieldtoread name="MATNR"/>

<fieldtoread name="MTART">

<textref tablename="T134T" reffieldname="MTART"

textfieldname="MTBEZ" langfieldname="SPRAS"/>

</fieldtoread>

</table>

</configuration>

</xmlextractor_tableconfiguration>

A configuração da tabela SD_C contém as seguintes tabelas:

Tabela de cabeçalho do documento

...

<docreftable name="VBAK">

<booleancondition>

<condition fieldname="ERDAT#-#ERZET"

logicaloperator="creationtimestamp">

<value>yyyyMMdd</value>

<value>HHmmss</value>

</condition>

<condition fieldname="VBTYP"

logicaloperator="eq">

<value>C</value>

</condition>

</booleancondition>

<pkfield name="VBELN" />

</docreftable>

...

O identificador e o nome da tabela de cabeçalho do documento do sistema R/3 é VBAK. Todos os cabeçalhos de documentos de encomenda (VBTYP=C) para o período especificado na linha de comando são lidos. Os elementos value do operador de condição creationtimestamp especificam o formato do carimbo de data/hora especificado.

O nome da coluna da tabela de chave primária é VBELN. Para cada valor de campo VBELN diferente, os registros de dados são extraídos da tabela do documento vinculado para a qual VBELN apresenta o mesmo valor que a tabela de cabeçalho do documento.

Tabela do documento

...

<doctable name="Orders" tablename="VBAP">

<pkfield name="VBELN" fktablename="VBAK"

fkfieldname="VBELN"/>

<pkfield name="POSNR" />

<fieldtoread name="ERDAT"/>

<fieldtoread name="ERZET"/>

<fieldtoread name="MATNR">

<textref tablename="MAKT" reffieldname="MATNR"

textfieldname="MAKTX" langfieldname="SPRAS"/>

</fieldtoread>

<fieldtoread name="KONDM">

<textref tablename="T178T" reffieldname="KONDM"

textfieldname="VTEXT" langfieldname="SPRAS"/>

</fieldtoread>

<fieldtoread name="SPART">

<textref tablename="TSPAT" reffieldname="SPART"

textfieldname="VTEXT" langfieldname="SPRAS"/>

</fieldtoread>

<fieldtoread name="WERKS">

<textref tablename="T001W" reffieldname="WERKS"

textfieldname="NAME1"/>

</fieldtoread>

<fieldtoread name="CHARG"/>

<fieldtoread name="PSTYV"/>

<fieldtoread name="ERNAM"/>

<fieldtoread name="NETWR"/>

</doctable>

...

O identificador Ordens é associado à tabela do documento VBAP. A relação de chave estrangeira especificada na linha

<pkfield name="VBELN" fktablename="VBAK" fkfieldname="VBELN"/>

vincula a tabela à tabela de cabeçalho do documento. A menos que especificado de outra forma, as relações de chave estrangeira são criadas com base em valores de campo iguais (ver o capítulo Comparação de relações de chave estrangeira). Neste exemplo, apenas as linhas da tabela para as quais a comparação dos valores de campo VBAP-VBELN e VBAK-VBELN retornar valores iguais serão extraídas. A chave primária consiste nas colunas VBELN e POSNR.

Um evento de sistema (elemento XML event) é criado no arquivo de saída XML para cada linha extraída da tabela. Para cada elemento XML fieldtoread, uma linha do formulário

<attribute type="...">...</attribute>

é gravada no arquivo de saída.

Os campos de chave primária (pkfield) especificados na definição doctable são extraídos automaticamente. Não precisa de especificar fieldtoread para esses campos.

Para alguns elementos fieldtoread, o valor extraído da tabela referenciada (elemento XML textref) é gravado em conjunto com o valor do campo de dados extraído. O elemento opcional langfieldname extrai o texto específico do idioma do campo de dados.
O tipo de atributo do sistema de origem completo é composto pelo identificador da tabela de cabeçalho do documento (doctable name), nome do campo (fieldtoread name) e nome do campo de texto referenciado (textref ... textfieldname). O tipo de atributo do sistema de origem para o primeiro elemento fieldtoread extraído com uma tabela referenciada é semelhante a:

<attribute type="Orders-MATNR-MAKTX">...</attribute>

Tabelas de dados

...

<table name="VBAK">

<pkfield name="VBELN" fktablename="Orders"

fkfieldname="VBELN"/>

<fieldtoread name="VTWEG">

<textref tablename="TVTWT" reffieldname="VTWEG"

textfieldname="VTEXT" langfieldname="SPRAS"/>

</fieldtoread>

<fieldtoread name="VKORG">

<textref tablename="TVKOT" reffieldname="VKORG"

textfieldname="VTEXT" langfieldname="SPRAS"/>

</fieldtoread>

<fieldtoread name="VDATU"/>

<fieldtoread name="VKBUR">

<textref tablename="TVKBT" reffieldname="VKBUR"

textfieldname="BEZEI" langfieldname="SPRAS"/>

</fieldtoread>

<fieldtoread name="VKGRP">

<textref tablename="TVGRT" reffieldname="VKGRP"

textfieldname="BEZEI" langfieldname="SPRAS"/>

</fieldtoread>

<fieldtoread name="VBTYP"/>

<fieldtoread name="AUART"/>

</table>

<table name="MARA">

<pkfield name="MATNR" fktablename="Orders"

fkfieldname="MATNR"/>

<fieldtoread name="MATNR"/>

<fieldtoread name="MTART">

<textref tablename="T134T" reffieldname="MTART"

textfieldname="MTBEZ" langfieldname="SPRAS"/>

</fieldtoread>

</table>

...

As relações de chave estrangeira com os campos de chave primária VBELN e MATNR na tabela Ordens são usadas para extrair informações suplementares das tabelas de dados VBAK e MARA.