Category Archives: SAP

  • 0

How to integrate SAP PO with ANAPLAN

Category:Programming,SAP,SAP PI/PO

Already past a couple of monthes after i develop an integration between our SAP BW system running over Hana databes and Anaplan, in order to achieve it, the project use SAP Process Orchestration 7.5

During the implementation process, i face some challenges that i try to solve making a research in different forums, since i could not get a complete guide to achieve the solution, i decide to write one and share my personal experience in order to help the readers to develop this integration scenery.

Goal

At the end of this post you will could setup a connection between Anaplan and SAP Process Orchestration running over SAP Netweaver 7.50 using a communication channel with adapter REST to stablish a connection with Anaplan and a communication channel with adapter SOAP XI 3.0 to stablish a connection with the SAP Abap systems.

Architecture

Integration%20Architecture

1. Integration Architecture

Assumptions

  • There is a Technical User in Anaplan that could be used in order to stablish the communication or a certificate issued to the Technical User.
  • The Anaplan Technical User has access to the workspace and the models.

Steps

1. In order to stablish a connection between SAP PO and Anaplan, the first step will be create a communication channel using REST Adapter.

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

Communication Channel for authentication, url: https://auth.anaplan.com/token/authenticate

In order to stablish a connection between SAP PO and Anaplan, the first step will be create a communication channel using REST Adapter, the authentication method could be basic auth or certificate authentication only with https.

After the authentication method and url will be applied, the following modules should be added under the Module Tab.

The modules added will be:

useAuthPreemptive: this means that server will expect the authorization credentials will be deliver without providing an Unauthorized reponse or Method Not Allowed.

useJDKSSF: this will avoid Handsake failures due to unmatch TSL or missing SSL protocol.

useResponseErrorMessage

2. Once the authentication process will be finished an Authentication Token will be deliver by Anaplan in response and must be used across the whole integration until a logout will be realized, the way chossen in the project use Pattern Variable Replacement with an xpath expression.

After that the Pattern Element Name will be used into the Adittional HTTP Headers

3. In order to achive the Integration the process need to request the Workspace and the model, consider delivering the workspace ID at lower case and the models in upper case.

Once the workspace and model are retrieved, the next steps will include to recover the imports, files and the chunks.

4. Once the chunk is retrieved, you will need to upload the file in the chunk, since our source was stored into an database table inside, the whole process to transform the ABAP structure into a textline splitted by “;” character was developed at ABAP Backend.

On the SAP PO side using a java mapping the content was adjusted to deliver a plain text message to Anaplan

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) {

}

On the communication channel stablish the following values:

Since the HTTP responde code delivered by this interface is 204 on a success delivery, we include a custom Error Handling.

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

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

   <status>204</status>

   <message>success</message>

</ns0:MessageType_Res>

5. Once the files was delivered to the chunks, the next step will be to post the chunk and complete the uploads, this step will close the file.

6. Consider that the fille in Anaplan will be visible by the Technical User used to achieve the upload.

7. In order to release the session a logout process should be achieved, this will include a custom Error Handling in order to catch the HTTP 202 responde code.

Conclusion

In summary this process will help you to enable the connection between SAP PO running over SAP Netweaver 7.5 and Anaplan, guiding you through several process steps that our team already face and pass.

Happy Integration!


  • 0

Introduction to SXI_MONITOR Transaction

Category:Programming,SAP,SAP PI/PO

The SXI_MONITOR transaction is a tool in the SAP system used to monitor and manage the status of inbound and outbound interfaces. It allows you to view the current status of your system’s interfaces and to troubleshoot any issues that may arise.

Here is a guide to get started with SXI_MONITOR:

  1. Access the transaction by entering “SXI_MONITOR” into the command field of the SAP system.
  • The interface monitor screen will appear with a list of all available interfaces.
  • Use the filter options to narrow down the list to the specific interface you want to monitor.
  • Select the interface and click on “Display” to view the details.
  • The interface details screen will show information such as the status, start time, and end time of the interface, as well as any errors or warnings.
  • If an error occurs, use the “Error Information” button to access the log file and see a detailed explanation of the error.
  • The “Monitor” tab provides an overview of the interface execution, including the number of messages processed, the number of messages in error, and the total processing time.
  • The “Details” tab provides a more in-depth look at the individual messages processed by the interface, including the status, timestamp, and any relevant messages.
  • Use the “Restart” button to clear the status of a completed interface and start a new run.

With the SXI_MONITOR transaction, you have a central location to monitor and manage the status of your system’s interfaces. This helps you to ensure that your interfaces are running smoothly and to quickly identify and resolve any issues that may arise.


  • 0

Splitting Messages in SAP PO using a Java Mapping

