• Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
S4PCADEMY_Logo
  • Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
Twitter Linkedin Instagram

S4PCADEMY_Logo
  • Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
Twitter Linkedin Instagram
pi  ·  po  ·  sproxy  ·  Technical Articles

Cómo importar datos desde un archivo de texto a través de PI a ERP

By s4pcademy 


Nuestra situación inicial es la siguiente: tenemos archivos de texto con valores separados por comas que queremos importar a nuestro sistema ERP automáticamente. Estos archivos están en un servidor SFTP. Por lo tanto, nuestro sistema PI debería buscar de vez en cuando si hay nuevos archivos disponibles en el servidor SFTP. Si es así, los atraparé a todos y los enviaré a nuestro sistema ERP. Un archivo puede contener de una a muchas entradas, que deberían enviarse a nuestro sistema ERP en una sola llamada.

Yo fluyo

Yo fluyo

Para empezar de nuevo, necesitamos un sistema PI (¡sorpresa!), en nuestro caso un SAP Netweaver Process Integration 7.50, una conexión ESR que funcione a nuestro sistema SAP ERP para configurar el SPROXY y un servidor SFTP que podamos usar para probar el escenario.

Comencemos con una mirada cercana a nuestro archivo de datos y los tipos de datos que queremos importar.

1;Aragorn;Gondor
2;Boromir;Gondor
3;Galadriel;Valinor
4;Samweis;Hobbington

Nuestro archivo tiene cuatro entradas y cada entrada consta de Id, nombre y tierras. Bastante simple hasta ahora. Entonces, comencemos de nuevo y creemos los tipos de datos correspondientes. Definimos tres tipos de datos, un DataEntry que representa una sola línea de nuestro archivo de datos, un DataList y un DataListExternal. DataListExternal es el tipo de datos que obtenemos de nuestro archivo de datos del servidor SFTP, DataList es el tipo de datos que enviamos a nuestro sistema ERP. Tenemos dos tipos de datos para lo mismo, porque podrían diferir si hacemos algún mapeo de mensajes, etc.

Entrada de datos

Entrada de datos

Lista de datos

Lista de datos

Y porque añadir objetos a nuestro escenario es muy divertido. Además, creamos algunos tipos de mensajes. Como puede ver, el espacio de nombres XML está vacío. Esto es con plena intención y convicción, porque más tarde causó algunos problemas con el mapeo de mensajes.

Mensaje%20Tipos

Tipos de mensajes

Y, por supuesto, también necesitamos interfaces de servicio. Así que sigamos adelante y creemos algunos. Y tenga en cuenta, como siempre, que necesitamos uno para la comunicación entrante y otro para la comunicación saliente.

Servicio%20Interfaz%20Entrante

Interfaz de servicio entrante

Servicio%20Interfaz%20Operación%20Entrante

Operación de interfaz de servicio entrante

Servicio%20Interfaz%20Saliente

Interfaz de servicio saliente

Servicio%20Interfaz%20Operación%20Saliente

Operación de interfaz de servicio saliente

Y solo para completar, también agregamos un mapeo de mensajes simple y un mapeo operativo. Asignamos nuestra DataListExternal de origen a la DataList de destino.

Mensaje%20Asignación

Asignación de mensajes

Mensaje%20Asignación%20Definición

Definición de asignación de mensajes

Asignación%20Operativa

Mapeo de operaciones Operación%20Asignación%20Definición

Definición de asignación de operaciones

Al final del día, nuestro espacio de nombres se ve así y está lleno de pequeños objetos de diseño felices.

Ahora tenemos todos los objetos necesarios en nuestro Enterprise Service Browser. Ahora podemos cambiar a nuestro sistema SAP ERP y llamar a la transacción SPROXY. En Fuente -> ESR -> SWC encontramos nuestro espacio de nombres y los objetos recién creados. Con un clic derecho del mouse en nuestra interfaz de servicio SI_ImportData, podemos generar la interfaz de proxy y la clase de implementación, que contiene el método que se llama cuando el sistema PI envía datos al sistema ERP.

SPROXY

SPROXY

Apoderado

Apoderado

Clase%20Método

Método de clase

Estamos casi alli. Entonces ahora necesitamos un Canal de Comunicación, un adaptador receptor para enviar mensajes a nuestro sistema ERP. Usamos un adaptador SOAP para enviar mensajes HTTP.

Comunicación%20Canal%20Proxy%20Receptor

Receptor proxy del canal de comunicación

