How to add attachment using JAVA Mapping (SAP PO)
Hi,
I was having a requirement to pick a PDF file from a file server, send it as attachment and PDF file name as field to the target server.
As a solution I created a JAVA code and used it as JAVA mapping in PI. I hope this code will help PI consultants if they have similar kind of requirement.
/*
* Created on May 14, 2015
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package attach;
/**
* @author ashutosh upadhyay
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
import java.io.InputStream;
import java.io.OutputStream;
import com.sap.aii.mapping.api.AbstractTransformation;
import com.sap.aii.mapping.api.Attachment;
import com.sap.aii.mapping.api.DynamicConfigurationKey;
import com.sap.aii.mapping.api.OutputAttachments;
import com.sap.aii.mapping.api.TransformationInput;
import com.sap.aii.mapping.api.TransformationOutput;
import com.sap.aii.mapping.api.DynamicConfiguration;
public class AddAttachment extends AbstractTransformation{
private static final DynamicConfigurationKey KEY_FILENAME = DynamicConfigurationKey.create(“https://sap.com/xi/XI/System/File“,”FileName”);
public void transform(TransformationInput transformationInput, TransformationOutput transformationOutput) {
//System.out.println(“A”);
// access dynamic configuration
InputStream inputstream = transformationInput.getInputPayload().getInputStream();
OutputStream outputstream = transformationOutput.getOutputPayload().getOutputStream();
DynamicConfiguration conf = transformationInput.getDynamicConfiguration();
String fileName = “”;
fileName = conf.get(KEY_FILENAME);
//System.out.println(“C”+fileName);
// set file name
conf.put(KEY_FILENAME, fileName);
try {
// a) Populate XML for XIPAYLOAD
String fresult= “”;
// creating the xml
fresult=””;
fresult = fresult.concat(“
fresult = fresult.concat(“
fresult = fresult.concat(fileName);
fresult = fresult.concat(“”);
fresult = fresult.concat(“”);
outputstream.write(fresult.getBytes(“UTF-8”));
// Write attachment
OutputAttachments outputAttachments = transformationOutput.getOutputAttachments();
byte[] b = new byte[inputstream.available()];
inputstream.read(b);
Attachment newAttachment = outputAttachments.create(fileName,”application/pdf”, b);
outputAttachments.setAttachment(newAttachment);
}
catch (Exception e) {
getTrace().addDebugMessage(e.getMessage());
}
}
}
Output:
New NetWeaver Information at SAP.com
Very Helpfull