on 2016 Jan 21 7:41 AM
Hello Experts,
My Scenario is IDoc to Mail. I need to send the file as an attachment with dynamic filename and body. I am able to send the the file with attachment and body but not with the dynamic filename. Also I am not supposed to use Mail Package.So for the reason I have implemented Module code for changing the dynamic filename.Here is the code and error exception occurred in the Message Log.
Module Code:
package com.sap.mailmodule;
import javax.ejb.Stateless;
import com.sap.aii.af.lib.mp.module.ModuleContext;
import com.sap.aii.af.lib.mp.module.ModuleData;
import com.sap.aii.af.lib.mp.module.ModuleException;
import com.sap.engine.interfaces.messaging.api.Message;
import com.sap.engine.interfaces.messaging.api.MessageKey;
import com.sap.engine.interfaces.messaging.api.MessagePropertyKey;
import com.sap.engine.interfaces.messaging.api.Payload;
import com.sap.engine.interfaces.messaging.api.PublicAPIAccessFactory;
import com.sap.engine.interfaces.messaging.api.auditlog.AuditAccess;
import com.sap.engine.interfaces.messaging.api.auditlog.AuditLogStatus;
/**
* Session Bean implementation class MailAdapterModule
*/
@Stateless
public class MailAdapterModule implements MailAdapterModuleRemote, MailAdapterModuleLocal
{
public ModuleData process(ModuleContext moduleContext, ModuleData inputModuleData)throws ModuleException
{
Message msg = (Message) inputModuleData.getPrincipalData();
MessageKey key = null;
AuditAccess audit = null;
String attName = null;
String targetFileName = null;
try
{
//Custom Adapter module : Module called
//Reading file name from message header
attName = moduleContext.getContextData("AttachmentName");
Payload payload = msg.getAttachment(attName);
MessagePropertyKey fileKey = new MessagePropertyKey("FileName","http://sap.com/xi/XI/System/Mail");
targetFileName = fileKey.getPropertyName();
audit = PublicAPIAccessFactory.getPublicAPIAccess().getAuditAccess();
audit.addAuditLogEntry(key, AuditLogStatus.SUCCESS, "Input file read successfully");
//Reading the Directory Names from the Module Context
if(targetFileName == null)
{
targetFileName = "Reservation.txt";
}
audit.addAuditLogEntry(key, AuditLogStatus.SUCCESS, " Name of Attachment after msg.getattchment method: " + targetFileName);
audit.addAuditLogEntry(key, AuditLogStatus.SUCCESS, " Name of Attachment after msg.getattchment method: " + targetFileName);
payload.setName(targetFileName);
audit.addAuditLogEntry(key, AuditLogStatus.SUCCESS,"Attachment renamed successfully : " +targetFileName);
audit.addAuditLogEntry(key, AuditLogStatus.SUCCESS, " Entering Mail Adapter");
inputModuleData.setPrincipalData(msg);
}
catch (Exception e)
{
throw new ModuleException(e);
}
return inputModuleData;
}
}
Channel Module Configuration:
Message Exception Error ScreenShot:
Kindly help on the same.!!!
Request clarification before answering.
Hi Eng,
Apologies for the delay!!!
Thanks for your Patience and reply.
As per your previous blogs, I have splitted the requirement in to two flows. Here are the below details.
1.IDOC-PI-SOAP
2.SOAP-PI-MAIL
In the first flow I have created one node MAIL with the fields THeaderTo, THeaderCC, THeaderSubject, FileName underneath to it.
In the second flow I have used content conversion in SOAP Channel and then in the Mapping part I have used Java mapping with dynamic configuration parameters with all the above MAIL fields.
Also the first of the flat file I have replaced with blank data instead of MAIL field values and used While loop for multiple Item occurrences.
This is the way we have completed it Eng with out constructing any MIME parameters in JAVA mapping.
Please let me know if you need in detail with screenshots so that i can share the same.
Also will try your case and update you soon.
Thanks in advance!!
Many Thanks,
Best Regards,
Prashanth Bharadwaj Ch.
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 | |
| 9 | |
| 7 | |
| 5 | |
| 4 | |
| 3 | |
| 3 | |
| 2 | |
| 2 | |
| 2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.