Category:Programming,SAP,SAP PI/PO

Here is an example of a Java mapping in SAP PO that splits a message using the String.split() method:

import java.util.Arrays;

import com.sap.aii.mapping.api.*;

public class MessageSplitter extends AbstractTransformation {

    public void transform(TransformationInput input, TransformationOutput output) throws StreamTransformationException {
        try {
            // Get input and output payload
            InputPayload in = input.getInputPayload();
            OutputPayload out = output.getOutputPayload();

            // Read input message into a string
            byte[] bytes = new byte[in.getInputStream().available()];
            in.getInputStream().read(bytes);
            String inputMessage = new String(bytes);

            // Split message using a delimiter
            String delimiter = ",";
            String[] parts = inputMessage.split(delimiter);

            // Write the parts to the output payload
            for (String part : parts) {
                out.getOutputStream().write(part.getBytes());
            }
        } catch (Exception e) {
            throw new StreamTransformationException(e.getMessage());
        }
    }
}

In this example, the input message is read into a string, then split using the comma (“,”) delimiter. The resulting parts are then written to the output payload, one after the other. You can change the delimiter to any string you want to use as a separator.

Please keep in mind that this is just an example and it may need further adaptation depending on the specific requirements of your integration scenario


  • 0

How To Secure a JMS connection in SAP PI with TLS 1.2 to IBM MQ

Category:Programming,SAP,SAP PI/PO

There are plenty resources on this topic, but this post based on my experience intend to allow SAP Customers that are still using SAP PI as the top integration solution in their landscape, to allow to secure their integration scenaries between an SAP system like CRM (Customer Relationship Management), ERP (Enterprise Resource Planning), SOLMAN (Solution Manager) between antohers and the IBM MQ system.

Goal

The goal of this post is to allow you to setup a TLS connection between an an IBM MQ system  version 7.5 or upper and a SAP PI system running over Netweaver(NW) 7.4 or upper using a communication channel type JMS versión 1.x or 2.x.

Assumptions

  • The JMS drivers are already deployed at the Netweaver System.
  • The JVM is already updated to the last version available.
  • The Netweaver components are already updated to the last version available.

Steps

1. Oracle usually is the provider of the Java Virtual Machine (JVM) used at Operating System level where the Netweaver is installed, since MQ System use the IBM JVM, this could create the issue “2393 MQRC_SSL_INITIALIZATION_ERROR / MQRC_UNSUPPORTED_CIPHER” once the channel wll be started. In order to prevent that Cipher Suite Mapping should be disable, this will be achieved following steps described at Note 2218025.

1.1. Please logon to the NWA and once there, please locate the Configuration Tab -> infrastructure -> Java System Properties

Step 1.1 Configuration Tab -> infrastructure -> Java System Properties

1.2. Once there, the node Z* should be selected and navigate to the tab System VM Parameters,  there add the following parameter.

com.ibm.mq.cfg.useIBMCipherMappings=false

Step 1.2 Node-> System VM Parameters

2. Adjust the allowed security protocols that could be used to stablish a handshake at the system; in order to do this must follow the same steps defined at point 1.1, once there add the following parameter:

jdk.tls.client.protocols = TLSv1,TLSv1.1,TLSv1.2

Be aware that this is just an illustrative example.

3. In order to prevent the issue “error connecting due to missing class com.ibm.mq.jms.MQQueueConenctionFactory“, the SAP Note 1751177 should be applied, this will allow to preload the related classes of MQ Driver

3.1 Please login into NWA and go through this path Java System Properties → Applications, once there please be aware to select the property com.sap.aii.adapter.jms.app application and modify the property value.

MQ 7.50

Set the “preloadClasses” property as: com.ibm.mq.MQEnvironment,com.ibm.mq.internal.MQCommonServices,com.ibm.mq.jms.MQQueueConnectionFactory,com.ibm.mq.jms.MQTopicConnectionFactory.

Step 3.1 Java System Properties → Applications->com.sap.aii.adapter.jms.app application

4. Once this activities will be finished, ask to your Basis team to make a full restart of the application.

5. Create or Modify the communication channel using the integration builder tool or through NWDS

Be aware to create the communication Channel at the Integration directory as JMS 1.X under NW 7.4 or 2.x under NW7.5

Then at the option Enable Security, mark useSSL and select OTHER in the SSL Cipher Suite dropdown, next be aware to write the ciphersuite that will be used in the other cipher suite text field.

Conclusion 

In summary, securing our internal connections will allow us to protect the data, our most valuable assets inside the companies and this post will help you to enable secure connections from your NW PI/PO systems to external servers.

I hope this article was valuable and i appreciate your feedback, comments or suggestions, please feel ree to reache out me if you have any further question

Read More