Exemplo 1: Desempenho de entrega
A medida de desempenho de entrega compara a data de entrega real (hora de término da função SAP.WAUS em uma instância de processo) com um valor padrão importado do sistema de origem. Se a data de entrega real for anterior ao valor padrão, o valor da medida será 0. O valor 0 é interpretado como entrega no prazo. Caso contrário, a medida mostra o desvio do valor padrão. O valor padrão é armazenado no atributo da instância de processo AT_CUSTDATE_WISH. O valor mais antigo é determinado sempre que a função SAP.WAUS ocorra diversas vezes na instância de processo.
...
<!-Delivery performance -->
<calcattr name="AT_KI_WLFTREU" type="PROCESS">
<calculation>
<max>
<set>
<constant>
<dataitem value="0 SECOND">
<datatype name="TIMESPAN"/>
</dataitem>
</constant>
<timespan>
<max>
<attribute name="AT_CUSTDATE_WISH"
nodetype="PROCESS"/>
</max>
<min>
<attribute name="AT_END_TIME"
nodetype="OT_FUNC" objectname="SAP.WAUS"/>
</min>
</timespan>
</set>
</max>
</calculation>
</calcattr>
...
A medida recebe o valor máximo (max) de um conjunto de valores (set). O conjunto de valores contém o elemento 0 (constant) e a diferença horária entre a data de entrega real e a data de entrega pretendida (timespan). Já que o elemento XML attribute cria um conjunto de valores, os operadores apropriados devem, em primeiro lugar, ser utilizados para determinar um valor de atributo para cálculo adicional. Quando determinar o valor de atributo para a função SAP.WAUS, use o operador min para determinar também a data de entrega real mais antiga. São dados 2 elementos ao conjunto de valores criado usando set: {0, (Desired date - Delivery date)}. Ao determinar o máximo do conjunto de valores, um intervalo de tempo negativo resulta em um retorno de 0 enquanto um intervalo de tempo positivo retorna a diferença entre a hora de término da função SAP.AUS e o atributo de processo AT_CUSTDATE_WISH em segundos (unidade base para o tipo de dados timespan).
Como esse novo atributo é um atributo de instância de processo, ele é calculado apenas uma vez para cada instância de processo. Podem ocorrer os seguintes resultados do cálculo:
O novo atributo da instância de processo recebe o intervalo de tempo positivo calculado na unidade Seconds. Se o intervalo de tempo calculado for negativo, o novo atributo de instância de processo receberá o intervalo de tempo 0 seconds.
O novo atributo da instância de processo não é gravado na instância de processo se o cálculo falhar por um ou mais dos seguintes motivos e nenhum valor padrão for especificado:
Exemplo 2
Em cada função de uma instância de processo, o atributo AT_KI_COMPETENCE deve especificar se os valores dos atributos AT_COMPETENCE e AT_CREDIT_AMOUNT de uma função coincidem. Se eles corresponderem, o atributo deve ter o valor 1, caso contrário o valor deve ser 0.
<calcattr name="AT_KI_COMPETENCE" type="OT_FUNC">
<calculation>
<if>
<eq>
<min>
<attribute name="AT_COMPETENCE"
nodetype="OT_FUNC" objectname="this"/>
</min>
<max>
<attribute name="AT_CREDIT_AMOUNT"
nodetype="OT_FUNC" objectname="this"/>
</max>
</eq>
<then>
<constant>
<dataitem value="1">
<datatype name="DOUBLE"/>
</dataitem>
</constant>
</then>
<else>
<constant>
<dataitem value="0">
<datatype name="DOUBLE"/>
</dataitem>
</constant>
</else>
</if>
</calculation>
</calcattr>
Especificar o tipo de nó OT_FUNC e a falta de um nome de objeto leva a que o atributo calculado AT_KI_COMPETENCE seja gravado em todas as funções da instância de processo. No cálculo de atributo, especificar this como o nome de objeto faz com que cada função acesse seus próprios atributos. Neste caso, os operadores abrangentes min e max retornam o valor do atributo de referência, já que o nome de objeto this resulta em um conjunto de atributos contendo apenas um elemento.
Exemplo 3
Por padrão, a hora de início mais antiga de uma função na instância de processo é usada como a hora de início de uma instância de processo:
<calcattr name="AT_START_TIME" type="PROCESS">
<calculation>
<min>
<attribute name="AT_START_TIME" nodetype="OT_FUNC"/>
</min>
</calculation>
</calcattr>
Se forem usadas apenas as horas de início de determinadas funções, essas funções devem ser verificadas para um critério específico. No exemplo seguinte o atributo auxiliar AT_TEMP_TIME é usado para filtrar o critério "Rush order type" (valores de atributo de função AT_AUFTRAGSART). A hora de início real da instância do processo é então determinada a partir das horas de início filtradas das funções.
<calcattr name="AT_TEMP_TIME" type="OT_FUNC">
<calculation>
<if>
<eq>
<filteredattribute name="AT_AUFTRAGSART" nodetype=
"OT_FUNC" objectname="this" filter="EARLY"/>
<constant>
<dataitem>
Pedido urgente
<datatype name="TEXT"/>
</dataitem>
</constant>
</eq>
<then>
<filteredattribute name="AT_START_TIME" nodetype=
"OT_FUNC" objectname="this" filter="EARLY"/>
</then>
</if>
</calculation>
</calcattr>
<calcattr name="AT_START_TIME" type="PROCESS">
<depends attrname="AT_TEMP_TIME" nodetype="OT_FUNC">
<calculation>
<min>
<attribute name="AT_TEMP_TIME" nodetype="OT_FUNC"/>
</min>
</calculation>
</calcattr>
Exemplo 4
O grupo de pedidos deve ser salvo como um atributo de função no atributo AT_KI_AUFTR_GRUPPE. O grupo de pedidos é dado pelos primeiros dois caracteres do número de pedido (AT_AUFTNR). Por exemplo, o grupo de pedidos 40 pertence ao número de pedido 40268755.
O operador subtext extrai a cadeia de caracteres 40 da cadeia de caracteres 40268755 para o atributo de função AT_AUFTNR:
<calcattr name="AT_KI_AUFTR_GRUPPE" type="OT_FUNC">
<calculation>
<subtext beginindex="0" endindex="2">
<filteredattribute name="AT_AUFTNR" nodetype=
"OT_FUNC" objectname="this" filter="EARLY"/>
</subtext>
</calculation>
</calcattr>
Atributo XML |
Descrição |
---|---|
beginindex |
Índice inicial (inclusivo, a partir de 0) |
endindex |
índice final (exclusivo) |
Se nenhum índice final for especificado, a cadeia de resultados começará no índice inicial especificado e terminará no final da cadeia de caracteres de origem.
Aviso
O operador subtext apenas pode ser usado em atributos e constantes do tipo de dados TEXT. Se usar o operador em uma cadeia de caracteres que contém menos caracteres que o número especificado em beginindex ou endindex, o operador retorna o valor NULL.
Exemplo 5
A data 07.04.2003 é extraída do carimbo de data/hora 07.04.2003 17:30:58 e é gravada em todas as funções da instância de processo como o valor do atributo AT_CALEN_DAY .
<calcattr name="AT_CALEN_DAY" type="OT_FUNC">
<calculation>
<createday>
<constant>
<dataitem value="07.04.2003 17:30:58">
<datatype name="TIME"/>
</dataitem>
</constant>
</createday>
</calculation>
</calcattr>
Exemplo 6
Um intervalo de tempo de uma hora (3600 segundos na unidade base) é adicionado no carimbo de data/hora 22.01.2002 14:55:21 e copiado para todas as funções da instância de processo enquanto valor do carimbo de data/hora 22.01.2002 15:55:21 para o atributo AT_ADD_TSP.
<calcattr name="AT_ADD_TSP" type="OT_FUNC">
<calculation>
<addtimespan>
<!-- Time stamp -->
<constant>
<dataitem value="22.01.2002 14:55:21">
<datatype name="TIME"/>
</dataitem>
</constant>
<!— Time span 3600 seconds -->
<constant>
<dataitem value="3600">
<datatype name="TIMESPAN"/>
</dataitem>
</constant>
</addtimespan>
</calculation>
</calcattr>