
Ejemplo de UDF útiles
Después de ver cómo hacer tratamiento de mensajes usando los cambios explícitos de contexto y las funciones de nodo proporcionadas por SAP PI en los apartados anteriores, vamos a profundizar en el tratamiento de los contextos mediante funciones definidas por el usuario para casos más complicados. Este apartado incluye un ejemplo de UDF para quitar duplicados dentro de un contexto, así como algunas indicaciones para otras funciones que pueden resultar útiles cuando estamos tratando contextos en la cola en PI, como la supresión de contextos o agrupación de registros por contexto.
Quitar duplicados dentro de un contexto
En este primer ejemplo, queremos eliminar duplicados en el campo fecha dentro de un mismo contexto. No podemos usar la función removeContexts() para ordenar los registros y quitar duplicados, puesto que necesitamos hacerlo dentro de cada contexto por separado. Por lo tanto, crearemos una función propia (UDF) para hacerlo.
Lo que queremos, en la salida de la función, es tener el mismo número de contextos, pero eliminar las filas duplicadas.

Para esto, el parámetro de entrada a la función será la lista de fechas en formato string y la salida, la lista de resultados, manteniendo los cambios de contexto de la lista inicial, pero sin los valores duplicados.
Recordemos que para tratar los datos a nivel de contexto debemos elegir All Values of a Context como tipo de ejecución al crear la función.

El código de la función será el siguiente, haciendo un bucle dentro de los contextos y añadiendo únicamente los valores únicos, descartando los duplicados, pero sin modificar los contextos existentes.

El resultado será una reducción del número de valores en la cola, manteniendo los cambios de contexto (marcados en gris en la cola).

Eliminar y añadir cambios de contexto
En la cola de los mapeos los valores de cambio y supresión de contextos son constantes. Se puede acceder a ellos usando: ResultList.SUPPRESS y ResultList.CC en una UDF.
Si queremos realizar acciones para los cambios de contexto o contextos eliminados por otra función de tratamiento, solo tendremos que filtrar por estos valores y añadir a continuación el código según nuestras necesidades (eliminar cambios de contexto según una condición o añadir nuevos contextos previamente eliminados, por ejemplo).
public void remove(String[] input, ResultList result, Container container) {
for (int i = 0; i < input.length; i++) {
if (input[i].equals(ResultList.CC)) {
// código para los cambios de contexto
} else if (input[i].equals(ResultList.SUPPRESS)) {
// código para contextos eliminados
}
}
}
De la misma manera, podemos usar el código addValue(ResultList.CC) cuando queramos introducir un cambio de contexto dadas ciertas condiciones de entrada, por ejemplo, después de valores duplicados, tras un cambio de valor para separar listas o a partir de un valor constante dado en la entrada.
Agrupar registros
A veces, se hace necesario agrupar registros de manera diferente al contexto original del mensaje de entrada. En este ejemplo tenemos los usuarios de tres empleados y el correspondiente al responsable que tienen asignado. Necesitamos mapear estos empleados a una estructura de salida en la que los tres empleados se agrupen en un solo contexto bajo el nombre de su responsable de departamento.
Hará falta una UDF que elimine los contextos y agrupe los usuarios bajo un mismo contexto para la estructura formSubject, a la vez que se mapea la formSender como contexto principal con el responsable.

Con este tercer artículo terminamos la serie de tratamiento de contextos en el mapeo gráfico de SAP PI. No dudes en contactar con el equipo de UX/I para aclarar cualquier duda.
Más información:
Quizas te pueda interesar
SAP TechEd 2024:
Principales Anuncios en la Keynote
Como otros años, en octubre tiene lugar en Barcelona la considerada como mayor conferencia tecnológica de SAP: SAP TechEd. Este evento tiene como fin presentar una serie de anuncios de los nuevos productos y evoluciones en SAP. En concreto, esta edición 2024 se centró...
Nuevas capacidades técnicas en BTP
Sapphire 2024 Barcelona
Del 11 al 13 de junio tuvo lugar en Barcelona el evento anual de SAP Sapphire, congreso donde SAP presenta las novedades de sus últimos productos. En esta edición, el foco de SAP ha estado en la “IA generativa”, anunciando las innovaciones y alianzas con las que...
Desbloqueando el Poder de la Inteligencia Artificial en BTP
SAP AI Core En el dinámico mundo de la tecnología empresarial, la evolución constante es clave para mantenerse a la vanguardia. Una de las transformaciones notables ha sido la evolución de SAP Business Technology Platform (BTP) hacia el entorno Cloud Foundry, abriendo...