datadog trace azure , harshit modified code. appied
import com.sap.gateway.ip.core.customdev.util.Message;
def Message processData(Message message) {
// Retrieve the body, though it's not used in this case
def body = message.getBody();
// Get the headers from the message
def headers = message.getHeaders();
message.setHeader('sourceType', json.stockMovement.sourceType)
message.setHeader('destinationType', json.stockMovement.destinationType)
message.setHeader('scenario', json.stockMovement.scenario)
message.setHeader('sourceLocation', json.stockMovement.source.location)
message.setHeader('destinationLocation', json.stockMovement.destination.location)
message.setHeader('externalUniqueReference', json.stockMovement.externalUniqueReference)
message.setHeader('destinationSSCCNumber', json.stockMovement.destinationStockPosition.ssccNumber)
message.setHeader('destinationMaterialReference', json.stockMovement.destinationStockPosition.materialReference)
message.setHeader('destinationBatch', json.stockMovement.destinationStockPosition.batch)
message.setHeader('sourceSSCCNumber', json.stockMovement.sourceStockPosition.ssccNumber)
message.setHeader('sourceMaterialReference', json.stockMovement.sourceStockPosition.materialReference)
message.setHeader('sourceBatch', json.stockMovement.sourceStockPosition.batch)
message.setHeader('sourceGlobalLocationNumber', json.stockMovement.source.globalLocationNumber)
/*
stockMovement sourceType stockMovement -> sourceType
stockMovement destinationType stockMovement -> destinationType
stockMovement scenario stockMovement -> scenario
stockMovement location stockMovement->destination->location
stockMovement location stockMovement->source->location
stockMovement externalUniqueReference stockMovement -> externalUniqueReference
stockMovement ssccNumber stockMovement->destinationStockPosition->ssccNumber
stockMovement materialReference stockMovement->destinationStockPosition->materialReference
stockMovement globalLocationNumber stockMovement->source->globalLocationNumber
stockMovement batch stockMovement->destinationStockPosition->batch
stockMovement ssccNumber stockMovement->sourceStockPosition->ssccNumber
stockMovement materialReference stockMovement->sourceStockPosition->materialReference
stockMovement batch stockMovement->sourceStockPosition->batch*/
// Retrieve the values based on the provided mapping
def sourceType = message.getHeader('sourceType')
def destinationType = message.getHeader('destinationType')
def scenario = message.getHeader('scenario')
def sourceLocation = message.getHeader('sourceLocation')
def destinationLocation = message.getHeader('destinationLocation')
def externalUniqueReference = message.getHeader('externalUniqueReference')
def destinationSSCCNumber = message.getHeader('destinationSSCCNumber')
def destinationMaterialReference = message.getHeader('destinationMaterialReference')
def destinationBatch = message.getHeader('destinationBatch')
def sourceSSCCNumber = message.getHeader('sourceSSCCNumber')
def sourceMaterialReference = message.getHeader('sourceMaterialReference')
def sourceBatch = message.getHeader('sourceBatch')
def sourceGlobalLocationNumber = message.getHeader('sourceGlobalLocationNumber')
// Additional fields
def Scope = headers.get("Scope");
def Direction = headers.get("Direction");
def TerminalState = headers.get("TerminalState");
def Destination = headers.get("Destination");
def ProcessingState = headers.get("ProcessingState");
// Create a combined header string
def combinedHeader = ""
def addHeaderProperty = { key, value ->
if (value != null && value != "") {
combinedHeader += "\"additionalProperty." + key + "\": \"" + value + "\", ";
} else {
combinedHeader += "\"additionalProperty." + key + "\": \"\", "; // Add empty string if null or empty
}
}
// Add properties to combined header
addHeaderProperty("Scope", Scope);
addHeaderProperty("Direction", Direction);
addHeaderProperty("TerminalState", TerminalState);
addHeaderProperty("Destination", Destination);
addHeaderProperty("ProcessingState", ProcessingState);
addHeaderProperty("sourceType", sourceType);
addHeaderProperty("destinationType", destinationType);
addHeaderProperty("destinationLocation", destinationLocation);
addHeaderProperty("sourceLocation", sourceLocation);
addHeaderProperty("externalUniqueReference", externalUniqueReference);
addHeaderProperty("destinationSSCCNumber", destinationSSCCNumber);
addHeaderProperty("materialReferenceDest", materialReferenceDest);
addHeaderProperty("globalLocationNumber", globalLocationNumber);
addHeaderProperty("batchDest", batchDest);
addHeaderProperty("sourceSSCCNumber", sourceSSCCNumber);
addHeaderProperty("materialReferenceSrc", materialReferenceSrc);
addHeaderProperty("batchSrc", batchSrc);
addHeaderProperty("scenario", scenario);
// Trim any trailing comma and space
combinedHeader = combinedHeader.trim();
if (combinedHeader.endsWith(",")) {
combinedHeader = combinedHeader[0..-1]; // Remove trailing comma
}
// If combinedHeader is empty, set the default value to the new header
if (combinedHeader.isEmpty()) {
message.setHeader("combinedProperties", "");
} else {
message.setHeader("combinedProperties", combinedHeader);
}
return message;
}