Hi guys, in this article I want to share some groovy script. Hope these script will useful in your integration flow. Here we go.
- Write log to capture all payload
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
def Message processData(Message message)
{
def body = message.getBody(java.lang.String) as String;
def messageLog = messageLogFactory.getMessageLog(message);
if(messageLog != null)
{
messageLog.setStringProperty("log1","Printing Payload As Attachment")
messageLog.addAttachmentAsString("log1",body,"text/plain");
}
return message;
}
- Write log incoming payload only if there is as exception
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
def Message processData(Message message)
{
def map = message.getProperties();
def ex = map.get("CamelExceptionCaught");
if (ex != null)
{
exceptionText = ex.getMessage();
def messageLog = messageLogFactory.getMessageLog(message);
messageLog.addAttachmentAsString("Exception", exceptionText,"application/text");
}
return message;
}
- Make your integration flow stop, pause, or sleep for sometime
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
def Message processData(Message message)
{
def body = message.getBody();
sleep(40000);
message.setBody(body);
return message;
}
- Remove something from incoming payload. Ex : “<?xml version=”1.0” endcoding = “UTF-8″?>”
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
def Message processData(Message message)
{
def removal=message.getBody(java.lang.String) as String;
removal=removal.replace(/<?xml version="1.0" encoding="UTF-8"?>/,"");
message.setBody(removal);
return message;
}
- Get all properties and header
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import java.lang.*;
def Message processData(Message message)
{
map = message.getProperties();
return message;
}
- Get all properties ( Property, Header), edit in script and use output as ${header.newHeader} or ${property.newProperty}
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
def Message processData(Message message) {
map = message.getProperties();
def zID = map.get("ID");
def indicator;
if(zID == '')
{
indicator = 'false';
}
else
{
indicator = 'true';
}
message.setProperty("Result", indicator);
return message;
}
- Concatenate all properties
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import java.lang.*;
def Message processData(Message message)
{
map = message.getProperties();
def ZF1 = map.get("F1");
def ZF2 = map.get("F2");
def ZF3 = map.get("F3");
String ZConcat = ZF1.concat(ZF2).concat(ZF3);
message.setProperty("ConcatenatedResult",ZConcat);
return message;
}
- Add days to a date
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import java.lang.*;
import com.sap.it.api.mapping.*;
def Message processData(Message message)
{
Date zcurDate = new Date();
Date zNewDate = zcurDate + 30;
message.setProperty("Current_Date",zcurDate);
message.setProperty("New_Date",zNewDate);
return message;
}
Or
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import java.lang.*;
import com.sap.it.api.mapping.*;
def Message processData(Message message)
{
def zNewDate = new Date().plus(30)
message.setProperty("New_Date",zNewDate);
return message;
}
- Write function which use in message mapping
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import com.sap.it.api.mapping.*;
def String datePlus30(String header,MappingContext context){
Date zcurDate = new Date();
Date znewDate = zcurDate + 30;
return znewDate.format("yyyyMMdd");
}
- Function return null in message mapping
import com.sap.it.api.mapping.*;
def String customFunc(String arg1){
return null
}
- Return Message Processing Log ID ( MPL ID) and use it in Message Mapping
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import com.sap.it.api.mapping.*;
def String getMessageProcessingLogID(String header,MappingContext context)
{
String mplId = context.getHeader("SAP_MessageProcessingLogID").toString();
return mplId;
}
Summary
Above is all basic groovy script useful for SAP CPI. Some case, if you want to take real result you can go to link : https://groovyide.com/cpi to check result after run your groovy script. Thanks for your reading and If have any question, kindly leave your comment in below this article.
Thanks.
Joseph.
You could have simply navigated to https://blogs.sap.com/2021/09/16/sap-cloud-integration-cpi-hci-writing-groovy-scripts-_-with-basic-examples/
LikeLike
Hello,
can you please provide the groovy for field values comparison in CPI.
LikeLike
Hi,
Can you let me know more detail on values comparision ?
LikeLike