O mapeamento de fragmento de processo define quais definições de fragmento de processo são usadas para instanciar os tipos de evento do sistema. Pode ser controlado por qualquer número de condições (elemento XML condition) vinculadas entre si por regras AND.
As regras para a estrutura de mapeamento de fragmento de processo no arquivo de mapeamento XML são especificadas no seguinte extrato do arquivo eventmapping.dtd:
Exemplo da geração de um fragmento de processo condicional (extrato de arquivo):
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE eventmapping SYSTEM "eventmapping.dtd">
<eventmapping>
<processfragmentmapping>
<processfragment graphid="FRG_ORD_CREATED">
<condition eventattributetype="AUFTR_TYP">
<value>C</value>
</condition>
<condition eventattributetype="MAT_NR" logicaloperator="in">
<value>123456</value>
<value>56789</value>
<value>78901</value>
</condition>
</processfragment>
...
</processfragmentmapping>
<attributemapping>
...
</attributemapping>
</eventmapping>
O fragmento de processo FRG_ORD_CREATED é criado se as duas condições seguintes forem atendidas:
Uma definição de fragmento de processo não pode conter uma condição. Nesse caso, a mesma definição de fragmento especificada é usada para cada evento de sistema importado. Os objetos no fragmento instanciado são especificados no mapeamento de atributo subsequente.
Definição de um grupo de fragmentos de processo
As definições de fragmento de processo podem ser resumidas em grupos. Isso resulta nas vantagens seguintes:
As duas definições de fragmentos de processo abaixo estão contidas em um arquivo de mapeamento XML:
<processfragment graphid="AUFTRAG_ANLEGEN">
<condition eventattributetype="AUFTR_TYP">
<value>C</value>
</condition>
<condition eventattributetype="CHARGEN_PFL" logicaloperator="neq">
<value>X</value>
</condition>
</processfragment>
<processfragment graphid="CHPLICHT_AUFTRAG_ANLEGEN">
<condition eventattributetype="AUFTR_TYP">
<value>C</value>
</condition>
<condition eventattributetype="CHARGEN_PFL">
<value>X</value>
</condition>
</processfragment>
O primeiro fragmento de processo AUFTRAG_ANLEGEN é criado para um evento de sistema do tipo Documento de pedido (o valor do atributo de AUFTR_TYP é C), que não está sujeito a gestão em lotes (o valor do atributo de CHARGEN_PFL não é igual a X).
O segundo fragmento de processo CHPFLICH_AUFTRAG_ANLEGEN é criado para um evento de sistema do tipo Documento de pedido sujeito a gestão em lotes (valor do atributo de AUFTR_TYP é C e o valor do atributo de CHARGEN_PFL é X).
Os dois fragmentos de processo exibidos podem ser resumidos em um grupo de fragmentos de processo:
<processfragmentgroup>
<condition eventattributetype="AUFTR_TYP">
<value>C</value>
</condition>
<processfragment graphid="AUFTRAG_ANLEGEN">
<condition eventattributetype="CHARGEN_PFL" logicaloperator="neq">
<value>X</value>
</condition>
</processfragment>
<processfragment graphid="CHPLICHT_AUFTRAG_ANLEGEN">
<condition eventattributetype="CHARGEN_PFL">
<value>X</value>
</condition>
</processfragment>
</processfragmentgroup>
Resumo em um grupo de fragmentos de processo significa que apenas uma verificação é feita se o atributo do sistema de origem AUFTR_TYP tem o valor C na altura da importação. Se não for esse o caso, nenhum dos dois fragmentos de processo no grupo de fragmentos de processo é instanciado.
Use grupos de fragmentos de processo para melhorar a clareza das definições de mapeamento do fragmento de processo e o desempenho do processo de importação.
Suprimir emissão de avisos
Se não quiser importar determinados eventos do sistema para a personalização e se não tiver definido nenhum mapeamento de processo para esses eventos do sistema, poderá suprimir a mensagem de erro esperada ao importar. Para isso, terá de especificar condições no elemento XML ignoreevent que suprimem a saída de uma mensagem de erro relativa a fragmentos específicos que não podem ser importados.
Para eventos de sistema especificados com mapeamento ignoreevent, a saída da mensagem de erro apenas é suprimida se o evento do sistema não puder ser importado. Isso significa que quando importa eventos do sistema com mapeamento de fragmento de processo e mapeamento ignoreevent, estes eventos do sistema são importados.
Exemplo
Quer importar fragmentos de processo se o atributo de evento do sistema EKKO_BSTYP existir e o atributo de evento do sistema MSEG_SHKZG tiver o valor S para "Registrar entrada de mercadorias" ou H para "Cancelar entrada de mercadorias". Outros valores do atributo MSEG_SHKZG resultam na emissão de um aviso.
Se o atributo de evento do sistema EKKO_BSTYP não existir, nenhum fragmento de processo é importado e nenhum aviso é emitido.
O mapeamento de processo seguinte atende os requisitos acima:
...
<processfragmentgroup>
<!-- Importar entrada de mercadorias apenas com documentos predecessores MM
-->
<condition eventattributetype="EKKO-BSTYP" logicaloperator="exists"/>
<processfragment graphid="GWEOF">
<!-- Registrar entrada de mercadorias
-->
<condition eventattributetype="MSEG-SHKZG" logicaloperator="eq">
<value>S</value>
</condition>
</processfragment>
<processfragment graphid="GWSOF">
<!-- Cancelar entrada de mercadorias
-->
<condition eventattributetype="MSEG-SHKZG" logicaloperator="eq">
<value>H</value>
</condition>
</processfragment>
</processfragmentgroup>
<ignoreevent>
<!-- Não emitir um aviso se nenhum documento predecessor MM existir
porque estes eventos do sistema não devem ser importados
-->
<condition eventattributetype="EKKO-BSTYP" logicaloperator="notexists"/>
</ignoreevent>
...