martes, julio 05, 2011

Value Mapping

El mapeo por valor (value mapping) es una función estándar de PI que permite realizar asignaciones de valores en función de la relación definida en el sistema. Esta opción solo es válida para relaciones entre valores 1 a 1. A diferencia con la función de asignación de valores fijos (FixValues), el value mapping permite reutilizar y mantener fácilmente las relaciones debido a que sus valores se almacenan en el Integration Directory. Mientras que con FixValues, la relación se establece a nivel local entre los campos mapeados.
Para definir un mapeo de valores, hay que ir a la opción Tool à Value Mapping del Integration Builder (Integration Directory). 


A continuación indicaremos de qué manera deseamos insertar las relaciones. Existen 2 modos principales de definirlos pero, al final, el resultado siempre es el mismo. En este caso, escogemos el mapeo por agencias e introducimos el nombre de los agentes implicados y de los esquemas que vamos a definir o, si ya están definidos y vamos a introducir más relaciones, los seleccionamos mediante el match code.


En la siguiente pantalla es donde se definen las distintas relaciones del mismo esquema. Cada relación tiene asociado un ID de grupo que sirve para identificarla, se recomienda que el ID sea único. Como se puede apreciar, por cada relación definida se crea un objeto del tipo Value Mapping Gruop.


Una vez definidos los grupos necesarios, podremos realizar  mapeos de valor en el ESB. Hay que tener en cuenta que en este caso los mapeos se realizan en tiempo de ejecución (Integration Directory), es por este motivo por el que se pide que se introduzca el contexto del mapeo que, para este caso, es http://sap.com/xi/XI.


Pero ¿qué pasa cuando los valores a introducir son muchos? En este caso no es factible meterlos uno a uno a mano. Es por ello que SAP pone a disposición unos servicios que permiten actualizar los grupos de mapeo desde un sistema externo donde se encuentren las tablas. Para ello basta registrar e implementar los proxies correspondientes (según se desee realizar la actualización de manera síncrona o asíncrona) en el sistema donde estén los datos almacenados. El registro de servicio se realiza mediante el navegador, introduciendo la dirección que aplique:
  • http://server:port/ProxyServer/register?ns=http://sap.com/xi/XI/System&interface=ValueMappingReplication&bean=localejbs/sap.com/com.sap.xi.services/ValueMappingApplication&method=valueMappingReplication (escenario de réplica asíncrono)
  • http://server:port/ProxyServer/register?ns=http://sap.com/xi/XI/System&interface=ValueMappingReplicationSynchronous&bean=localejbs/sap.com/com.sap.xi.services/ValueMappingApplicationSynchronous&method=valueMappingReplicationSynchronous (escenario de réplica síncrono)
Si todo ha ido bien, al registrarlo aparecerá el siguiente mensaje en el navegador:

Interface http://sap.com/xi/XI/System#ValueMappingReplication registered with value localejbs/sap.com/com.sap.xi.services/ValueMappingApplication:valueMappingReplication

El siguiente paso sería implementar el proxy de servicio correspondiente del componente SAP BASIS, que en este caso es ValueMappingReplicationOut, o copiarlo a un espacio de nombre de un componente de software propio (incluyendo los objetos dependientes)


Generamos el proxy en el sistema ECC e implementamos el programa que obtiene los valores de la tabla y llama al proxy con los valores correspondientes. En este blog se muestra un ejemplo: http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/1301

NOTA: hay que tener en cuenta que, para la recepción es necesario definir un proxy en PI con el prefijo /MessagingSystem/receive/JPR/XI. Para más información mirar el apartado de actividades de Value Mapping Replication for Mass Data

Problemas encontrados


Error de autorización

Al enviar la información puede aparecer un problema de autorización.


 

Esto se puede dar por no haber puesto la opción "Use Logon Data for Non-SAP Sytem" en el proxy receptor. En caso contrario, puede deberse a faltas de roles / perfiles:

Error de aplicación (JAVA_PROXY.APPLICATION_FAULT)

Este error puede deberse a que se haya registrado mal el proxy Java de entrada. En mi caso este error se daba a que la dirección de registro que aparecía en la guía Value Mapping Replication for Mass Data in PI 7.0 or PI 7.1:
  • http://server:port/ProxyServer/register?ns=http://sap.com/xi/XI/System&interface=ValueMappingReplicationOutSynchronous&bean=localejbs/sap.com/com.sap.xi.services/ValueMappingApplicationSynchronous&method=ValueMappingReplicationOutSynchronous
No se correspondía con la que aparecía en el portal de SAP:
  • http://server:port/ProxyServer/register?ns=http://sap.com/xi/XI/System&interface=ValueMappingReplicationSynchronous&bean=localejbs/sap.com/com.sap.xi.services/ValueMappingApplicationSynchronous&method=valueMappingReplicationSynchronous
Al haber registrado la dirección de la guía, el adaptador proxy devolvía el siguiente error:

 

Al registrar la URI correcta (la del portal de SAP), la intefaz funcionó como se esperaba.


Referencias

No hay comentarios: