Transformação de atributos

Para alterar os valores de determinados tipos de atributos nos arquivos de saída ou para criar tipos de atributos adicionais, é necessário especificar isso em um arquivo de configuração XML. O nome desse arquivo de configuração XML é transferido para o programa de linha de comando como um argumento.

Este arquivo de configuração contém as definições para processar tipos de atributos existentes e gerar e transformar novos tipos de atributos ao criar o(s) arquivo(s) de saída XML.

O formato do arquivo XML é especificado pela seguinte DTD:

s_csv_2_DTD_5

Elemento XML ou atributo XML

Descrição

attributecalculation

Configuração da transformação de atributos

calculateattribute

Geração de um tipo de atributo de evento do sistema para execução bem-sucedida da regra de transformação (operation)

type

Nome do tipo de atributo do evento de sistema gerado

onfailure

Comportamento de cancelamento se a transformação falhar. Valores válidos:
nolog (sem saída de log)
info (saída como informações)
warn (saída como aviso)
error (saída como mensagem de erro)

Valor padrão: info

Operação

Regra de transformação que é implementada por uma classe Java. Cada operação tem um único valor de retorno na forma de uma cadeia de caracteres. Se a operação falhar, nada é retornado.

name

Nome da operação

Constante

Valor constante a ser usado na transformação

valueof

Valor de um tipo de atributo do sistema de origem existente ou já transformado

Os elementos calculateattribute são processados na ordem em que são especificados no arquivo de configuração. O aninhamento de elementos XML operation é processado para fora ou de cima para baixo.

Por razões de eficiência, apenas os argumentos que são essenciais para a transformação são avaliados durante uma transformação de atributo. Por exemplo, na operação if_then_else, após ser verificada a validade do primeiro argumento, apenas o segundo argumento (then) ou o terceiro argumento (else) é processado. A transformação do atributo é cancelada com uma mensagem de erro assim que um elemento obrigatório não puder retornar um valor.

Se o elemento XML onfailure no arquivo de transformação do atributo tiver o valor error, uma geração de atributo mal sucedida resulta no evento do sistema correspondente sendo associado ao atributo EVENT_HAS_ATTRIBUTE_ERRORS=true, no arquivo de saída XML. Além disso, uma mensagem de erro é gerada no arquivo de log.

Se o elemento XML onfailure tiver o valor warn, uma geração de atributo mal sucedida resulta no evento do sistema correspondente sendo associado ao atributo EVENT_HAS_ATTRIBUTE_WARNINGS=true, no arquivo de saída XML. Além disso, um aviso é gerado no arquivo de log.

Aviso

calculateattribute permite que os valores dos tipos de atributos existentes sejam substituídos após a execução bem sucedida das regras de transformação correspondentes (operation). Nenhum aviso é emitido. Se necessário, certifique-se de que os valores dos tipos de atributos existentes não são substituídos acidentalmente, executando uma verificação de existência condicional com uma regra de transformação adequada. Pode usar a operação exists (ver o capítulo Operações) para esse propósito.

Se toda a transformação de um atributo for cancelada, o valor do atributo existente permanecerá inalterado. Dependendo do que especificou para a opção onfailure, uma mensagem correspondente é emitida com uma referência ao evento de sistema gerado. Nenhum log é emitido para nolog.

Exemplo

A extração de dados do sistema de origem do sistema R/3 e o processamento subsequente pelo Gerador de XML criaram a seguinte entrada no arquivo de saída XML event.xml:

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

<!DOCTYPE eventlist SYSTEM "event.dtd">

<eventlist>

<event>

<attribute type="VBAP-VBELN">3866</attribute>

<attribute type="VBAP-POSNR">20</attribute>

<attribute type="VBAP-ERNAM">SCHMIDT</attribute>

<attribute type="VBAP-MATNR-MAKTX">100038</attribute>

<attribute type="VBAP-KWMENG">3</attribute>

</event>

</eventlist>

Usando as especificações seguintes no arquivo de transformação de atributos attributetransform.xml, poderá alterar a visualização dos valores do tipo de atributoVBAP-ERNAM para que a concatenação do valor original com uma cadeia de caracteres constante seja usada como o novo valor.

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

<!DOCTYPE attributecalculation SYSTEM

"attributetransformation.dtd">

<attributecalculation>

<calculateattribute type="VBAP-ERNAM">

<operation name="concat">

<constant>Walter, "A" </constant>

<valueof>VBAP-ERNAM</valueof>

</operation>

</calculateattribute>

...

</attributecalculation>

A chamada de linha de comando seguinte cria o arquivo de saída XML desejado a partir do arquivo de saída XML original usando o arquivo de transformação de atributo mencionado acima. 

runjdbc2ppm -systemconfig SysConfig.xml ides_doc_vdap -tableconfig TableConf.xml SD_C -begindate 01.01.2005 -enddate 31.01.2005 -calcconfig attributetransform.xml -outfile event -outfileencoding ISO-8859-1 -nozip

A mesma entrada como a exemplificada acima, então é semelhante a isso:

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

<!DOCTYPE eventlist SYSTEM "event.dtd">

<eventlist>

<event>

<attribute type="VBAP-VBELN">3866</attribute>

<attribute type="VBAP-POSNR">20</attribute>

<attribute type="VBAP-ERNAM">Walter, "A" SCHMIDT

</attribute>

<attribute type="VBAP-MATNR-MAKTX">100038</attribute>

<attribute type="VBAP-KWMENG">3</attribute>

</event>

</eventlist>