• 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
#Cloud Integration  ·  #integration  ·  #SapIntegrationSuite  ·  #SapOpenConnectors  ·  Technical Articles

Uso de la integración en la nube y el conector abierto para lograr una carga perfecta de datos maestros en la nube de S/4HANA

By s4pcademy 


La utilización de recursos es un aspecto importante de SAP IPAAS (Integration Suite). Dado que necesitamos trabajar con una cantidad finita de velocidad de procesamiento y memoria, debemos tener esto en cuenta al desarrollar una nueva interfaz.

Aquí presentaré una forma alternativa de realizar una tarea simple de carga de datos maestros en S/4HANA Cloud mediante la combinación de CI y OC. Entonces, en lugar de construir la solución completa en CI, estamos distribuyendo la carga a diferentes productos de la suite de integración, para una distribución óptima de la carga. Además, dado que estamos combinando las capacidades de diferentes productos, puede requerir menos esfuerzo crear una solución para la declaración de un problema complejo.

  • Necesitamos cargar Business Partner desde un archivo plano a la nube de S/4HANA.
  • Necesitamos correlacionar el resultado de la publicación con cada registro del archivo.
  • Necesitamos enviar el resultado de la correlación por correo electrónico.

  • Integración en la nube
    • Sondee el archivo desde el servidor SFTP.
    • Convierta el formato CSV a JSON.
    • Empuje el contenido al punto final activado de forma masiva de Open Connector.
  • Conector abierto
    • Cargue el archivo desde el área de ensayo y envíe BUPA a la nube de S/4HANA.
    • Obtenga el estado del procesamiento y envíe un correo electrónico.

Como vemos arriba, distribuimos la tarea entre CI y OC, y estamos utilizando la capacidad adecuada de los productos para lograr la solución.

Antes del desarrollo: suponga que las siguientes tareas de condición previa se completan en SAP S/4HANA Cloud:

  • Creación del sistema de comunicación.
  • Creación de usuario de comunicación.
  • Creación de acuerdo de comunicación SAP_COM_0008.
  • Cree un nuevo elemento para SAP S/4HANA Cloud Business Partner – API. Descargue el EDMX de api.sap.com e importe el mismo. Importe las operaciones GET/POST de A_BusinessPartner, también proporcione un logotipo genial.

  • Proporcione los detalles del arrendatario y las credenciales de autenticación.

  • Ahora autentique este elemento y cree una instancia de conector.

Toda la operación POST en las API de SAP S/4HANA Cloud está protegida por X-CSRF-Token. Necesitamos crear un nuevo recurso para obtener el token. Cree un nuevo punto final /token.

La idea es obtener el token y la cookie en el cuerpo de la respuesta. Para eso, necesitamos crear un gancho de publicación para reemplazar la respuesta $metadata con un cuerpo personalizado.

let token = response_headers['x-csrf-token'];
let cookie = response_headers['set-cookie'];
done({
  response_body: {
    'token': token,
    'cookie': cookie[1]
  },
  continue: true
});

Ahora, si probamos esta API /token, obtenemos la siguiente respuesta.

Ahora que hemos creado el punto final para obtener el token CSRF, simplemente necesitamos llamarlo para obtener los tokens. Estos tokens se transferirán a la API A_BusinessPartner real para una publicación exitosa. Podemos escribir esta lógica en el pre-enganche.

const https = require('https');
let u = '?;
let o = '?';
let e="?";

var options = {
    hostname: 'api.openconnectors.eu10.ext.hana.ondemand.com',
    port: 443,
    path: '/elements/api-v2/token',
    method: 'GET',
    headers: {
        "Authorization": `User ${u}, Organization ${o}, Element ${e}`
    }
};

//Get SFDC connector from CE and return the results
https.get(options, (res) => {
    let rawData="";
    res.on('data', (chunk) => rawData += chunk);
    res.on('end', () => {
        console.log(rawData);
        try {
            let parsedData = JSON.parse(rawData);
            let v = request_vendor_headers;
            v['x-csrf-Token'] = parsedData.token;
            v['cookie'] = parsedData.cookie;
            done({ "request_vendor_headers": v });
        } catch (e) {
            done({ "response_error": e.message });
        }
    });
    res.on('error', (e) => {
        done({ "response_body": e.message });
    });
});

reemplazar ? con credenciales reales.

Ahora hemos completado la tarea de PUBLICAR un nuevo BUPA en SAP S/4HANA Cloud. Ahora necesitamos activar masivamente en esta API.

A continuación, debemos crear la fórmula que se activará una vez que todos los BUPA se publiquen en SAP S/4HANA Cloud. Dentro de esta fórmula, verificaremos si hay algún error en la publicación; en caso afirmativo, se enviará un correo electrónico a la persona designada.

Siguiendo el código para comprobar si hay algún error.

