on 04-24-2012 10:48 AM
Hello,
We have a IDOC to EDIFACT (AS2) scenario. We are sending it successfully. We are receiving async MDN back but it doesnt processed successfully by PI.
For Outbound scenario sender is ECC system which is not a party. But i created an virtual party for it and on header mapping it is matched and working successfully.
I am getting async MDN from trading partner successfully. But ack doesn't delivered to ECC system successfully.
The error is on Integration server is <SAP:Stack>Unable to convert sender XI party http://sap.com/xi/XI / XIParty / TDPARTNER to an IDoc partner</SAP:Stack>
I have created Sender AS2 CC with Reports message protocol and Sender agreement as below
Communtication Party: TDPARTNER
Communication Component: TDComponent
Interface: *
Namespace: *
Receiver Party: ECCPARTNER
Receiver Component: <empty>
What could be reason? We have no receiver agreement for MDN. So how header mapping can be used for this?
Thanks.
Hi,
Have a look at this thread and the answer by Chirag Gohil for some interesting answers.
Regards,
Greg
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hello Altug,
Does that mean, you are not able to process MDN received from partner.
In your AS2 Receiver channel, have you selected 'Refer MDN to XI' ?
Received MDN has a format called dtReport. You can create a Mapping from dtReport to SYSTAT IDoc(also corresponding objects like OM, ID,RD, RA, etc) which would create SYSTAT Idocs from MDN.
These SYSTAT Idocs would then update the status of original IDocs.
Please let me know if this helps and apologies if I haven't understood the question correctly.
Thanks.
Best Regards,
Shweta
Hi Shweta,
It is correct that i couldnt process the received MDN. Seeburger workbench showing me that all reports are OK and MDN is received.
I followed seeburger AS2 guide as i copied below.
Case B: Receiving the Acknowledgment Report (Optional)
For this purpose, set the “Handle received MDN” flag of the AS2 channel to “Refer MDN to XI System”.
Additionally, an inbound channel with message protocol ‘Reports’ and the corresponding agreements for receiving the acknowledgments are required.
But there is not any other point about SYSTAT etc.. Is this you recommendation is tested?
Thanks
Hi Shweta,
I have created the objects as you mentioned. And it has triggered the SYSTAT01 Idoc for MDN.
But when i check the original message at PI SXMB_MONI its acknowlegment message has this error as below image. It still having the error.
I think your solution is about functional acknowlegment. Thanks for it.
But i am looking for this acknowlegment to the message. How it can be handled?
Thanks.
we have a similar case, what we a doing is mapping the MDN (DtReport message) to an ALEAUD IDOC and uploading it to ECC. The key issue is that in the ALEAUD IDOC you create, you need to have the IDOC number of the original message you sent out with the AS2 adapter
You could for example put the outbound IDOC number in the AS2 subject field which will also be available in the DtReport message
I have sent the idoc number as message subject in outbound message. I used UDF and set dtSubject as Dynamic Configuration. When i check seeburger workbench the message has the idoc number as subject. But dtReport doesnt have this value as subject.
dtReport always has what i enter in the AS2 Receiver CC subject parameter. What could be the reason of this behaviour?
Thanks.
you are right, it seems the subject approach works with the X400 adapter but not with the AS2 adapter. at least in my version of the adapter the Subject in the MDN is not related to the Subject of the message we sent.
What we are doing is actually this:
- when we send out a message we store it in the Seeburger Message tracker together with the message Id and the IDOC number.
- when we get the MDN report which looks like this:
<clientId>000</clientId>
<correlationId>4f97f35d-8813-16d0-e100-80000af00eb8</correlationId>
<category>DeliveryReport</category>
<state>SUCCESS</state>
<finalReport>true</finalReport>
<freeText>Received asynchrone MDN successfully.</freeText>
we take the <correlationId> and look up the IDOC Number in the message tracker using the message Id as key for the search.
Hello Altug,
Apologies for my delayed response.
As Marcos already explained, we had to do the same in order to extract IDoc number.
We had implemented an RFC Lookup UDF which takes Correlation ID(archive key,ARC_KEY) as input and queries table SXMSPMAST in PI ABAP stack to get the corresponding IDoc Number(DOCNUM).
Regards,
Shweta
there are 2 types of reports:
- one is the "Transmission" report, which is activated with that checkbox in the channel. That report only tells you the file has been sent.
- the second in the "ReceiptReport" (see my xml above). That one tells you the MDN has arrived (i.e. your partner has acknowlecked the message). You activate this in the channel with "Handled received MDN=refer MDN to XI system"
the setup looks ok to me. Are you sure there is no message in the XI monitor? or in the Seeburger recovery monitor?
if you are sure, I would set the debug mode in the adapter. Set debug level in log configurator of the NWA (location *as2* ), normally you would then see in the server log, what is the cause for the report not being triggered.
Hi,
I found below log in th related server. This should be the reason. I think OSS message should be raised.
Error while loading dtReportRequest, Caused by: javax.xml.bind.MarshalException
- with linked exception:
[java.lang.NullPointerException]
at com.seeburger.message.binding.types.impl.runtime.MarshallerImpl.write(MarshallerImpl.java:176)
at com.seeburger.message.binding.types.impl.runtime.MarshallerImpl.marshal(MarshallerImpl.java:144)
at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:70)
at com.seeburger.xi.as2.AS2MessageHelper.createAckReport(AS2MessageHelper.java:1446)
at com.seeburger.xi.as2.AS2MessageHelper.handleReport(AS2MessageHelper.java:622)
at com.seeburger.xi.as2.AS2MessageHelper.<init>(AS2MessageHelper.java:216)
at sun.reflect.GeneratedConstructorAccessor379.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at com.seeburger.xi.connector.fw.ObjectFactory.createXIMessageHelper(ObjectFactory.java:80)
at com.seeburger.xi.connector.fw.XIMessageInitiator.initiateTask(XIMessageInitiator.java:269)
at com.seeburger.frame.FrameWork.initiateTask(FrameWork.java:80)
at com.seeburger.http.core.SHCTaskInitiator.initiateTask(SHCTaskInitiator.java:288)
at com.seeburger.http.core.SHCTaskInitiator.doRecover(SHCTaskInitiator.java:237)
at com.seeburger.http.core.ShcBase.doRecover(ShcBase.java:135)
at com.seeburger.frame.core.FrameWorkRJobHandler.recoverJob(FrameWorkRJobHandler.java:317)
at com.seeburger.http.core.SHController.recoverJob(SHController.java:994)
at com.seeburger.xi.connector.remote.Adapter.recoverJob(Adapter.java:371)
at sun.reflect.GeneratedMethodAccessor384.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.sap.engine.services.rmi_p4.reflect.LocalInvocationHandler.invokeInternal(LocalInvocationHandler.java:98)
at com.sap.engine.services.rmi_p4.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:52)
at $Proxy3042.recoverJob(Unknown Source)
at com.seeburger.recover.timer.communication.RecoveryAdapterCommunicator$RecoveryThread.run(RecoveryAdapterCommunicator.java:371)
at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
at java.security.AccessController.doPrivileged(Native Method)
at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:169)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:266)
Caused by: java.lang.NullPointerException
at com.seeburger.message.binding.types.impl.runtime.SAXMarshaller.reportError(SAXMarshaller.java:436)
at com.seeburger.message.binding.types.impl.runtime.SAXMarshaller.text(SAXMarshaller.java:272)
at com.seeburger.uri.dt.master.schema.impl.KeyValueTypeImpl.serializeBody(KeyValueTypeImpl.java:76)
at com.seeburger.message.binding.types.impl.runtime.SAXMarshaller.childAsBody(SAXMarshaller.java:391)
at com.seeburger.uri.dt.master.schema.impl.DtReportTypeImpl.serializeBody(DtReportTypeImpl.java:288)
at com.seeburger.message.binding.types.impl.runtime.SAXMarshaller.childAsBody(SAXMarshaller.java:391)
at com.seeburger.uri.dt.master.schema.impl.DtReportImpl.serializeBody(DtReportImpl.java:208)
at com.seeburger.message.binding.types.impl.runtime.SAXMarshaller.childAsBody(SAXMarshaller.java:391)
at com.seeburger.message.binding.types.impl.runtime.MarshallerImpl.write(MarshallerImpl.java:171)
... 28 more
User | Count |
---|---|
89 | |
10 | |
9 | |
9 | |
9 | |
6 | |
6 | |
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.