Comunicación%20Canal%20Proxy%20Receptor

Receptor proxy del canal de comunicación

Y no olvidemos que necesitamos un canal de comunicación para obtener los archivos de datos del servidor SFTP. Usamos un adaptador SFTP para esto. Pero hay más Este pequeño adaptador tiene que hacer mucha magia para proporcionar los datos correctos para los procesos posteriores. Al principio, creamos un canal de comunicación llamado CC_SFTP_Sender y completamos todo lo que este pequeño necesita para comunicarse, como la dirección del servidor, el puerto, el nombre de usuario, la huella digital, etc. Tenemos que especificar un nombre de archivo y un directorio. Este es el lugar y el archivo que busca el adaptador cuando se conecta al servidor SFTP. Podemos especificar si el archivo debe eliminarse después del procesamiento o no y podemos elegir un intervalo de sondeo. Con fines de prueba, establecemos el intervalo de sondeo en unos pocos segundos, porque el tiempo es dinero.

Comunicación%20Canal%20SFTP%20Remitente

Canal de comunicación SFTP Remitente

Comunicación%20Canal%20SFTP%20Configuración

Configuración de SFTP del canal de comunicación

Ahora bien, esta es la parte donde ocurre la magia. Para el procesamiento posterior necesitamos un archivo XML. Así que tenemos que convertir nuestro archivo de datos separados por comas a XML. Para esta tarea podemos usar MessageTransformBean, que podemos llamar como módulo en la secuencia de procesamiento.

Comunicación%20Canal%20SFTP%20Módulos

Módulos de canal de comunicación SFTP

Configuramos el módulo con los siguientes parámetros. El parámetro xml.fieldNames tiene que coincidir exactamente con los elementos del tipo de datos que especificamos antes, porque distingue entre mayúsculas y minúsculas.

Clave del módulo Nombre del parámetro Valor del parámetro
monte Transformar.Clase com.sap.aii.af.sdk.xi.adapter.Conversión
monte xml.conversionType SimplePlain2XML
monte xml.documentName DataListExterno
monte xml.endSeparator ‘nl’
monte xml.fieldNames Id,nombre,tierras
monte xml.fieldSeparator ;
monte xml.processFieldNames desdeConfiguración
monte xml.structureTitle FechaEntrada

Y por último, pero no menos importante, necesitamos una configuración integrada en la que podamos completar el círculo y todo encaje. Podemos hacer esto con un iFlow como se ve en la primera captura de pantalla o “a mano” con el Integration Builder. Así que nos arremangamos y lo hacemos. Creamos una nueva Configuración Integrada y usamos nuestro CC_SFTP_Sender como comunicación entrante. Para nuestra interfaz de receptor utilizamos SI_ImportData y nuestro Operation Mapping OM_DataListExternalToDataList y para el procesamiento de salida utilizamos CC_Proxy_Receiver.

Configuración%20integrada

Configuración Integrada

Configuración%20integrada

Configuración Integrada

Configuración%20integrada

Configuración Integrada

Configuración%20integrada

Configuración Integrada

¡Y hemos terminado y listos para rodar!

¡Pero espera! ¿Cómo sabemos que esto realmente está funcionando? Así que volvemos a nuestro sistema ERP, abra nuestro método ZZII_SI_IMPORT_DATA~SI_IMPORT_DATA y coloque un punto de interrupción externo allí. Podemos especificar el usuario para el punto de interrupción externo en Más -> Utilidades -> Configuración -> Depuración.

Depurar

Depurar

Ponemos un archivo en nuestro servidor SFTP y esperamos a que nuestro CC_SFTP_Sender lo obtenga desde allí. Después de unos segundos, nuestro punto de interrupción llega y aparece el editor de depuración.

Punto de ruptura

Punto de ruptura

Entrada%20datos

Datos de entrada

Existe la variable estándar «entrada» donde podemos encontrar nuestros datos que han sido enviados. Y como podemos ver, nuestros amados personajes de LotR han llegado sanos y salvos a su destino.

Tienes razón. Hay una manera más fácil de hacer esto. Si no necesita una asignación de mensajes en su escenario, simplemente puede omitir las operaciones y la asignación de mensajes y simplemente crear el XML en el adaptador SFTP. Esto funciona bastante bien. Debe tener en cuenta que el nombre del documento y el título de la estructura deben coincidir exactamente con el tipo de datos. Tengo problemas con el espacio de nombres XML. El adaptador lo imprimió como «ns:http://namespace», pero el PROXY esperaba «ns0:http://namespace». No pude editar ns a ns0, así que me deshice de los espacios de nombres XML en la definición del tipo de mensaje. Esto funcionó para mí.

