import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
def Message processData(Message message) {
//Declare HashMap , array attribute Filename1 and attachments properties
HashMap PayloadHashMap = new HashMap<String,String>();
def Filename1 = []
def Attachment =""
def SourceFilename = message.getHeaders().get("CamelFileName")
message.setProperty("PayloadHashMap", PayloadHashMap)
message.setProperty("Filename1", Filename1)
message.setHeader("SAP_ApplicationID",SourceFilename)
message.setProperty("Attachment",Attachment)
return message;
}
Step2: Zip splitter: Extracts each file
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
def Message processData(Message message) {
String body = message.getBody(java.lang.String) as String
def map = message.getProperties();
def Filename1 = message.getProperties().get("Filename1")
def PayloadHashMap = map.get("PayloadHashMap");
def filename = message.getHeaders().get("CamelFileName")
//Store filename and body in HashMap, Filename in array attribute Filename1
PayloadHashMap.put(filename,body)
Filename1.push(filename)
message.setProperty("PayloadHashMap", PayloadHashMap)
message.setProperty("Filename1", Filename1)
return message;
}
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
def Message processData(Message message) {
def map = message.getProperties();
def PayloadHashMap = map.get("PayloadHashMap");
//Fetch body of the 1st entry of HashMap
def Filename = message.getProperties().get("Filename1")[0]
def PayloadNew = "";
PayloadNew = PayloadHashMap.get(Filename);
message.setBody(PayloadNew);
message.setProperty("PayloadNew", PayloadNew);
return message;
}
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import groovy.xml.MarkupBuilder
def Message processData(Message message) {
def map = message.getProperties();
def PayloadHashMap = map.get("PayloadHashMap");
def Filename = message.getProperties().get("Filename1")[0]
def PayloadNew = PayloadHashMap.get(Filename);
// Delete 1st entry of Hashmap and array attribute Filename1;
def packages = message.getProperties().get("Filename1").reverse() as Stack
packages.pop()
packages = packages.reverse() as Stack
message.setProperty("Filename1", packages)
PayloadHashMap.remove(Filename);
// Capture file attachment details
def Attachment = message.getProperties().get("Attachment")
def writer = new StringWriter();
def builder = new MarkupBuilder(writer);
def urlFilename = Filename.substring(Filename.indexOf('/')+1);
urlFilename = 'cid:'+urlFilename + '@test.com'
def FileType = Filename.substring(Filename.indexOf('.')+1);
if (FileType != 'xml')
{
builder.Attachment
{
if (FileType != 'xml')
'URL'(urlFilename)
}
}
Attachment = Attachment + writer.toString();
message.setProperty("Attachment", Attachment);
message.setProperty("PayloadNew", PayloadNew);
message.setProperty("PayloadHashMap", PayloadHashMap);
return message;
}
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml"/>
<xsl:template match="/">
<xsl:text disable-output-escaping="yes">
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.055/InvoiceDetail.dtd">
</xsl:text>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<!--Replaces “lang” with “xml:lang” in cXML-->
<xsl:template match="@lang">
<xsl:attribute name="xml:lang">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
import com.sap.gateway.ip.core.customdev.util.Message
import java.util.HashMap
import com.sap.it.api.ITApiFactory
import com.sap.it.api.mapping.ValueMappingApi
def Message processData(Message message) {
//Rerieve Input Data
def body = message.getBody(java.lang.String) as String;
//Declare value mapping table
def valuemap = ITApiFactory.getApi(ValueMappingApi.class, null);
def SAgency = "InvoiceSystem";
def SIdentifier = "FileExtension";
def TAgency = "Ariba";
def TIdentifier = "ContentType";
def CamelFileName = message.getHeaders().get("CamelFileName")
def Key = CamelFileName.substring(CamelFileName.indexOf(".")+1 , CamelFileName.length());
def filename = CamelFileName.substring(CamelFileName.indexOf("/")+1 , CamelFileName.length());
//Fetch value mapping table details
def ContentType = valuemap.getMappedValue(SAgency,SIdentifier,Key,TAgency,TIdentifier);
message.setProperty("ContentType", ContentType)
message.setProperty("filename", filename)
return message;
}
Step 15: Content Modifier : Capture ContentType And FileName
cXML MIME request sent to Ariba:
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
12 | |
8 | |
7 | |
6 | |
5 | |
5 | |
4 | |
4 | |
3 | |
3 |