cancel
Showing results for 
Search instead for 
Did you mean: 
Subscribe

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.!!!

0 Likes
View Entire Topic
Former Member
0 Likes

Hi Prashanth,

Have you checked this blog ?, in this blog the code takes the attachment a bit different than you.

Regards.

Former Member
0 Likes

Hi Vila,

I agree with you. In your case the file name is static for the attachment. So you have given

  1. attachment.setName("VODAFONETR-attachment1"); 
  2.   attachment.setDescription("VODAFONETR-attachment");  as attachment names.

But in my case i need to set the filename dynamically from ASMA parameters. So i have written the dynamic file name UDF in ESR by using the below code

DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);

DynamicConfigurationKey key = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/Mail","FileName");

conf.put(key,FileName);

From the above code I am putting the filename dynamically to pick by ASMA.

After that in the module level, I have written the following code to get the attachment name.

Payload payload = msg.getAttachment(attName);            

MessagePropertyKey fileKey = new MessagePropertyKey("FileName","http://sap.com/xi/XI/System/Mail");

targetFileName = fileKey.getPropertyName();

payload.setName(targetFileName);

From the above I am getting the attachment and setting it!!

so after giving the above parameters i am facing this error!!

Kindly help!!