SAP Adapter : RoutingListenerNotification (ALE) routes Idoc to a wrong system

Hello.

i defined a Routing Notification (synchronous) named HRMD_A_Notifier. In Transport setting i set:

Sender = DIAMDT901
Receiver = XSUB004
Message = HRMD_A

Transport : ALE

Transport Parameter key servername is set to connection DJACLNT200.
Service send_HRMD_A is configured in tab Adapter Settings.

When the listener dia_esb_general_901 receives the HRMD_A Idoc
from system DIACLNT901 it routes the Idoc to system DIACLNT901
and not to DJACLNT200 as configured.

Here the log:

2013-05-31 17:19:36.495 MESZ Listener - Create 0A96110724C151A8BF875926
2013-05-31 17:19:36.505 MESZ ALE:InboundProcess - Message sent to Routing Listener.
2013-05-31 17:19:36.514 MESZ Persisted message body to packages\WmSAP\txStore\06045889\A17C1B72\9121AF56.xml
2013-05-31 17:19:36.518 MESZ Notification - Routing - DIAMDT901.XSUB004.HRMD_A
2013-05-31 17:19:36.681 MESZ Adapter Service - IDoc sent to SAP system “DIACLNT901” with tid “0A96110724C151A8BF875926”.
2013-05-31 17:19:36.685 MESZ Notification - Service “pub.sap.transport.ALE:OutboundProcess” successfully executed.
2013-05-31 17:19:36.688 MESZ Listener - Commit 0A96110724C151A8BF875926
2013-05-31 17:19:36.743 MESZ Notification - Forward confirm event disabled.
2013-05-31 17:19:36.748 MESZ Listener - Confirm 0A96110724C151A8BF875926

I tried to disable all other notfications and listeners, but nothing helped.

Do you have any idea why this is not working and why IS means to route the idoc to system
DIACLNT901 and not to DJACLNT200 ?

I attached the current Idoc.

Thanks,
Sebastian

HRMD_A.xml (10.3 KB)

Did you check the flow is using the right alias (connection that created via SAP Adapter page) going to the exact host/client associated? Unless there is some thing setup or service issues it can’t go to wrong SAP system.

What is your IS and SAP adapter versions?

HTH,
RMG

Hi,

yes flow seems to be right. I only created a Routing Notification.

Aliases are set correctly in SAP connections.

I don’t know how to get the error, why ESB “thinks” to route it
to connection DIACLNT901 instead of configured connection
“DJACLNT200” in Routing Notification.

Versions:

IS :

webMethods Integration Server
Version 8.2.2.0
Updates IS_8.2_SP2_Core_Fix8
TNS_8.2_SP2_Fix14
Build Number 228
SSL Strong (128-bit)

SAP :

7.1.0.8.822
Updates SAP_7.1_Fix8
JCA Spec Version 1.0
Vendor Name Software AG

OS Version 6.1
Current User SYSTEM
Working Directory D:\SoftwareAG\webMethods82\IntegrationServer

JCo Version 3.0.9 (2012-07-19)
JCo Middleware JavaRfc
JCo Middleware Version 2.2.8
JCo Native Library Version 720.310
JCo Native Library Location D:\SoftwareAG\webMethods82\IntegrationServer\lib\sapjco3.dll
IDoc Library Version 3.0.8 (2012-10-12)

Hi Sebastian,
Integration server has the capability of overriding the default connection name associated with the server during run-time. $connectionName parameter is being used for this. If $connectionName parameter is set in the pipeline “knowingly/unknowingly” to a different alias, the IDoc will be sent to the system that points to $connectionName and not the one from what you see in tab adapter settings.

Regards
Senthil

Hi Shentil.

but where can i see or change the $connectionName exactly ?

In the associated flow service to the routing notification ?

Thanks.
Sebastian

