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. Leer el resto de esta entrada »

SAP PI Cancel Messages with status “Holding”

El otro día al revisar unos mensajes me dí cuenta que estaban encolados en el servidor con el estatus “Holding”, estos mensajes estaban deteniendo a todos los demás y tenía que removerlos, inmediatamente le dí clic a la opción “Canel” pero obtuve este error:

Could not execute action 'Cancel'; error: '{1}' Message: ProfileException in Method: CentralViewManager: processAction( IView, IViewData, UIPeriod, IAttribute, IAttribute ). 
Failed to process the action: CANCEL - general exception. Message:
com.sap.engine.interfaces.messaging.api.message.MessageAccessException:
Could not fail message. Reason: com.sap.engine.messaging.runtime.ClusterException: 
Could not trigger cluster event FAIL_MESSAGE_NOALERT for node 126412050. Reason: com.sap.engine.frame.cluster.message.RemoteClusterException: 
Service "com.sap.aii.af.ms.svc" on cluster element 126,412,050 thrown an exception in receiveWait(), invoked by a request by cluster element 118,105,450.

com.sap.aii.af.ra.ms.impl.app.AdminException: Failed to cancel the message locally.
Reason: Could not fail message cb79d5b0-0844-11dc-92ac-0003ba15f2ae(OUTBOUND), as triggered by admin action.
Reason: Predecessor not in final state.

Y el error es muy claro “Predecessor not is in final state” esto significa que hay un mensaje que no se ha finalizado y está deteniendo a todos los demás, por lo cual debes cancelar primero dicho mensaje para posteriormente remover o dejar pasar los subsecuentes. Leer el resto de esta entrada »

Publicado en General, PI, SAP. Etiquetas: , , . Leave a Comment »

Hibernate / JPA Clear Cache

Manejar persistencia puede ser un poco complejo si no se conoce el funcionamientos de los caches, generalmente cuando tienes configurado el framework para utilizarlos tienes que actualizar los datos obligatoriamente desde el código de tu aplicación.

Si por alguna razón los datos son actualizados en la base de datos y el framework no tiene conocimiento de estos cambios, en el cache vas a tener la información vieja e inconsistente.

Esto NO es un error, depende de la forma en como configuras tus querys y de la arquitectura de tu aplicación.

Para poder indicarle al framework que se ejecute el refresh de forma manual al cache de Nivel 1 puedes hacerlo mediente el siguiente código:

  • Para JPA obtienes la referencia al EntityManager o EntityManagerFactory y ejecutas el método clear().
  • Para Hibernate debes utilizar el método evict().

Es muy importante conocer en que puntos de tu aplicación debes utilizar el cache ya que puede ser integral en todas tus consultas, por entidades o por querys.

Lo recomendable es aplicarlo en consultas recurrentes o de catálogos.

Referencias:

Saludos!

SAP PI Change Client / Cambiar Cliente

Los desarrollos ABAP que envían información a PI mendiante un proxy utilizan la configuración del SLD, esta configuración está asociada mendiante el Technical System, el Business System y el Client.

Para cambiar de cliente tenemos que realizar los siguiente pasos, en el siguiente ejemplo voy a mostrar como modificarlo de HCM a PI:

1. Ingresas al SAP logon de HCM y ejecutas la transacción SLDCHECK. Esto va a abrir el browser con la url “http://<Servername : port>/sld“,  otra alternativa es abrir directamente el SLD en PI si conoces al que esta asociado.

2. Vas a ver la página de configuración del Bussiness System (BS), en ella tienes que seleccionar el BS y en la parte inferiror modificas el cliente al que esta asociado mediante la opción “change“:

SAP PI Business System

SAP PI Business System

Leer el resto de esta entrada »

Set System Variables in Windows


En ocasiones tenemos los permisos restringidos y no podemos accesar a la configuración de variables del sistema de windowos, pero… existe una alternativa (solo windows 7 y 8).

Puedes establecer y modificar las variables desde la terminal, en el siguiente ejemplo se muestra como agregar la variable para Maven:

Abres una terminal y escribes los siguientes comandos:

setx M2_HOME "C:\Users\asanchez\Apps\apache-maven-3.2.1" /M
setx PATH "%PATH%,%M2_HOME%\bin" /M

Con esto ya tenemos cargadas las variables.

Nota: Para que los cambios se vean reflejados debes cerrar y abrir la terminal.

Espero sea útil. Saludos!

Referencias

Important URLs, Transaction’s And ABAP Reports in SAP Process Integration 7.1

 El acordeon que todo PI debe tener a la mano :D

I) Process Integration PI 7.1 URLs

A Design Time Tools URLs
1 http://<host&gt;:<sys>00/dir/start/index.jsp Process Integration PI 7.1 tools
2 http://<host&gt;:<sys>00/sld/index.html System Landscape Directory (SLD)
3 http://<host&gt;:<sys>00/rep/start/repository.jnlp Enterprise Services Repository (ESR)
4 http://<host&gt;:<sys>00/dir/start/directory.jnlp Integration Directory(ID)
5 http://<host&gt;:<sys>00/sr Service Registry(SR)

Leer el resto de esta entrada »

EJB 3 Overview


Recientenmente he tenido que analizar un proyecto web que se encuentra divido en dos partes (backend y frontend), el entregable es un ear con un jar y un war.

Todo el backend esta constriudo con EJB’s y aunque siempre he escuchado pestes de esta tecnología nunca le he dado un vistazo. Así que comencé por leer algunos artículos y en realidad me parece que los EJB’s son una buena iniciativa en Java para simplificar el desarrollo y adoptar mejores prácticas. Particularmente me ha encantado este:

http://refcardz.dzone.com/refcardz/dependency-injection-in-ejb3 Leer el resto de esta entrada »

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 213 seguidores