Exemplo de cálculos de atributos

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
(opcional)

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