Skip to main content
Skip table of contents

SAP IS Working with MPL Attachments

Int4 Suite allows fetching payloads for Test Case creation and execution from MPL Attachments. This can be a very convenient way of storing required payloads without usage of Trace.

To use attachments instead of Cloud Integration iFlow blocks, you just need to specify the Attachment names in the Automation Object:

For Example:

image-20241209-140248.png

Input and Output as example names of Attachments

As Attachments requires additional storage - they are storing additional data, it’s very important to make this option switchable, so it can be decided if the attachment logging is on (we are collecting Test Cases or we are running tests) or it is off (normal BAU usage of Cloud Integration). To make it configurable you need to create a property in the iFlow that will control this. In below example the property name is “logattachments”. Externalize this property and set the default value to “false”.

image-20241209-140557.png

Property to control attachment logging on iFlow level

Second step is to add Groovy scripts that will do the actual attachment logging in all places that requires validation. Minimum will be the input message logging and at least one output message logging.

Example of Groovy that will use configured property and dynamically log or not the payload:

CODE
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;

def Message processData(Message message) {
    //get Body as a string
    def body = message.getBody(java.lang.String) as String;
    def msgLog = messageLogFactory.getMessageLog(message);
    def properties = message.getProperties();
    def header = message.getHeaders();
    //Check if logging is switched on by the HTTP Header
    String logInt4 = header.get("Int4LogAttachments");
    //Check if loggign is switched on iFlow level
    String add_attachment = properties.get("logattachments");
    if(add_attachment.equals("true")|logInt4.equals("true")){
    if(msgLog != null){
        //Write an attachment to the Message Processing Log
        //Input is an example name of attachment
        msgLog.addAttachmentAsString("Input", body, "text/plain");
     }
    }
    return message;
}

Now you should be able to switch attachment logging via Configuration of an iFlow.

For test purpose when Test Case is executed from the Int4 Suite it can automatically switch on logging of attachments when “Int4LogAttachmets=true” is passed as a HTTP Header. Thanks to this feature, there is no need to change configuration of an iFlow for testing in non-Productive environments.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.