No es ciencia espacial, pero me llevó algún tiempo ponerlo a trabajar. Apreciaría mucho sus pensamientos y comentarios sobre el tema, para mejorar el escenario.

Para más información sobre ese tema ver:

Integración de procesos SAP



Source link


archivocomodatosdesdeERPimportartextotravés

Artículos relacionados


admin's blog  ·  Blogs  ·  Home
C_BOWI_4302 BO WEBI: ¡Aprobado con exámenes de práctica! | Preparación ERP
Technical Articles
Cómo puede solucionar errores en IAS relacionados con SSO y S/4 HANA
#BTPDevOps  ·  #CICD  ·  #DevOps  ·  #SAPCICD  ·  CICD for SAP BTP  ·  Sonarqube  ·  Technical Articles
Cómo agregar escaneos de SonarQube a su tubería de CI/CD

Deja tu comentario Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

SAP CPI: CI/CD de cero a héroe – Revisión de código
Previo
Cómo evitar la eliminación accidental de datos en portlets MDF
Siguiente

Madrid

Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010

México

Paseo de la Reforma 26
Colonia Juárez,  Cuauhtémoc
Ciudad de México 06600

Costa Rica

Real Cariari
Autopista General Cañas, 
San José, SJ 40104

Perú

Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073

Twitter Linkedin Instagram
Copyright 2022 | All Right Reserved.
Cookies Para que este sitio funcione adecuadamente, a veces instalamos en los dispositivos de los usuarios pequeños ficheros de datos, conocidos como cookies. La mayoría de los grandes sitios web también lo hacen.
Aceptar
Cambiar ajustes
Configuración de Cookie Box
Configuración de Cookie Box

Ajustes de privacidad

Decida qué cookies quiere permitir. Puede cambiar estos ajustes en cualquier momento. Sin embargo, esto puede hacer que algunas funciones dejen de estar disponibles. Para obtener información sobre eliminar las cookies, por favor consulte la función de ayuda de su navegador. Aprenda más sobre las cookies que usamos.

Con el deslizador, puede habilitar o deshabilitar los diferentes tipos de cookies:

  • Bloquear todas
  • Essentials
  • Funcionalidad
  • Análisis
  • Publicidad

Este sitio web hará:

Este sitio web no:

  • Esencial: recuerde su configuración de permiso de cookie
  • Esencial: Permitir cookies de sesión
  • Esencial: Reúna la información que ingresa en un formulario de contacto, boletín informativo y otros formularios en todas las páginas
  • Esencial: haga un seguimiento de lo que ingresa en un carrito de compras
  • Esencial: autentica que has iniciado sesión en tu cuenta de usuario
  • Esencial: recuerda la versión de idioma que seleccionaste
  • Functionality: Remember social media settings
  • Functionality: Remember selected region and country
  • Analytics: Keep track of your visited pages and interaction taken
  • Analytics: Keep track about your location and region based on your IP number
  • Analytics: Keep track of the time spent on each page
  • Analytics: Increase the data quality of the statistics functions
  • Advertising: Tailor information and advertising to your interests based on e.g. the content you have visited before. (Currently we do not use targeting or targeting cookies.
  • Advertising: Gather personally identifiable information such as name and location
  • Recuerde sus detalles de inicio de sesión
  • Esencial: recuerde su configuración de permiso de cookie
  • Esencial: Permitir cookies de sesión
  • Esencial: Reúna la información que ingresa en un formulario de contacto, boletín informativo y otros formularios en todas las páginas
  • Esencial: haga un seguimiento de lo que ingresa en un carrito de compras
  • Esencial: autentica que has iniciado sesión en tu cuenta de usuario
  • Esencial: recuerda la versión de idioma que seleccionaste
  • Functionality: Remember social media settings
  • Functionality: Remember selected region and country
  • Analytics: Keep track of your visited pages and interaction taken
  • Analytics: Keep track about your location and region based on your IP number
  • Analytics: Keep track of the time spent on each page
  • Analytics: Increase the data quality of the statistics functions
  • Advertising: Tailor information and advertising to your interests based on e.g. the content you have visited before. (Currently we do not use targeting or targeting cookies.
  • Advertising: Gather personally identifiable information such as name and location
Guardar y cerrar