viernes, 5 de junio de 2009

Message Mapping - Parte I

Fundamentos de Mapeo
Uno de los procesos más importantes en el desarrollo de escenarios es la transformación de mensajes de una estructura hacia otra. Es aquí donde se aplica algunas reglas de negocio dependiendo del contexto , muchas de las reglas son implementadas a través de funciones predefinidas que tiene la herramientas Message Mapping.(PI)
A continuación en este punto se verá el funcionamiento de un Message Mapping.
Primeramente todo escenario de mapeo tiene una interface de entrada y una interfaz de salida y a través del uso funciones de PI o propias se realiza el mapeo propiamente dicho entre elementos o segmentos.
Por ejemplo se tiene este interfaz de entrada , algo sencillo como datos contacto ,tales como nombres, Apellidos y dirección. (etc)

Se necesitará mapear dicha interfaz a esta otra , de una estructura similar.
En este gráfico verán las estructuras tanto la de origeng(Temp_Contact) como la de destino (Temp_Destino)

Caracteristicas Principales


Ahora te presentare las reglas de negocio que se deban de tener en cuenta para el proceso de mapeo.
Nro
Elemento
Destino
Elemento
Origen

Regla de negocio


1
Cliente
Datos

Se creara un cliente por cada elemento origen (nombre) ademas solo para persona mayor o igual de 23 años


2
Client Id
RefID

Extraer los 5 primeros digitos.


3
Correlativo


Generar un numero correlativo con el formato “00000”


4
Fecha Proceso


Se pondra la fecha del dia


5
Hora Proceso


Se pondra la hora del dia.


6
Genero
Titulo

De acuerdo al titulo (Sr , Srta,Sra) se generara el codigo M,F


7
Nombre
Completo
Apellido Paterno
Apellido Materno
Primer Nombre
Segundo Nombre

Se concatenara los nombres con una separacion de una “,” entre los nombres y apellidos tener en consideraicon que no todos tienen segundo nombre.


8
FechaNacimiento
Edad

En base a la edad calcular la fecha de nacimiento


9
Direccion
Direccion

De acuerdo al segmento dirrecion


10
Direccion1
Direccion
Nro

Se concatenara a la direccion 1 de acuerdo al numero


11
Ciudad1
Ciudad

Se concatenara a la ciudad 1 de acuerdo al numero


12
Direccion1
Direccion
Nro

Igual (7)


13
Ciudad1
Ciudad

Igual (8)


14
Direccion3
Direccion
Nro

Igual (7)


15
Ciudad3
Ciudad

Igual (8)



Pues bien una vez establecidas las reglas de negocio comenzaremos con el mapeo.
Estas son las funciones propias de la herramienta




Primeramente una ves que se tiene las interfaces, simplemente se debe de identificar el elemento de destino, luego el elemento de origen y bastaría simplemente con arrastrar y soltar sobre el elemento indicado, otra manera es realizar doble click sobre el elemento de destino y doble click sobre el elemento de origen y enlazar ambos elementos. El mismo procedimiento es para las funciones y demas.


Caso resuelto



1
Datos
Nombre
Se creara un cliente por cada elemento origen (nombre) ademas solo para persona mayor o igual de 23 años.


