on 08-05-2009 3:06 PM
Hi,
I am facing an issue with the Enhanced Receiver Deterrmination (ERD) at runtime for an EOIO scenario. When a message gets split for the defferent service it fails complaining about mapping. If I retrigger it gets delivered.
However if I provide a queue filter this failure does not occur even if logically that queue filter definition does not make any sense to the scenario. for eg: The filter is maintained for a different scenario say A, but scenario B which has ERD will work. I am well confused, shoot your questions pls. Please help in case you have faced similar issue. We are on 07s SP17.
regards
Unni
Hi Unni,
Can you clarify if you are using Extended Receiver determination or Enhanced Interface determination
I assume you are facing problems while extended receiver determination routing.
Are you sure that you have provided all the objects required for each of the services?
Please check if u have created the Recvr determination, Interface determination, sender / recvr agreements for each of the services.
also check if the display is definitely generating the node.
Can you provide the condition you gave in there? and exact error message you are getting? is it something like split messages created no mapping?
Thanks,
Venkat.
Edited by: Venkat Anusuri on Aug 5, 2009 10:32 AM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Venkat,
You are correct, I use extended Receiver determination. As I have mentioned earlier, the scenario works well if I specify the queue filter, so all related objects exists.
Basically the split message with out a queue filter is poinitng back to the source message. But if I re-trigger from moni it goes well. With a queue filter, it works without a cause.
See the sample message for error
- <SAP:Receiver>
<SAP:Party agency="http://sap.com/xi/XI" scheme="XIParty" />
<SAP:Service>BS_ENVISION_SAP_EMERG</SAP:Service>
<SAP:Interface namespace="urn:sap-com:document:sap:rfc:functions">ZWM_INBOUND_NOTIFICATION_EMERG</SAP:Interface>
- <SAP:Mapping notRequired="M">
<SAP:ObjectId>oPLLbgxJOWimAK6rdZb/MA==</SAP:ObjectId>
<SAP:SWCV>oZGAQNmpEdym2dnSCqoHjQ==</SAP:SWCV>
<SAP:SP>-1</SAP:SP>
</SAP:Mapping>
</SAP:Receiver>
*<SAP:Interface namespace="http://enbridge.com/envision/envision2/jdbc">MI_TBL_WMS_SOURCE_STAGING_SDW_EGD</SAP:Interface> *
</SAP:Main>
*The actual should be *
- <SAP:Receiver>
<SAP:Party agency="http://sap.com/xi/XI" scheme="XIParty" />
<SAP:Service>BS_ENVISION_SAP_EMERG</SAP:Service>
<SAP:Interface namespace="urn:sap-com:document:sap:rfc:functions">ZWM_INBOUND_NOTIFICATION_EMERG</SAP:Interface>
- <SAP:Mapping notRequired="M">
<SAP:ObjectId>RNPgv18MOBmjhpr+oO1mNw==</SAP:ObjectId>
<SAP:SWCV>oZGAQNmpEdym2dnSCqoHjQ==</SAP:SWCV>
<SAP:SP>-1</SAP:SP>
</SAP:Mapping>
</SAP:Receiver>
*<SAP:Interface namespace="urn:sap-com:document:sap:rfc:functions">ZWM_INBOUND_NOTIFICATION_EMERG</SAP:Interface>*
</SAP:Main>
Hi,
1. Which kind of mapping are you using(MM, JM, XSLM)?
2. Have you tested your interface mapping in the IR?
Regards
Ivan
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
Here in ny work, som time ago we have a similiar problem. In design time while IM was working correctly but in runtime we was getting an error, the problem was because in design time for multimapping PI uses a certain namespace however in runtime uses other one . So Use the following javamapping(JM) to copy the payload content between the multimapping(MM). Put this between you JM and MM.
import com.sap.aii.mapping.api.StreamTransformation;
import com.sap.aii.mapping.api.StreamTransformationException;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;
/**
*
* @author jose.reyes
*/
public class InputFileWriter implements StreamTransformation {
public void setParameter(Map map) {
}
public void execute(InputStream in, OutputStream out)
throws StreamTransformationException {
try{
File f=new File("C:\\PayloadContent.xml");
FileOutputStream fosPayload = new FileOutputStream(f);
byte[] content= new byte[in.available()];
int c;
int i=0;
String sb = "";
while ((c = in.read()) != -1){
content<i>=(byte)c;
sb += (char)content<i>;
i++;
}
fosPayload.write(sb.getBytes());
fosPayload.close();
out.write(sb.getBytes());
out.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
Than use that payload to test your message mapping and see what happend.
Regards
Ivan
User | Count |
---|---|
88 | |
23 | |
11 | |
9 | |
8 | |
5 | |
5 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.