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
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
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.
- Luego creamos la interfaz de entrada de tipo inbound ia_Text_Cliente.
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
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
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)
En el receiver determination se indica cual es la interface que va recibir dicha interface previa.
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
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.
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.
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)
fig 13- (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 14- (double click para visualizar mejor)
Bueno aqui les dejo el archivo como resultado , primero claro esta dejamos el archivo XML de ejemplo.
Este es el archivo resultante Global_Log_20101014-112047-592.txt
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'
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
http://help.sap.com/saphelp_nw04/helpdata/en/bc/bb79d6061007419a081e58cbeaaf28/frameset.htm
Buenas Tardes a todos,
ResponderEliminarLes 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
Hola que tal , aqui en los primeros threads puedes ver la parte inicial te mando correo para guiarte
ResponderEliminarTengo un problema al usar recordset structures no definido, no me genera nada si no lo pongo fijo. hay algun parametro que me este faltando?
ResponderEliminarEs un file sender a un idoc.
Saludos desde Mexico.