jueves, 14 de octubre de 2010

Scenario Flat File.

Hola que tal , nuevamente luego de un gran tiempo retomaremos poco a poco con el blog y es que realmente hay ciertos momentos en los proyectos que no te alcanza el tiempo para las diversas labores que uno desea hacer como uno desea.

Bueno esta vez volveremos con temas puntuales como son tipos de Scenario Flat File - IDOC - JDBC HTTP etc.

Scenario XML - Flat File
Este es uno de los scenarios en muchos casos el más básico y solicitado a la vez del cual se desea transformar de un archivo XML a un formato texto o viceversa. Para esto vamos a tomar como ejemplo la estructura de ejemplo que se hizo anteriormente Mapping 1ra Parte puedes verlo aca.


De acuerdo a las estructuras anteriores se realizaba el mapeo de una estructura llamada contactos a una de clientes con parecida estructura sin embargo se tiene que considerar algunas reglas de negocio.


El requerimiento es el siguiente una empresa llamada Xtratogen maneja información de contactos (clientes) dicha información lo maneja a través de archivos XML , la otra empresa(Global Logistic) desea recibir dicha información en formato de tipo texto.

De acuerdo a la siguiente estructura la información del cliente separada por "|" y la dirección separada "*"
Por ejemplo: Cod001|Luis|Ortiz|M|...*Av Luna*Lima*Peru.


Asi mismo desea el nombre del archivo tenga la siguiente nomenclatura.
Global_Log_[Fecha Proceso en el formato yyyyMMdd-HHmmss-SSS]

Vamos a realizar paso a paso el scenario.

Creamos los objectos en Integration Repository.


Interface Objects
- Creamos el DataType

Como podrás ver tenemos 2 estructuras una llama contacto y otra llamada cliente. como dije anteriormente estas estructuras se obtuvo de un tema anterior. Message Mapping


Contact Fig 01- (double click para visualizar mejor)

Client Fig 02- (double click para visualizar mejor)


Crear el Message Type.
- Creamos el Message Type Contact y Cliente usando los data type creados anteriormente.

Crear los interface Type.
- Creamos la interfaz de salida de tipo outbound oa_XML_Contact teniendo en base el Message type creado anteriormente.


Fig 03- (double click para visualizar mejor)

- Luego creamos la interfaz de entrada de tipo inbound ia_Text_Cliente.


Fig 04- (double click para visualizar mejor)

Mapping Objects.

Creamos el message mapping llamado
XML_Contact_to_Text_Cliente , como te mencione anteriormente la lógica de mapeo esta en el tema anterior Mapping 1ra Parte



Fig 05- (double click para visualizar mejor)

Creamos el interface mapping oa_XML_Contact_to_ia_Text_Cliente indicando las interfaz de entrada , salida y el mapping creado anteriormente.

Fig 06- (double click para visualizar mejor)

Una vez creado los objetos en Repository ahora crearemos los objetos en Configuration para indicar los parametros necesarios para convertir el archivo de XML a texto

Configuration


Para esto vamos a crear un scenario Test.


Creare los Party y luego los business services o business system , la diferencia simplemente es un business system es aquel sistema en el cual tu tienes control y business service es aquello que no tengas control. Como se describio el caso tu tienes tu sistema en el cual trabaja con XML sin embargo quisiera integrar dicho sistema con una empresa externa y dicha empresa ha solicitado que se envie en formato texto separado por "|" y *.


Como podras visualizar esta es listado de objetos que se deben de crear en la parte Integration Directory

Fig 07- (double click para visualizar mejor)

Luego de haber creado los parties y servicios creamos los comunication channels que serán los encargados de enviar y recibir la información en el formato indicado comencemos con el canal de envio (sender) en este caso CC_XML_SEND

Fig 08- (double click para visualizar mejor)

1.- El tipo de adaptador sera de tipo File.
2.- Protocolo del mensage tipo File tambien.
3.- configurarmos el directorio donde se van a enviar los archivos XML en el file name para un mejor filtro he puesto aquellos archivos de extensión XML

Creamos el sender agrement escogemos el party,service,interface.. Al crear escogeremos el canal que va transportar el archivo xml a PI.


fig 09- (double click para visualizar mejor)

En el receiver determination se indica cual es la interface que va recibir dicha interface previa.


fig 10- (double click para visualizar mejor)

Luego creamo el interface determination se indicara el mapping a ser utilizado en este caso de acuerdo al interface mapping.


fig 11- (double click para visualizar mejor)


Finalmente se crea el receiver agrement en el cual se indicar los parametros para recibir dicho mensaje y en el caso convertir al formato flat file. Para esto seleccionar el protocolo de tipo File Content Conversion. Al seleccionar se observara que se ha agregado


un tab mas para indicar la configuracion necesaria para dicho formato.
A continuacion tratare de explicar a breve modo como funciona dicho configuracion de este tipo de formato.



fig 12- (double click para visualizar mejor)




Para lograr el nombre del archivo de la siguiente forma Global_Log_[Fecha Proceso en el formato yyyyMMdd-HHmmss-SSS] agregamos el nombre "Global_Log_" en el FileNameScheme y escogemos en processing parameters "FileConstruccionMode" AddTimeStamp

fig 13- (double click para visualizar mejor)

fig 14- (double click para visualizar mejor)

En el Parametro Recordset Structure se ponen las estructuras indicadas en la interfaz de salida


Parametro NameA.addHeaderLine
0 – No se incluye ningun encabeza.
1 – Se incluye encabezado con el nombre de las columnas indicas en el XML document.
2 – Igual el 1 solo que se incluye en blanco.


Parametro NameA.beginSeparator.


Aqui puedes poner un valor (cadena) como primera columna del archivo de texto. Es un valor que antecede a la cadena final de toda la informacion.


Parametro NameA.fieldSeparator
Aqui se especifica la cadena que va separar cada elemento en este caso se ha puesto el valor "|"


Parametro NameA.endSeparator
Se especifica el valor que va indicar la finalizacion del registro en este caso se esta poniendo el salto de linea 'nl'

Bueno aqui les dejo el archivo como resultado , primero claro esta dejamos el archivo XML de ejemplo.




fig 15- (double click para visualizar mejor)

Este es el archivo resultante Global_Log_20101014-112047-592.txt


fig 16- (double click para visualizar mejor)


Si deseas mas informacion respecto a dicha configuracion de parametros puedes visitar este link
http://help.sap.com/saphelp_nw04/helpdata/en/bc/bb79d6061007419a081e58cbeaaf28/frameset.htm


3 comentarios:

  1. Buenas Tardes a todos,


    Les cuento que soy nuevo en el mundo de SAP. En mi compañía tienen licencias de SAP PI y desean iniciar su explotación, si alguien me puede indicar manuales de PI y dar tips de como incursionar adecuadamente en PI, les agradecería mucho.

    Saludos,


    Holger : mail: huribep@gmail.com

    ResponderEliminar
  2. Hola que tal , aqui en los primeros threads puedes ver la parte inicial te mando correo para guiarte

    ResponderEliminar
  3. Tengo un problema al usar recordset structures no definido, no me genera nada si no lo pongo fijo. hay algun parametro que me este faltando?

    Es un file sender a un idoc.

    Saludos desde Mexico.

    ResponderEliminar