De acuerdo a la primera regla se creará tantos clientes como segmentos (Datos) venieran y que tengan una edad mayor o igual a 23 años. Se van a utilizar dos funciones , greater (Categoría Aritmethics) de la cual recibirá dos parámetros en el cual se evaluará si el primer elemento es mayor que el segundo elemento , el resultado que emita sera de tipo bolean(trae or false) , el segundo parámetro es una constante (Categoria constant ) asi mismo se usará la función ifwithoutelse( el cual se recibirá parámetros boolean y procederá de acuerdo se indique en la parámetro de salida (el nodo Datos).
2
Client Id
RefID
Extraer los 5 primeros digitos.


La segunda regla de negocio solicta extraer los 5 primeros digitos del elemento de origen pues bien para esto se utilizar una funcion substring de la categoria(Text), para esto se tiene que configurar cuantos valores se van a extraer para esto das doble click sobre la funcion indicando la posicion de inicio y la cantidad de caracteres a extraer.




3
Correlativo

Generar un numero correlativo con el formato “00000”

Para esta regla se necesita un contador por cada elemento generado pues bien se puede utilizar uno propio (UDF) o utilizar la funcion counter , a este resultado tendremos que formatear con otra funcion el formatnumber (ambas de la categoria Arithmetic) y al igual que la funcion anterior se decide el formato que se va a tener , el contador se va a generar por cada instancia creada.



4
Fecha Proceso

Se pondra la fecha del dia
5
Hora Proceso

Se pondra la hora del dia.

Para estos casos se necesita una funcion currendate (Categoria Date) de la cual se puede escoger el formato de destino sea fecha (yyyy/MM/dd) como hora (HH:mm:ss)


6
Genero
Titulo
De acuerdo al titulo (Sr , Srta,Sra) se generara el codigo M,F

Para este caso podriamos utlizar funciones booleanas y comparar caso x caso sin embargo podemos utilizar el Fix Value ( Categoria - Conversions) en el cual se agregan a la derecha los valores de entrada y a la derecha los valores de salida.
7
Nombre
Completo
Apellido Paterno
Apellido Materno
Primer Nombre
Segundo Nombre
Se concatenara los nombres con una separacion de una “,” entre los nombres y apellidos tener en consideraicon que no todos tienen segundo nombre.
Para esta regla vamos a utilizar la función contenate (Categoria Tex) ( primeramento vamos a concatenar tanto el Apellido paterno como Apellido Materno ) al usar dicha función debemos indicarle el valor de concatenacion en este caso sera un espacio en blanco , lo mismo seria para el caso del nombre con la salvedad que no en todos los registros vendrá el segundo elemento por lo cual eviara un valor valor nulo al mapear con la funcion concat simplemente saldra error , para evitar esto se puede usar otra funcion que envie un valor por defecto este seria el MapWithDefault (Categoria Node function), al finalizar ambos resultado debemos concatenar una vez más agregando para este caso un coma (“,”) como valor de concatenación.



8
AnnioNacimiento
Edad
En base a la edad calcular la fecha de nacimiento

Para esto simplemente se restara la fecha actual con la edad para hallar la fecha de nacimiento.e utilizaran dos funciomes currentdate(formato YYYY) y sub (Substract categoria Arithmetic) del cual restara un valor de otro





9
Direccion
Direccion
De acuerdo al segmento dirrecion
10
Direccion1
Direccion
Nro
Se concatenara a la direccion 1 de acuerdo al numero
11
Ciudad1
Ciudad
Se concatenara a la ciudad 1 de acuerdo al numero
12
Direccion1
Direccion
Nro
Igual (7)
13
Ciudad1
Ciudad
Igual (8)
14
Direccion3
Direccion
Nro
Igual (7)
15
Ciudad3
Ciudad
Igual (8)


Testing
Hay dos maneras de hacer testing a modo de diseño y otra en ejecución a modo de diseño simplemente haciendo click derecho sobre la función en display queue otra manera es ir a la pestalla test.
En el cual se puede crear ejemplos de prueba para realizar el resultado final de todos los segmentos



Para el testing final aqui tengo el archivo XML (Descargar)

viernes, 29 de mayo de 2009

Nuevo foro de SAP PI

Saludos cordiales,

Se creo un foro para establecer una mejor comunicación entre los interesados en SAP PI.

Pueden acceder y registrarse en el siguiente enlace.

http://sapxiperu.my-place.us/foro

Gracias.

viernes, 22 de mayo de 2009

El Primer Desarrollo en PI (Parte 1)

Antes de partir describiendo los pasos de este ejercicio voy a empezar explicando el objetivo.

La idea es transformar la estructura de un Archivo XML a otra estructura diferente (ver Cuadros 1 y 2). Aunque este cambio de estructura pareciera un poco irrelevante lo que intentamos es explorar los elementos básicos que se necesitan utilizar para implementar una transformación básica en PI.

Para empezar quisiera sugerir que vayan repasando sus nociones elementales de XML, básicamente estructura y terminos, lo que si les sugeriría para posteriores artículos es que vayan repasando mas sobre XML que como verán mas adelante es la estructura base en PI. Adicionalmente quisiera disculparme por los terminos en Inglés que vayan encontrar, lamentablemente solo dispongo de una versión en Inglés de PI y pienso que no es adecuado hacer traduccion de algunos de sus componentes ya que podria generar más confusión que ayuda.

I. Pasos previos...

Primero asegurarse que contamos con las herramientas necesarias para hacer un desarrollo en PI, por lo cual verificar que se cuenta con lo siguiente:

  • Acceso a PI dentro del SAP GUI (Consulte con el equipo de seguridad y el el equipo de "basis" para que le den el acceso adecuado)

  • Derechos necesarios para ejecutar la transacción: SXMB_IFR y a todos sus componentes.

  • Tener instalado en su Computadora Personal el ambito de ejecucion de Java oesa el Java Runtime Environment (JRE) versión 1.4.2_XX

II. Plan de implementación...

Luego de que nos hayamos asegurado de que tenemos a los accesos y herramientas debemos asegurarnos de contar con la siguiente información:

  1. Estructuras de origen y destino que vamos utilizar, es lo equivalente a la definición de la estructura de una tabla (nombre de campos, tipos, valores por defecto, restricciones) quizás un poco más flexible considerando que son estructuras XML y que estas pueden aceptar varios niveles de anidamiento y ocurrencia.

  2. Determinar las reglas que se van a utilizar para convertir la estructura de origen a la estructura de destino, para nuestro caso esto será casi intuitivo, pero para ejemplos posteriores veremos situaciones más complicadas.

  3. Determinar el medio por del cual se va obtener y dejar la información que se va procesar en PI. Para nuestro caso en particular nos referimos al folder y nombre del archivo de origen y el nombre o nombres de los archivos de destino. En ciertos casos en particular vamos a necesitar de reglas para obtener y dejar el mensaje esto más adelante será explicado.

Para nuestro caso en particular esta es la información requerida:

  1. Estructuras de origen y destino

    • Origen

    <origen>

    <nombre>Alejandra</nombre>

    </origen>

    Cuadro 1

    • Destino

    <destino>

    <mensaje>Hola Alejandra</mensaje>

    </destino>

    Cuadro 2

  2. Regla
  3. Se tomara el valor "Hola " y se concatenara con el valor del elemento <nombre> de la estructura origen y se grabara en el Elemento <mensaje> del destino.

  4. Archivo de Origen/Destino
  5. Se denominara "ArchivoDeOrigen.xml" se ubicara en el directorio "\\servidor\origen"

    Se denominara "ArchivoDeDestino.xml" que se ubicara en el directorio "\\servidor\destino"

III. Empezando…

Comenzare por un resumen de las tareas y posteriormente explicare con más detalle cada punto, estos temas van a ser complementados en posteriores artículos con informacion adicional que les ayudara a consolidar sus conocimientos, se que posteriormente a estos pasos te estaras preguntando el por que, eso paulatinamente lo iremos cubriendo con nuevos articulos:

    SLD

  1. Crear el Software Component Version en el System Landscape Directory (SLD)
  2. Integration Repository

  3. Importar el Software Component Version en el Integration Reposity (IR)
  4. Crear los Namespaces
  5. Crear los Data Types de las estructuras de Origen y de Destino
  6. Crear los Message Types
  7. Crear los Message Interfaces
  8. Crear el Message Mapping
  9. Crear la Interface Mapping
  10. Integration Directory

  11. Crear Scenario
  12. Crear el Party de Origen y el Party de Destino
  13. Crear el Service de Origen y El Service de destino
  14. Crear el Communication Channel de origen y el Communication Channel de destino
  15. Crear el Sender Agreement y Receiver Agreement
  16. Crear el Receiver Determination y Interface Determination
  17. Message Monitoring y Runtime Workbench

  18. Verificar que se hayan ejecutado correctamente los pasos del Pipeline
  19. Verificar que la información ha pasado correctamente por los adaptadores.

Estos son los pasos basicos luego de que te hayas asegurado de que ellos hayan sido ejecutados correctamente estarás listo a desarrollar nuevos ejercicios de transformación en el proxímo capitulo empezaremos a dar mas detalles.