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:
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: 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>