let d = steps.GetStatus.response.body.length;
if(d > 0){
  return done(true);
}
else{
  return done(false);
}

Código siguiente para formatear el cuerpo del correo electrónico y enviar el correo electrónico.

let m = '<table border="1" style="border-collapse: collapse;" cellpadding="5">';
let d = steps.GetStatus.response.body;
d.forEach((row) => {
  m = m + '<tr><td>Line</td><td>' + row.rowNum + '</td></tr>';
  m = m + '<tr><td>Error</td><td>' + row.status + '</td></tr>';
  m = m + '<tr><td>File Row</td><td>' + row.response + '</td></tr>';
})
m = m + '</table>';
notify.email('test@gmail.com',
  'BUPA Replication',
  m);
done(true);

El IFLOW ahora va a ser muy simple. En aras de la simplicidad, no hemos incluido el adaptador SFTP. Al día de escribir este blog, el adaptador receptor de conector abierto no se puede convertir a multipart/form-data – que es el formato esperado de la API /bulk, por lo que se está utilizando el adaptador HTTP.

Lo importante a tener en cuenta es que, si bien llamamos al punto final /bulk, también debemos especificar la URL a la que se llamará al completar la tarea masiva. Esta URL es el punto final de la API de la fórmula que creamos anteriormente.

Encabezado del mensaje:

Tipo de contenido multiparte/datos de formulario; límite=—-abc
Autorización

¿Usuario?, ¿Organización?, ¿Elemento?

(credencial del elemento S/4HANA Cloud)

Elements-Async-Callback-URL https://api.openconnectors.eu10.ext.hana.ondemand.com/elements/api-v2/formulas/instances/41574/executions

Ejemplo de carga útil:

[
  { "LastName": "Bhowmick", //will succeed
    "CorrespondenceLanguage": "EN", 
    "FirstName": "Deepankar",
    "BusinessPartnerGrouping": "BPEE",
    "BusinessPartnerCategory": "1"
  },
  {
    "LastName": "LastThree", //will error
    "CorrespondenceLanguage": "EN",
    "FirstName": "FirstThree",
    "BusinessPartnerGrouping": "BPEE",
    "BusinessPartnerCategory": 9
  },
  {
    "LastName": "LastThree", //will error
    "CorrespondenceLanguage": "EN",
    "FirstName": "FirstThree",
    "BusinessPartnerGrouping": "BPEE",
    "BusinessPartnerCategory": 9
  }
]

Script para preparar manualmente el formato multipart/form-data.

import com.sap.gateway.ip.core.customdev.util.Message
import java.util.HashMap
import com.sap.gateway.ip.core.customdev.util.Message
import org.apache.camel.impl.DefaultAttachment
import javax.mail.util.ByteArrayDataSource
def Message processData(Message message) {
    String msg = """------abc\r\n""" + 
                """Content-Disposition: form-data; name="file"; filename="hello.json"\r\n""" +
                """Content-Type: application/json\r\n\r\n""" +
                """${message.getBody(java.lang.String).replace('\n','\r\n')}\r\n""" +
                """------abc--"""
    message.setBody(msg)
    return message
}

Adaptador de receptor HTTP.

Después de ejecutar el IFLOW, deberíamos tener un BUPA creado para «Deepankar Bhowmick». Los 2 restantes deberían aparecer en el correo electrónico con correlación.

BUPA creado con éxito.

Notificación de error por correo electrónico con correlación (qué registro de archivo tiene qué error).

  • Implementación simple de un requisito relativamente complejo. No se requiere un mapeo sofisticado de $ por lotes.
  • El tiempo de ejecución en CI es ~100 ms incluso para cargas útiles grandes, si implementamos toda la lógica solo en CI, entonces el tiempo de ejecución podría ser de minutos. La mejora del rendimiento en IC es > 99 %.
  • Creamos la API de quejas de SWAGGER además de A_BusinessPartner en OC, esta es una solución escalable. Solo podemos mejorar desde aquí.
  • Utilización óptima de los recursos de Integration Suite. La carga se distribuye a varios productos de Integration Suite.



Source link


abiertoCargaconectordatosintegraciónlograrmaestrosnubeparaperfectaS4HANAunauso

Artículos relacionados


Personal Insights
Caso de uso de ChatGPT para código ABAP y ayuda de SAP
building blocks  ·  flexible programming model  ·  Technical Articles
Creación de una página de entrada de formulario personalizada con el modelo de programación flexible
Personal Insights  ·  S/4CRM  ·  S/4HANA Customer Management  ·  SAP S/4HANA Service
Servicio S/4HANA: elemento de gasto | Blogs de SAP

Deja tu comentario Cancelar la respuesta

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

*

*

Cálculos de costos y restricciones de VSR Optimizer
Previo
Reunión del Capítulo del Atlántico Medio de #ASUG: "Tu comunidad espera"
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