cancel
Showing results for 
Search instead for 
Did you mean: 

Seeburger AS2 MDN for IDOC

Former Member
0 Kudos

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.

Accepted Solutions (1)

Accepted Solutions (1)

former_member184681
Active Contributor
0 Kudos

Hi,

Have a look at this thread and the answer by Chirag Gohil for some interesting answers.

Regards,

Greg

Former Member
0 Kudos

Hi,

Thanks for recommendation but it doesnt help. Because it is File to IDOC scenario. In my case it is MDN Acknowledment. I dont have any interface determination, receiver agreement. Only one  AS2 sender CC and Sender Agreement without any scecific Interface.

Thanks.

shweta_walaskar2
Contributor
0 Kudos

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

former_member184681
Active Contributor
0 Kudos

Hi,

Did you maintain the Logical System Name for the receiver system in SLD? See the green-marked field on the screenshot from SLD below:

Hope this helps,

Greg

Former Member
0 Kudos

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

shweta_walaskar2
Contributor
0 Kudos

Hello Altug,

I had already implemented this Configuration long time back and it had worked successfully.

Regards,

Shweta

Former Member
0 Kudos

Hi,

Yes. the logical System Name was maintained already for both (Our Application System and Trading Partner). This is not the case.

Thanks.

Former Member
0 Kudos

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.

shweta_walaskar2
Contributor
0 Kudos

Hi Altug,

In SXI_MONITOR, the status is 'No Acknowledgement possible'.

It means that Acks for this IDoc type have been set to be suppressed.

Could you please check if you have an entry for this IDoc in table IDXNOALE?

Regards,

Shweta

Former Member
0 Kudos

Hi Shweta,

I have run IDX_NOALE report from SE38 in PI system and the related application server entry as screenshot.

Is it looking OK? ZORDERS is my idoc for this integration.

Kind regards,

Altug Bayram

0 Kudos

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

Former Member
0 Kudos

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.

0 Kudos

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.

shweta_walaskar2
Contributor
0 Kudos

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

Former Member
0 Kudos

Thanks.

I just found that if i deselect Deliver transmission report from AS2 Receiver CC it doesnt trigger the AS2 report Channel anymore.

I also checked that the previous MDN messages. They are a little different then yours like below.

Is this a proper MDN message?

shweta_walaskar2
Contributor
0 Kudos

Hi Altug,

Yes, this is a valid MDN structure.

You can use correlation-id to retrieve IDoc number from table SXMSPMAST.

Regards,

Shweta

Former Member
0 Kudos

Hi Shweta,

Do you know what is the relation between Deliver transmission report and MDN. Deliver transmission report is necessary to deliver MDN to PI?

Because if i deselect Deliver transmission report , MDN report channel is not running.

Thanks.

shweta_walaskar2
Contributor
0 Kudos

Hi Altug,

As far as I know, when we select, Deliver Transmission report, it indicates, we would like to receive MDN.

This could be the reason that you don't receive MDN when you deselect it.

I would like to confirm this from Seeburger Manuals and would let you know.

Thanks.

Regards,

Shweta

0 Kudos

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"

Former Member
0 Kudos

Hi Marcos,

I want to get "DeliveryReport" type report as your example MDN from our AS2 server.

We are getting MDN successfully accroding to seeburger workbench.

I have configured Receiver AS2 Channel as you suggested.

Everything looks OK for me. What could be issue?

0 Kudos

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.

Former Member
0 Kudos

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

0 Kudos

yes, i think so too

Answers (0)