Mail Adapter to Gmail
Hi,
Anyone tried using the mail adapter to send email to gmail?
Im trying to do that now, but with no success.
Hi,
you could try it without the port:
> smtp.gmail.com
This blog might be useful:
/people/prasad.ulagappan2/blog/2005/06/07/mail-adapter-scenarios-150-sap-exchange-infrastructure
Regards
Patrick
Similar Messages
-
How to Send Appointment via mail adapter
Hi Guys,
I need to send the appointment and vTodo via mail adapter, any way i need to develop a mail adapter module. Till now i have finished this part,and i can send normal mail even normal mail with attachment. But i don't know how to send appointment via mail adapter.
This is payload content of appointment which got from Exchange server to gmail:
_=_NextPart_001_01C71EC0.97A011C6
Content-Type: text/plain;
charset="GB2312"
Content-Transfer-Encoding: quoted-printable
When: 2007=C4=EA6=D4=C227=C8=D5=D0=C7=C6=DA=C8=FD 3:30 =CF=C2=CE=E7-4:00 = =CF=C2=CE=E7 (GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi.
Where: China
~*~*~**
This is calendar content
_=_NextPart_001_01C71EC0.97A011C6
Content-class: urn:content-classes:calendarmessage
Content-Type: text/calendar;
method=REQUEST;
name="meeting.ics"
Content-Transfer-Encoding: 8bit
BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:Microsoft CDO for Microsoft Exchange
VERSION:2.0
BEGIN:VTIMEZONE
TZID:(GMT+01.00) Sarajevo/Warsaw/Zagreb
X-MICROSOFT-CDO-TZID:21
BEGIN:STANDARD
DTSTART:20070112T140000
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:20070112T140000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:20061213T141132Z
DTSTART;TZID="(GMT+01.00) Sarajevo/Warsaw/Zagreb":20070112T140000
SUMMARY:This is calendar test
UID:040000008200E00074C5B7101A82E0080000000030D51864C81EC701000000000000000
010000000CA9F127EA8947844BC4DD47F269BDEA9
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="Xu, Rocky":MAILTO:rocky@***.com
ORGANIZER;CN="Xu":MAILTO:rocky@**.com;roc*@gmail.com
LOCATION:Shanghai
DTEND;TZID="(GMT+01.00) Sarajevo/Warsaw/Zagreb":20070112T160000
DESCRIPTION:This is calendar content\N
SEQUENCE:0
PRIORITY:5
CLASS:
CREATED:20061213T141132Z
LAST-MODIFIED:20061213T141133Z
STATUS:CONFIRMED
TRANSP:OPAQUE
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INSTTYPE:0
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-OWNERAPPTID:367904726
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-ATTENDEE-CRITICAL-CHANGE:20061213T141132Z
X-MICROSOFT-CDO-OWNER-CRITICAL-CHANGE:20061213T141132Z
END:VEVENT
END:VCALENDAR
_=_NextPart_001_01C71EC0.97A011C6--
My question is
1. How to generate this kind of payload in mail adapter module?
2. It is possible to send appointment via mail adapter?
Following i can get from other system, even using mail package check or not using mail package check.
BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:Microsoft CDO for Microsoft Exchange
VERSION:2.0
BEGIN:VTIMEZONE
TZID:(GMT+08.00) Kuala Lumpur/Singapore
X-MICROSOFT-CDO-TZID:21
BEGIN:STANDARD
DTSTART:16010101T000000
TZOFFSETFROM:+0800
TZOFFSETTO:+0800
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T000000
TZOFFSETFROM:+0800
TZOFFSETTO:+0800
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:20070608T025852Z
DTSTART;TZID="(GMT+08.00) Kuala Lumpur/Singapore":20070608T110000
SUMMARY:This is meeting request with attachment
UID:040000008200E00074C5B7101A82E0080000000000A9BD0BA7A9C701000000000000000
010000000C5E16D144D1612498C0EF7E2115EFEC4
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="Xu, Rocky
":MAILTO:roc*@**
ORGANIZER;CN="Xu,y":MAILTO:roc*@**
LOCATION:India labs
DTEND;TZID="(GMT+08.00) Kuala Lumpur/Singapore":20070608T113000
DESCRIPTION:This is content! <<shanghai.txt>> \N
SEQUENCE:0
PRIORITY:5
CLASS:
CREATED:20070608T025925Z
LAST-MODIFIED:20070618T033505Z
STATUS:CONFIRMED
TRANSP:OPAQUE
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INSTTYPE:0
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
ATTACH:CID:008501c7b159$a9d41d3b$_CDOEX
X-MICROSOFT-CDO-OWNERAPPTID:1468557271
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-ATTENDEE-CRITICAL-CHANGE:20070608T025852Z
X-MICROSOFT-CDO-OWNER-CRITICAL-CHANGE:20070608T025852Z
END:VEVENT
END:VCALENDAR
Thanks & regards
RockyHi
have a look at this
You can use Java/ABAP proxies to do this job for you..
Java Proxy >> will read the mail(with the attachments) with the help of Java APIs and send the message into XI ABAP Proxy >> for this you will have to first convert the attachment into a message and then you can proceed in the regular fashion.
Not all adapters can process attachments, I'm not sure why you are having trouble with using module processor in the mail adapter. Just check if the service pack that you are using supports this feature.
If you are on WAS 6.10 and above you can achieve this and there is an excellent weblog by Thomas Jung on this topic at
/people/thomas.jung3/blog/2004/09/09/receiving-e-mail-and-processing-it-with-abap--version-610-and-higher
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/6d967fbc-0a01-0010-4fb4-91c6d38c5816
reading Pdf Through mail easly done with Java Proxy, which will read the mail(with the attachments) with Java APIs and send the message into XI and then map with the Target ABAP proxy structure .
Thanks -
Configuring Receiver mail adapter with dynamic email addresses
Hi,
I'm a newbie to XI and I have problems in configuring the Receiver mail adapter with the "Use Mail package" option selected. I am trying pickup a file (using file adapter on Sender side, picks up a simple XML file) and after mapping in XI, send the message as an email message to dynamic email addresses.
Everything works fine if I did not select the "Use Mail Package". But when I choose that option it errors out. I followed this blog posted on SDN -
/people/michal.krawczyk2/blog/2005/03/07/mail-adapter-xi--how-to-implement-dynamic-mail-address
The following XML message is my source
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/Somenamespace">
<ns0:Message1>
<ns1:studentlisttest xmlns:ns1="urn:karthiksender_to_karthikreceiver">
<Student>
<studentid>1</studentid>
<lastname>Studentlastname</lastname>
<firstname>Studentfirstname</firstname>
</Student>
<Mail>
<From>[email protected]</From>
<To>[email protected]</To>
<Subject>Test mail adapter</Subject>
</Mail>
</ns1:studentlisttest>
</ns0:Message1>
</ns0:Messages>
What I want to accomplish is, I have a simple message mapping where the Studentdetails are mapped to, lets say Customer details. For convenience lets keep it simple, StudentId --> Customerid, (student)Firstname --> (customer)Firstname, (Student)Lastname --> (customer)Lastname
I would like to get the Customer details as an XML attachment or in the body of an email with from, to and subject corresponding to that specified in the <Mail> node.
I followed the instructions posted on the blog and it works fine if I don't map the studentdetails to customerdetails. I did multimapping, with one source message (the xml file I posted above) and two target messages (customerdetails and Mail, which is the external definition posted on the blog). I beleive I'm missing something here. Could somebody please guide me through this?
Thanks
Karthikhi,
I still have not found the solution for this problem. Michal, your blog works fine when my source message has got only the mail details. As per your advice, I tried modified the structure of the xsd file as follows
<xs:schema targetNamespace="http://sap.com/xi/XI/Mail/30"
xmlns:xi="http://sap.com/xi/XI/Mail/30"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!--
Mail
-->
<xs:element name="Mail">
<xs:annotation>
<xs:documentation>Mail package for XI - Mail Adapter</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Subject" type="xs:string" minOccurs="0"/>
<xs:element name="From" type="xs:string" minOccurs="0"/>
<xs:element name="To" type="xs:string" minOccurs="0"/>
<xs:element name="Reply_To" type="xs:string" minOccurs="0"/>
<xs:element name="Content_Type" type="xs:string" minOccurs="0"/>
<xs:element name="Date" type="xs:dateTime" minOccurs="0"/>
<xs:element name="Message_ID" type="xs:string" minOccurs="0"/>
<xs:element name="X_Mailer" type="xs:string" minOccurs="0"/>
<xs:element name="Content" minOccurs="0">
<xs:annotation>
<xs:documentation>any type</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="encoding" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="MailReceipt">
<xs:annotation>
<xs:documentation>Mail Receipt for XI - Mail Adaper</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Server" type="xs:string"/>
<xs:element name="Format" type="xs:string"/>
<xs:element name="UseMailPackage" type="xs:boolean"/>
<xs:element name="Encoding" type="xs:string"/>
<xs:element name="Subject" type="xs:string" minOccurs="0"/>
<xs:element name="From" type="xs:dateTime" minOccurs="0"/>
<xs:element name="To" type="xs:string" minOccurs="0"/>
<xs:element name="Date" type="xs:dateTime" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CustomerlistExternal">
<xs:annotation>
<xs:documentation>Customer List</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Customername" type="xs:string"/>
<xs:element name="Customerid" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
My source message will be something like
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
<ns0:Message1>
<ns1:studentlisttest xmlns:ns1="urn:karthiksender_to_karthikreceiver">
<Student>
<studentid>1</studentid>
<lastname>abclname</lastname>
<firstname>abcfname</firstname>
</Student>
<Mail>
<From>[email protected]</From>
<To>[email protected]</To>
<Subject>Testing Mail adapter</Subject>
</Mail>
</ns1:studentlisttest>
</ns0:Message1>
</ns0:Messages>
I have mapped the <student></student> information to customerlist, with customerid --> studentid and customername --> firstname or lastname (for symplicity). This was a multimapping with one source and two target messages. My test mapping output is
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
<ns0:Message1>
<ns2:Mail xmlns:ns2="http://sap.com/xi/XI/Mail/30">
<Subject>Testing Mail adapter</Subject>
<From>[email protected]</From>
<To>[email protected]</To>
</ns2:Mail>
</ns0:Message1>
<ns0:Message2>
<ns2:CustomerlistExternal xmlns:ns2="http://sap.com/xi/XI/Mail/30">
<Customername>abclname</Customername>
<Customerid>1</Customerid>
</ns2:CustomerlistExternal>
</ns0:Message2>
</ns0:Messages>
So how would I get this part of the <CustomerlistExternal></CustomerlistExternal> part of the message as an attachment to the mail address specified in the <ns2:Mail></ns2:Mail> tags.
I'm definitely not understanding it right and am missing something. Could you give me step by step instructions to acheive this. I apologize for the trouble..this would be of great help to me.
Thanks
Karthik -
hi all,
I am working on mail-mail scenario where in when i monitor my sender CC it is displaying following error:
"exception caught during processing mail message; java.io.IOException: unexpected login response; read 001F BAD Protocol Error: "Invalid string supplied for user name".
Please help me out in tracing the error as i am not able to trace it.
Sender CC configurations are as follows
>> Transport protocol - POP3.
>> Message Protocol - XIALL
>>URL - pop://pop.gmail.com
>>User - [email protected]
>>password - xxxxxx
Thanks and Regards,
Amithi ramesh,
I have changed user to amit.tsec and stopped and started the channel again and the job got scheduled and after the scheduling time it shows following error :
exception caught during processing mail message; java.net.ConnectException: Connection timed out: connect
Please see if u have any idea on this error and can u give me the demo scenario on this sender mail adapter right from scratch i.e Data type.
Thanks and Regards,
Amit. -
Hi,
I'm trying out a scenario wherein i'm using an outbound mail adapter,to send a message to my gmail account. My message passes through XI successfully and in my communication monitoring the outbound mail adapter shows" Mail sent successfully". However i cant find any mails in my gmail inbox.
I've used the following parameters in mail adapter.
Transport protocol: SMTP
Message protocol XIPAYLOAD
url smtp://gmail.com
Please adviceHi,
i dont think that its possible to connect to gmail via smtp, try to connect to your own mailserver, and use your gmail account as to-address.
Edited by: Ingo Hauchwitz on Dec 21, 2007 10:49 AM -
Hi,
I am trying to configure a receiver mail adapter. I am not using the mail package, instead using the direct xml. I tried the SMTP address of hotmail and gmail and it didn't work.
Here are the connection parameters:-
URL = smtp://smtp.gmail.com
Authentication Method = Plain
User = myGMAILId
Password = myGMAILpassword
From = myGMAILId
To = myGMAILId
Content Encoding = base64
I searched all the mail adapter blogs in SDN and it didn't help. Can someone suggest what's missing.
Appreciate your help.
Krish> I am trying to configure a receiver mail adapter. I am not using the mail package, instead using the direct xml. I tried the SMTP address of hotmail and gmail and it didn't work.
Company firewall often block smtp calls to outside world.
You should use an internal mail server. -
I am working on a scenario where XI will send the xml to the receiver via e-mail. I am not getting any e-mail from the XI system. Can I specify gmail or yahoo account ids along with the property settings?
Do I have to do anything on the SCOT transaction?
Regards,
N.SMoorthy,
I wanted to let you know that am working on a RFCBPM-XI-Mail adapter scenario. This scenario worked on a regular file adatper scenario. Now I am just changing the sender communication channel to selec the mail adatper.
I am getting the following error in the mail adapter:
<b>'error occured: [2006-09-27T00:21:04Z] unable to call the mailer; com.sap.aii.messaging.srt.BubbleException: Failed to call the endpoint [null "null"]; nested exception caused by: java.io.IOException: server not responding OK to MAIL FROM; 530 5.7.0 Must issue a STARTTLS command first 40sm120265wrl"</b>
Here are the parameters:
Transport protocol : SMTP
Message Protocol : XIPAYLOAD
Adapter Engind : Integration Server
url:smtp://gmail.com (also tried the IP address of this server)
Authentication mode: plain
user: [email protected]
password : no password
Mail attributes:
From : [email protected]
To : [email protected]
subject : sample e-mail
Content Encoding: base64
Please let me know where the error is;
N.S -
Mail Adapter Settings ??
Hi Experts,
Please let me know how to use Connection Parameters for Mail Server in the MAIL ADAPTER.
1) Here, What is the URL stands for ?
2) User Name and Password is related to what ?
I initailly gave the Company ID and Password, so it worked.
But later when I tried with GMAIL it didnt work.
What is the significence of Mail Attributes given in the Mail Adapters down side.
I am getting confused with all these. Please put the clear light on it.Hi,
URL stands for the mail server URl, userID is also mailserver userID(not mail ID) and pwd also server password, by using this authentication details only we can able to connect to the mail server.
If you want to send the attachments then
By using the mail atttributes Mail package and Keep attachments we can send the attachments. And in the Module configuration tab we can get one default file and we add 3 more files that are
Transform.ContentDescription
Transform.ContentDisposition
Transform.ContentType
These files are available on the Net you can search for that files.
Ex : URL : smtp://10.30.200.107
Select the configure user authentication check box and Authentication method is Plain and give the user id and password for the mail server.
Guna gave good link, for configuration settings you can follow that link. -
Mail Adapter connection parameters
Hi
I have done the following scenario.
/people/michal.krawczyk2/blog/2005/03/07/mail-adapter-xi--how-to-implement-dynamic-mail-address
The source file is picked and in SXMB_MONI it shows checkered flag but not reaching the target.
what should I give in connection parameters for Mail Server incase if I want to sent my file to gmail/yahoo mail
Thanks,
srinivasSrinivas,
Your receipient email address (gmail/yahoo) has nothing to do with connection parameters.
Con params in adapter refer to a mail server to connect and send email to the given receipient email addres...this mail server is needed coz XI doesnt have mail server built in...it uses external mail servers
hope its clear now
praveen -
Hi,
I am trying a scenario where i am picking up a file using a file adapter.
I have to send that file as a attachemnt using the mail adapter to my gmail id.
Can it be done using the mail adapter?
what parameters should i enter in the mail adapter?
Thanks,
VigneshHi Vignesh,
Please check the sap help for receiver mail adapter configuration
http://help.sap.com/saphelp_nw04s/helpdata/en/6b/4493404f673028e10000000a1550b0/frameset.htm
Thanks! -
Reading Mail from Yahoo/Gmail
Dear All,
using SAP XI/PI is it possible to read a mail sent to my Yahoo or Gmail ID?
(it's not a Project requirement)
Thanks and regards
BhaskerHello!
This has been also discussed in the thread
Re: GMail account in Mail Receiver Adapter
and the opener was able to successfully connect and exchange messages with the GMAIL server.
The blog below might also be helpful:
/people/prasad.ulagappan2/blog/2005/06/07/mail-adapter-scenarios-150-sap-exchange-infrastructure
Regards,
Lucas -
Dynamic Filename in Receiver mail adapter is it possible without module?
Hi,
I need to send the file name in email adapter dynamically.Presently iam getting the filename as untitled.xml in the email .The keep attachments is checked in the mail adapter.
I need to rename the file based on the input field name and timestamp .for example if i get the input field xxxx then the filename should be set as xxxx + timestamp .xml.I tried to use the UDF for dynamic configuration but it didnot help me out.Please help me.
Thanks
RajeshUse below code snippet... It should work. If you want timestamp different change accordingly. Currently I do date followed by time as per my requirement.
SimpleDateFormat simpledatFormat = new SimpleDateFormat("yyyyMMdd");
Date date = new Date();
String datewithYear = simpledatFormat.format(date);
SimpleDateFormat simpledatFormat1 = new SimpleDateFormat("HHmmss");
Date date1 = new Date();
String datewithMs = simpledatFormat1.format(date1);
DynamicConfiguration conf = ((DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION));
DynamicConfigurationKey key = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File" , "FileName");
String oldFileName=conf.get(key);
String valueNew;
if( oldFileName == null){
valueNew =oldFileNamedatewithYeardatewithMs+".xml";
//set the new filename
conf.put(key, valueNew); -
Hi,
I am working on Sender Mail Adapter. I have done the total configuration but unable to sucess the scenarios. In the CC monitoring, it is saying that "Not Intialised" Even though i send and receive the messages from My Lotus Notes Inbox. I activated all the objects.
I have done the following examples:
Transport Protocal: POP3
Message Protocal: XIALL
Given the URL and UserId and PWD also
Poll Intevel: 1 (Mins)
Adapter Status: Active
Please help to me solve this problem. I already raised the one more thread today but didn't get solutions.
<b>Note: Do i need to do any setting from the Lotus notes(Mail Server) to diver my messages.</b>
Thanks in Advance,
<b>I found the problem with SMTP Address. Can i use the SMTP Url for POP3 or IMP4 protocal. Is there any thing else because if i use the Same SMTP Address, it is giving exception</b>
Best Regards,
Vijay
Message was edited by:
Gangisetty Vijaya Bhaskarudu
Message was edited by:
Gangisetty Vijaya BhaskaruduHi Gangisetty,
SMTP is the out going server(for sending mails out) while POP3 is the in coming(receiving mails) server. So for a sender channel, you need to use the POP server details not SMTP.
cheers
danus -
Sender Mail Adapter - forcing content as an attachement
Hi all,
We are using the Sender Mail Adapter to pull emails from the inboxes of some users of an exchange server. We use the Mail Package option.
We have noticed that the content of the emails are by-default added as attachments when there are no real attachments to the emails. However the content is not added as an attachment when one or more attachments are present in these emails.
Is there a way of forcing the Sender Mail Adapter to always add the content as an attachment and keeping the other attachments as well? and of course maintain the Mail Package message type as the main payload...?
Many thanks,
AldoHi Stefan,
Thanks for your reply. I am glad to hear that I am wrong again )
In your opinion is it possible to force the Outlook Exchange server to add the content attachment every time? I mean by doing some configuration on it...?
The reason why we would like to do this is because when - in the content tag of a Mail Package message - we have MIME message parts that are of content-type text/html we are having problems in decoding the html back to a readable format.
To do this we use the apache QuotedPrintableCodec Java class.
This works fine when the content type of the message is just text/plain but we get an exception when we try with text/html.
The exception we get is:
org.apache.commons.codec.DecoderException: Invalid URL encoding: not a valid digit (radix 16): 13
I don't know if this is because of the two character sets we have in the payload (utf-8 and iso-8859-1) or if it is for other reasons...
If you could help me figure out how to forward any HTML email to another system in a readable format it would be great.
Thanks for your support,
Aldo -
Sender Mail Adapter Configuration - Process Multiple Attachments
Dear sirs,
I need to process several attachments at the same mail message as individual payloads.
In default configuration of sender mail adapter only the body of message is used as payload.
So I added PayloadSwapBean Module at Processing Sequence and it processed the attachment I set in Module Configuration. I'm not able to process all attachments available, just one attachment is sent to PI pipeline.
How can I process all attachments of a single mail message?
Thank you in advance.
Fabio PurcinoHi Jose,
We are trying to implement reading multiple attachment in sender mail adapter.
Our Requirement is : Reading a mail having multiple .xls files. This should be read and converted to payload .
package multiswap;
//import com.sap.aii.adapter.xi.ms.XIMessage;
import com.sap.aii.af.lib.mp.module.*;
import com.sap.aii.af.lib.trace.Trace;
import com.sap.aii.af.sdk.xi.mo.Message;
import com.sap.aii.af.sdk.xi.mo.MessageContext;
import com.sap.aii.af.sdk.xi.mo.xmb.XMBMessageOperator;
import com.sap.aii.af.sdk.xi.mo.xmb.XMBPayload;
import com.sap.aii.af.sdk.xi.util.PayloadType;
import com.sap.aii.af.service.auditlog.Audit;
import com.sap.aii.af.service.cpa.*;
import com.sap.engine.interfaces.messaging.api.MessageDirection;
import com.sap.engine.interfaces.messaging.api.MessageKey;
import com.sap.engine.interfaces.messaging.api.Payload;
import com.sap.engine.interfaces.messaging.api.auditlog.AuditLogStatus;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Locale;
import javax.ejb.*;
public class MultiSwapRead
implements SessionBean, Module
private static final String VERSION_ID = "$Id: //tc/xpi.af/NW731EXT_07_REL/src/_af_application_ejb_module/ejbm/api/com/sap" +
"/aii/af/app/modules/PayloadSwapBean.java#1 $"
private static final Trace TRACE = new Trace("$Id: //tc/xpi.af/NW731EXT_07_REL/src/_af_application_ejb_module/ejbm/api/com/sap" +
"/aii/af/app/modules/PayloadSwapBean.java#1 $"
private static final String SIGNATURE_PROCESS = "process(ModuleContext , ModuleData)";
protected Hashtable cachedChannels;
protected SessionContext myContext;
public MultiSwapRead()
cachedChannels = new Hashtable();
public void ejbRemove()
public void ejbActivate()
public void ejbPassivate()
public void setSessionContext(SessionContext context)
myContext = context;
public void ejbCreate()
throws CreateException
public ModuleData process(ModuleContext moduleContext, ModuleData inputModuleData)
throws ModuleException
if(TRACE.beLogged(200))
TRACE.entering("process(ModuleContext , ModuleData)", new Object[] {
moduleContext, inputModuleData
ModuleData outputModuleData;
Iterator itr;
outputModuleData = inputModuleData;
String chid = moduleContext.getChannelID();
TRACE.infoT("process(ModuleContext , ModuleData)", ModuleCategories.SAP_MODULE_ROOT, (new StringBuilder()).append("performing payload swap for channel ").append(chid).toString());
LookupManager lman = LookupManager.getInstance();
Channel chan = null;
try {
chan = (Channel)LookupManager.getInstance().getCPAObject(CPAObjectType.CHANNEL, chid);
} catch (CPAObjectNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (CPAException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
Direction direction = chan.getDirection();
String swapkey = moduleContext.getContextData("swap.keyName");
String keyvalue = moduleContext.getContextData("swap.keyValue");
Object obj = inputModuleData.getPrincipalData();
Object pivotedObj = inputModuleData.getSupplementalData("mp.pivoted");
boolean pivoted = pivotedObj == null || !(pivotedObj instanceof Boolean) ? false : ((Boolean)pivotedObj).booleanValue();
Message mo = null;
if(obj instanceof com.sap.engine.interfaces.messaging.api.Message)
mo = (Message)((com.sap.engine.interfaces.messaging.api.Message)obj);
} else
if(obj instanceof MessageContext)
mo = ((MessageContext)obj).getMessage();
} else
TRACE.warningT("process(ModuleContext , ModuleData)", ModuleCategories.SAP_MODULE_ROOT, "no message found");
if(mo != null && XMBMessageOperator.numberOfPayloads(mo) > 0)
// String midstr = XMBMessageOperator.getMessageId(mo).toString();
MessageKey auditkey = new MessageKey(((com.sap.engine.interfaces.messaging.api.Message) mo).getMessageId(), com.sap.engine.interfaces.messaging.api.MessageDirection.INBOUND);
itr = (Iterator) mo.getAttachments();
if(swapkey != null && keyvalue != null)
StringBuffer textSwappingbyBuf = new StringBuffer();
textSwappingbyBuf.append("Swap: swapping by '").append(swapkey).append("' ? '").append(keyvalue).append("'");
String textSwappingby = textSwappingbyBuf.toString();
TRACE.infoT("process(ModuleContext , ModuleData)", ModuleCategories.SAP_MODULE_ROOT, textSwappingby);
Audit.addAuditLogEntry(auditkey, AuditLogStatus.SUCCESS, textSwappingby);
while (itr.hasNext()){
boolean swappedp = swapPayloads(mo, swapkey, keyvalue);
String swappedStatus = swappedp ? "Swap: successfully swapped" : "Swap: no matching payload found";
Audit.addAuditLogEntry(auditkey, AuditLogStatus.SUCCESS, swappedStatus);
} else
StringBuffer textInvalidBuf = new StringBuffer();
textInvalidBuf.append("Swap: parameter missing ");
if(swapkey == null)
textInvalidBuf.append("swap.keyName");
if(swapkey == null && keyvalue == null)
textInvalidBuf.append(" and ");
if(keyvalue == null)
textInvalidBuf.append("swap.keyValue");
String textInvalid = textInvalidBuf.toString();
TRACE.warningT("process(ModuleContext , ModuleData)", ModuleCategories.SAP_MODULE_ROOT, textInvalid);
Audit.addAuditLogEntry(auditkey, AuditLogStatus.WARNING, textInvalid);
} else
String messageEmpty = "Swap: message is empty or has no payload";
TRACE.infoT("process(ModuleContext , ModuleData)", ModuleCategories.SAP_MODULE_ROOT, messageEmpty);
return outputModuleData;
private static boolean swapPayloads(Message mo, String swapkey, String keyvalue)
swapkey = swapkey.toUpperCase(Locale.ENGLISH);
keyvalue = keyvalue.toUpperCase(Locale.ENGLISH);
int ifound = -1;
for(int i = 0; i < XMBMessageOperator.numberOfPayloads(mo); i++)
XMBPayload pldi = XMBMessageOperator.getPayload(mo, i);
String pldivalue = null;
if(swapkey.equals("PAYLOAD-DESCRIPTION"))
pldivalue = pldi.getPayloadDescription();
} else
if(swapkey.equals("PAYLOAD-NAME"))
pldivalue = pldi.getPayloadName();
} else
pldivalue = pldi.getContentAttribute(swapkey);
if(pldivalue == null)
continue;
pldivalue = pldivalue.toUpperCase(Locale.ENGLISH);
if(pldivalue.indexOf(keyvalue) < 0)
continue;
ifound = i;
break;
if(ifound >= 0)
XMBPayload pldfound = XMBMessageOperator.getPayload(mo, ifound);
if(pldfound.getPayloadType() != PayloadType.APPLICATION)
XMBPayload pldapp = XMBMessageOperator.getApplicationPayload(mo);
if(pldapp == null)
pldfound.setPayloadType(PayloadType.APPLICATION);
} else
pldapp.setPayloadType(PayloadType.APPLICATION_ATTACHMENT);
pldfound.setPayloadType(PayloadType.APPLICATION);
TRACE.infoT("process(ModuleContext , ModuleData)", ModuleCategories.SAP_MODULE_ROOT, "successfully swapped");
return true;
} else
TRACE.warningT("process(ModuleContext , ModuleData)", ModuleCategories.SAP_MODULE_ROOT, "no matching found");
return false;
We couldn't go further. Please have a look in highlighted code.
Regards,
Kesava.
Maybe you are looking for
-
Airport extreme card not working with leopard / G5
I just upgraded my PowerMac to leopard (G5 dual 1.8, 3 gigs of ram, 250 GB HD). I bought it new in December 2004 from apple. Previously I had been using a USB adapter to connect to my wireless internet at home (Linksys WRT54G). This device does not s
-
Map Legend changes when scrolling map vertically
With the map scrolled all the way out, when you move it vertically it, the legend changes With map in middle. 5000km:5000miles with map lying on bottom of screen 5000km:2000miles with half of map scrolled out of the screen 200km:100miles with map out
-
Packaging .AI file to PDF ready for printer - MAC Tiger user
Hallo, I need some help please about sending artwork to printer who is using a FUJI colour Laser printer. (like most printers who are using laser here they reply to me to simply send them PDF, when I ask about embedded profiles or not to embed they t
-
Hey guys, I just installed the first Final Cut Studio on a Dual MacPro 2.66. I updated motion with the motion incentives and motion update, and now it unexpectedly quits. How can I erase the Motion updates? Any other advice is also appreciated. Thank
-
Requirements not passing for third party orders
Hi...I have a problem that I am hopeful there is an answer to. On the SD side we have third party orders that when entered automatically create purchase requisitions. Previously, those requirements were passed through and were visible in MD04. We a