Como Integrar SAP PO con ANAPLAN

  • 0

Como Integrar SAP PO con ANAPLAN

Category:Programación,SAP,SAP PI/PO

Ya pasaron un par de meses después de que desarrollé una integración entre nuestro sistema SAP BW que se ejecuta en los datos de Hana y Anaplan, para lograrlo, el proyecto utiliza SAP Process Orchestration 7.5 Durante el proceso de implementación, me enfrento a algunos desafíos que trato de resolver haciendo una investigación en diferentes foros, ya que no pude obtener una guía completa para lograr la solución, decido escribir una y compartir mi experiencia personal para ayudar a los lectores a desarrollar este escenario de integración.

Meta

Al final de esta publicación, podrá configurar una conexión entre Anaplan y SAP Process Orchestration que se ejecuta en SAP Netweaver 7.50 utilizando un canal de comunicación con el adaptador REST para establecer una conexión con Anaplan y un canal de comunicación con el adaptador SOAP XI 3.0 para establecer una conexión con los sistemas SAP Abap.

Arquitectura

Integration%20Architecture

1. Arquitectura de Integración

Supuestos

  • Existe un Usuario Técnico en Anaplan que podría ser utilizado para establecer la comunicación o un certificado emitido al Usuario Técnico.
  • El usuario técnico de Anaplan tiene acceso al espacio de trabajo y a los modelos.

Pasos

1. Para establecer una conexión entre SAP PO y Anaplan, el primer paso será crear un canal de comunicación usando REST Adapter.

2.%20Communication%20Channel%20for%20authentication

Canal de comunicación para autenticación, url: https://auth.anaplan.com/token/authenticate

Para establecer una conexión entre SAP PO y Anaplan, el primer paso será crear un canal de comunicación usando REST Adapter, el método de autenticación podría ser autenticación básica o autenticación de certificado solo con https.

Después de aplicar el método de autenticación y la URL, se deben agregar los siguientes módulos en la pestaña Módulo.

The modules added will be:

useAuthPreemptive: esto significa que el servidor esperará que se entreguen las credenciales de autorización sin proporcionar una respuesta no autorizada o un método no permitido.

useJDKSSF: esto evitará fallas de protocolo de enlace debido a TLS no coincidente o falta de protocolo SSL.

useResponseErrorMessage

2. Una vez que finalice el proceso de autenticación, Anaplan entregará un token de autenticación en respuesta y debe usarse en toda la integración hasta que se realice un cierre de sesión, la forma elegida en el proyecto usa el reemplazo de variable de patrón con una expresión xpath.

Después de eso, el nombre del elemento del patrón se usará en los encabezados HTTP adicionales

3. Para lograr la Integración el proceso necesita solicitar el Workspace y el modelo, considerar entregar el ID del workspace en minúsculas y los modelos en mayúsculas.

Una vez que se recuperan el espacio de trabajo y el modelo, los próximos pasos incluirán la recuperación de las importaciones, los archivos y los fragmentos.

4. Una vez que se recupera el fragmento, deberá cargar el archivo en el fragmento, ya que nuestra fuente se almacenó en una tabla de base de datos en el interior, todo el proceso para transformar la estructura ABAP en una línea de texto dividida por “;” el personaje fue desarrollado en ABAP Backend.

En el lado de la orden de compra de SAP, se ajustó el contenido para enviar un mensaje de texto sin formato a Anaplan mediante un mapeo de Java.

public void execute(InputStream in, OutputStream out) throws StreamTransformationException {

   String documento = “”;

   String linea = “”;

try {

      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

      DocumentBuilder db              = dbf.newDocumentBuilder();

      Document xml_in                   = db.parse(in);

      String encoding                     = “UTF-8”;

      NodeList nodeListLine           = xml_in.getElementsByTagName(“content”);

for (int i = 0; i < nodeListLine.getLength(); i++) {

         Node nodeLine = nodeListLine.item(i);

         Element elemLine = (Element) nodeLine;

         linea = elemLine.getTextContent();

if (i < nodeListLine.getLength()-1) {

           documento = documento + linea ;

         }else {

           documento = documento + linea ;

         }

      }

      out.write(documento.getBytes(encoding));

   } catch (IOException e) {

     System.out.println(“ERROR CLASE TestEncryption : ” + e.getMessage());

     throw new StreamTransformationException( “ERROR CLASE TestEncryption : ” +

                                                                          e.getMessage());

   } catch (Exception e) {

}

En el canal de comunicación establecer los siguientes valores:

Dado que el código de respuesta HTTP entregado por esta interfaz es 204 en una entrega exitosa, incluimos un Manejo de errores personalizado.

<?xml version=”1.0″ encoding=”UTF-8″?>

<ns0:MessageType_Res xmlns:ns0=”namespace”>

   <status>204</status>

   <message>success</message>

</ns0:MessageType_Res>

5. Una vez que los archivos se entregaron a los fragmentos, el siguiente paso será publicar el fragmento y completar las cargas, este paso cerrará el archivo.

6. Considere que el archivo en Anaplan será visible por el Usuario Técnico utilizado para lograr la carga.

7.Para liberar la sesión, se debe lograr un proceso de cierre de sesión, que incluirá un Manejo de errores personalizado para capturar el código de respuesta HTTP 202.

Conclusión

En resumen, este proceso lo ayudará a habilitar la conexión entre SAP PO que se ejecuta sobre SAP Netweaver 7.5 y Anaplan, guiándolo a través de varios pasos del proceso que nuestro equipo ya enfrenta y supera.

Feliz Integración!