Acceder a las diferentes apariciones conocidas de un elemento

Cuando hace referencia a o cuando crea el contenido de los mensajes, es muy probable que los datos contengan campos de resolicitud. Si sabe el número de instancias de una campo que se repite y desea acceder a una instancia específica de dicho campo, puede utilizar un índice de matriz como parte de una referencia de campo.

Acerca de esta tarea

Por ejemplo, es posible que desee filtrar la primera línea de una dirección, para acelerar la entrega de un pedido. En el mensaje de ejemplo, siempre aparecen tres instancias del elemento Billling.Address. Para comprobar la primera línea, escriba una expresión similar a la siguiente:

IF Body.Invoice.Customer.Billing.Address[1] = 'Patent Office' THEN
   DO;
     -- more ESQL --
END IF;   

El índice de matriz[1]indica que es la primera instancia del campo de repetición en el que está interesado (los índices de matriz empiezan en 1). Se puede utilizar un índice de matriz como este en cualquier punto de una referencia de campo para, por ejemplo, filtrar la prueba siguiente:

IF Body.Invoice."Item"[1].Quantity> 2 THEN
   DO;
     -- more ESQL --
END IF;   

Puede hacer referencia a la última instancia de un campo de resolicitud utilizando el índice de matriz especial [<] y también a instancias relativas a la última (por ejemplo, la antepenúltima), como se indica a continuación.

  • Field[<]indica el último elemento.
  • Field[<1]indica el último elemento.
  • Field[<2]indica el último elemento pero un elemento (el penúltimo elemento).

También puede utilizar el índice de matriz [>] para representar el primer elemento y los elementos relativos al primer elemento de una manera parecida.

  • Field[>]indica el primer elemento. Esto es equivalente aField[1].

Los ejemplos siguientes hacen referencia a Ejemplo de mensaje utilizando estos índices:

IF Body.Invoice.Customer.Billing.Address[<] = 'Hampshire' THEN 
      DO;
     -- more ESQL --
END IF;   
IF Body.Invoice.Customer.Billing.Address[<2 ] = 'Southampton' THEN
   DO;
     -- more ESQL --
END IF;   

También puede utilizar estos índices especiales para elementos que se repiten un número de veces desconocido.

Supresión de campos que se repiten

Acerca de esta tarea

Si pasa un mensaje con varias resolicitudes de un elemento a través de un flujo de mensajes y desea suprimir algunas de las resolicitudes, tenga en cuenta que el orden de la numeración de las resolicitudes se modifica después de cada supresión. Por ejemplo, si tiene un mensaje con cinco resolicitudes de un elemento determinado y en el flujo de mensajes tiene el ESQL siguiente:

SET OutputRoot.MRM.e_PersonName[1] = NULL;
SET OutputRoot.MRM.e_PersonName[4] = NULL;

Es posible que espere que los elementos uno y cuatro se supriman. No obstante, debido a que los elementos de resolicitud se almacenan en una pila, cuando suprime uno, el anterior ocupa su lugar. Esto significa que en el ejemplo anterior los elementos uno y cinco se suprimen. Para evitar este problema, suprima en orden inverso, esto es, suprime en primer lugar el elemento cuatro y, a continuación, suprima el elemento uno.