Extrair a primeira ou última linha de uma classificação

A classe Java com.idsscheer.ppm.xmlextractortools.
extractor.sap2ppm.ZSortWithInteger_sap2ppm a ser usada extrai registros de dados de tabelas, classifica-os usando os critérios de classificação especificados e grava o primeiro ou último registro de dados nos eventos de sistema a serem gerados. A classe tem de ser especificada no atributo classtouse do elemento XML table.

Exemplo

Os documentos de histórico do estado representam um tipo de documento especial do sistema SAP  R/3. Estes documentos são armazenados na tabela JCDS. A classe deve determinar a última alteração relacionada com um tipo de estado específico e gravar essa alteração nos eventos do sistema correspondentes. Para isso, todos os números de pedido são extraídos da tabela AUFK. Além disso, para cada número de pedido com informações de estado, todas as entradas desse número de pedido com o prefixo OR e o estado I0043 (campo STAT) são extraídas da tabela JCDS. Estes são classificados por hora de criação (UDATE, UTIME) e o último registro de dados criado deve ser extraído. Todos os valores de campo pertencentes a este registro de dados são gravados no evento de sistema relevante.

O extrato de arquivo abaixo ilustra a configuração para extrair informações de estado da tabela JCDS, nas condições especificadas:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE xmlextractor_tableconfiguration SYSTEM

'xmlextractor_tableconfiguration.dtd'>

<xmlextractor_tableconfiguration>

<configuration name="AUFK_JCDS">

<docspec>

<doctable name="AUFK">

<pkfield name="AUFNR"/>

</doctable>

</docspec>

<table name="JCDS_I0043" tablename="JCDS"

classtouse="com.idsscheer.ppm.

xmlextractortools.extractor.

sap2ppm.ZSortWithInteger_sap2ppm">

<parameter name="SORTCRITERION">

<value>UDATE</value>

<value>UTIME</value>

</parameter>

<parameter name="USE">

<value>MAX</value>

</parameter>

<condition fieldname="STAT"

logicaloperator="eq">

<value>I0043</value>

</condition>

<pkfield name="OBJNR" fktablename="AUFK"

fkfieldname="AUFNR">

<prefix>

<value>OR</value>

</prefix>

</pkfield>

<fieldtoread name="CDTCODE"/>

<fieldtoread name="CHGNR"/>

<fieldtoread name="CHIND"/>

<fieldtoread name="INACT"/>

<fieldtoread name="OBJNR"/>

<fieldtoread name="STAT"/>

<fieldtoread name="TCODE"/>

<fieldtoread name="USNAM"/>

</table>

</configuration>

</xmlextractor_tableconfiguration>

Um evento de sistema extraído com essa configuração poderia ter a seguinte aparência:

<event>

<attribute type="AUFK-AUFNR">000000800002</attribute>

<attribute type="JCDS_I0043-CDTCODE"></attribute>

<attribute type="JCDS_I0043-CHGNR">002</attribute>

<attribute type="JCDS_I0043-CHIND">U</attribute>

<attribute type="JCDS_I0043-INACT">X</attribute>

<attribute type="JCDS_I0043-OBJNR">

OR000000800002

</attribute>

<attribute type="JCDS_I0043-STAT">I0043</attribute>

<attribute type="JCDS_I0043-TCODE">KOK2</attribute>

<attribute type="JCDS_I0043-UDATE">19961217</attribute>

<attribute type="JCDS_I0043-USNAM">MUELLERJ</attribute>

<attribute type="JCDS_I0043-UTIME">192122</attribute>

</event>

Os critérios de classificação (neste caso UDATE, UTIME) são automaticamente incluídos na especificação do evento de sistema.

O modelo para criar a configuração exibida é semelhante a isso (os elementos e atributos XML que são opcionais estão destacados na tabela abaixo):

<table name="..." tablename="..." classtouse=

"com.idsscheer.ppm.

xmlextractortools.extractor.

sap2ppm.ZSortWithInteger_sap2ppm">

<parameter name="SORTCRITERION">

<value>...</value>

<value>...</value>

...

</parameter>

<parameter name="USE">

<value>...</value>

</parameter>

...

Ver o capítulo

Configuração da tabela R3 (especificação de evento do sistema)

...

</table>

A tabela abaixo reitera as entradas de configuração mais importantes para a definição table acima:

Elemento/atributo XML

Valor: Descrição

name

O nome especificado é adicionado como um prefixo aos atributos do sistema de origem extraídos

tablename
(opcional)

Tabela da qual a informação deve ser extraída. Valor padrão: Valor do atributo XML name

classtouse

com.idsscheer.ppm.xmlextractortools.
extractor.sap2ppm.ZSortWithInteger_sap2ppm:

Classe Java a ser usada

nome do parâmetro

 

SORTCRITERION

Primeiro parâmetro a ser especificado.

Tem de ser especificado pelo menos um elemento XML value (nome de campo do critério de classificação). Os campos especificados apenas podem incluir valores inteiros. Se vários critérios de classificação forem especificados, eles serão priorizados de cima para baixo, ou seja, os registros de dados serão comparados em primeiro lugar com o primeiro critério (superior) e depois com o segundo critério, se nenhuma classificação completa tiver sido criada, e assim por diante.

USE

Segundo a ser especificado.

Tem de ser especificado um único elemento XML value. Valores válidos:
MIN (é selecionado o registro de dados com o menor valor inteiro para o critério de classificação)
MAX (é selecionado o registro de dados com o maior valor inteiro para o critério de classificação)

O primeiro ou o último registro de dados da lista gerada com base nos critérios de classificação especificados é selecionado para ser extraído.

Deve usar essa classe para extrair a primeira ou a última linha de uma classificação com moderação, pois as operações de classificação e seleção resultam em perda de desempenho e memória.