Yes, you got to check in the flow service where you invoke built in service to send IDoc. serverName is the input parameter when you invoke pub.sap.client:sendIDoc service. This would carry the connection alias name. Though there is no explicitly $connectionName appearing as one input parameter, still can you check if this variable is being passed?

-Senthil

Hi Senthil,

ok. but the associated service has no input / output parameters.

when i try to create the SAP Routing Notification and save for the first time
i get an error message without any content or message.

The associated service is completely empty and contains no input/output
parameters nor flow steps.

So i’m just wondering why to associate the service ?

Thanks,
Sebastian

Hi Sebastian,
I am not sure which associated service you are talking about. If you are pointing to pub.sab.client:sendIDoc service, this is a public service with inputs and outputs defined.

As you said, its about sending Idoc to different SAP system, I assumed you are using the above service. If not, what service is being used to send Idoc to sap?

-Senthil

Hi Senthil,

i’m using Routing Notifications and ALE Transport like described p. 159 SAP Adapter Install and User Guide 7.1

Therefore i have to assign a service. But the service is empty and is not really used by the notification.

Sebastian

Sabastein,

Why are you using Routing notification any reason?

Instead you can directly use pub.sab.client:sendIDoc that can send IDOC to SAP

steps will be:

pub.sap.idoc:recordToIDoc (map the IDATA of the IDOC structure to the boundNode)
pub.sap.client:createTID (pass serverName ie Alias name on the SAP Adapter connection)
pub.sap.client:sendIDoc (pass serverName ie Alias name on the SAP Adapter connection)
pub.sap.client:confirmTID(pass serverName ie Alias name on the SAP Adapter connection)

HTH,
RMG

Hi RMG,

i want to implement an ALE scenario. HRMD_A07 should be sent from HCM SAP System
to Logistic SAP System. Within the service a mapping should be done.

So for routing the message it is less effort to use a routing notification, since i can use
the predefined SAP connections.

Sender system is an Unicode system, ECC 6.0 EhP 6, actual Kernel based on SUSE SLES 64bit.

Main issue is that the routing notification ignores the configured destination SAP Connection
and uses always DIACLNT901. I can see the same issue on a VM in which i installed IS and
SAP Adapter 7.1 with Fix 8.

So i’m not quite sure whether this is an JCo 3.0.9 / Idoc Class Library 3.0.8 problem in handling
connections or if the cause is located in the sender system.

I don’t know how to get to the (root) cause of this problem ?

Do you have any suggestion where to start from ?

Thanks,
Sebastian

please have a ticket created with SAG support as well…

Hi,

the routing notification is working now. It was a bug, which will be fixed im Fix9 for SAP Adapter.

But how can change/map the idoc data before it will be sent to the destination
system ?

Actually idocToDocument, MAP, documentToIdoc did not work, since it does not change
the content of the idoc.

Do you have some hints to get this working?

Thanks,
Sebastian

What you want to change you mean the IDOC data itself that you mapped to the Data Record?

Hi rmg,

well we need to change the company code in an idoc segment.

Therefore i want to map / change the value to another.

But actually i don’t know how to achieve this within a
routing notification before the idoc will be sent to
the destination sap system.

Thanks,
Sebastian

Where exactly you want to change the company code in the IDOC

EDI_DC40 control record or DATA record (actual segments like E1EDK02)?

HTH,
RMG

Hi,

i would like to change the value in DATA record / segment E1EDK02.

Thanks,
Sebastian

OK…For this you need to contact who ever did the wM IDOC mapping and they can modify the map to this DATA segement and I don’t see any issue for this before pushing the IDOC to SAP.

Have you touch base with your team?

HTH,
RMG

Hi rmg,

problem is the mapping within the service associated with the routing notfication.

I use the service pub.sap.idoc:idocToDocument. In the following MAP step i
map the SNDPOR field to another value. This is only for testing the mapping.

But the mapping is not performed, and the idoc goes to the destination system
with its original values.

Any ideas for that ?

Thanks,
Sebastian