SAP PI JDBC Mapping Date/Timestamp Oracle

Me encanta aprender este tipo de detalles en el PI que día a día pueden simplificar las cosas y esta ocasión quiero mostrar como se puede mapear hacía JDBC de los tipos de datos DATE y TIMESTAMP de Oracle (aunque se puede utilizar lo mismo para otras bases de datos).

Como contexto quiero mencionar que en el SAP Comunity Network (SCN) hay ejemplos para hacer esto de forma gráfica y estan bién… hasta cierto punto, ya que debes validar por tus propios medios la conversión para obtener el valor del campo que necesita la base de datos, el ejemplo básico es este:

SAP PI Oracle Timestamp

 

Como se puede ver en esta imágen el valor de la fecha es tomado del campo currentDate y se asgina a un campo fecha, sin embargo  esto solo es para un campo. Ahora pensemos que tu mapeo tiene más de un campo fecha, tal vez 6, 10 o más… entonces tener que darle mantenimiento a cada uno se vuelve una locura.Y si vamos a un escenario más real a veces tienes que validar si el campo existe o no,  si el valor es vacio o null:

SAP PI Oracle Timestamp with null or empty validation

Afortunadamente hay una forma de simplificar esto y de centralizarlo gracias a las funciones Java😀 y nuestro mapeo pasa a convertirse en algo como esto:

SAP PI Mapping JDBC java funtcion TO_DATE, TIMESTAMP Oracle

Mucho mejor cierto??, la magia esta en una simple función Java que hace exactamente lo mismo que el mapeo gráfico, pero es más eficiente y se puede reutilizar en varios campos.  Vamos a ver en el editor de funciones  como debes crearla:

El código hace lo siguiente:

  • Valida que el valor del campo exista, si es nulo o si el valor es vacio el tag NO va a ser creado
  • Si el campo tiene un valor, se va a crear el texto con la función y el formato indicado

Estas seis hermosas líneas de código nos otorgan las siguientes ventajas:

  • Mayor rendimiento en la conversión
  • Fácilita el mantenimieto
  • Se puede reutilizar en otros mapeos

Entonces por ejemplo si yo quiero mapear un campo TIMESTAMP simplemente coloco el nombre de la función y el valor del formato:

Y el resultado es el siguiente:

Si el campo es vacio el tag no se va a generar:

y eso es todo, puedes reutilizar esta función Java en todos los campos ya sean de tipo DATE o TIMESTAMP o con cualquier otra función de ORACLE.

Espero que el tip sea de ayuda.

Saludos!

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s