Skip to Content

Sometime the need of connect more than one Integration Server to SAP Application system may arise, but not in all scenario and SAP releases can be implemented the optimal solution “Consumer and Provider ABAP ProxyService to Multiple SAP NW PI Systems Using Process Integration 7.1.”

Of course you can use other communication methods like IDoc, tRFC or qRFC and in this case you will have no problems connecting more than one IS to a SAP Application System, but in case you really must use ABAP Proxy you have still some chance to have a SAP Application System get connected to more than one XPI system (SAP XI 3.0, SAP PI 7.0 or SAP PI 7.1).

This can be done also without modify line of standard SAP code, using an already available (but not documented) feature.

With transaction SXMB_ADM you can set the “standard” integration server:

SXMB_ADM Image 1 

But you can also specify one or more runtime user that, when used to create ABAP proxy messages, will route the message to a specific HTTP RFC destination related to an Integration Server different from the standard one.

SXMB_ADM Image 2

 

Any RUNTIME-IS_URL parameter has its own value that corresponds to a specific RFC destination:

SM59

 

In this way executing (in Dialog mode or Background mode) outbound processing of ABAP proxy, the HTTP Destination picked will route the message to the standard integration server unless the runtime user executing the outbound processing is one of that inserted as sup-parameter of parameter RUN_TIME-IS_URL transaction report SXMB_ADM:

SXMB_MONI 1 

Message sent to Integration Server A (the default integration server):

SXMB_ADM 3

 

Message sent to Integration Server B:

SXMB_MONI 2

 

This approach has some point of attention: 

  1.  The business system name of SAP Application System must be identical in the different Integration Servers
  2.  The ESR (Design part) connected to SAP Application System will be always and only the standard one. You need to export – import the design part from the standard to the other(s)
  3. The runtime user may be different in case of restart of a message in error during outbound phase

 

Effectively similar point of attention arise from the approach proposed in “Consumer and Provider ABAP Proxy Service to Multiple SAP NW PI Systems Using Process Integration 7.1.” also.

The point where the selection of IS happens is the class CL_XMS_PLSRV_IE_ADAPTER, local class LCL_UTIL  method get_url_of_is:

Method

This solution can be a starting point for a more robust and flexible architecture that may select the Integration Server dynamically on the base of: 

  1. Inteface namespace
  2.  Interace name
  3.  Virtual receiver name
  4.  Payload content
  5.  Integration Server availability
  6.  …as you need!
To report this post you need to login first.

9 Comments

You must be Logged on to comment or reply to a post.

  1. Dries Guth
    Sandro,

    great blog. Will extend my architecture knowledeg. Thnaks.

    But I was just thinking, what is happing when the outbound proxy will be triggered by a BADI or user exit from a transaction point of view? The runtime user in this case is the “key user” working in the SAP system, right ?

    How can we handle multiple IS in this case?

    regards,
    Dries

    (0) 
    1. Sandro Garofano Post author
      You have 4 chance:

      1) switch the runtime user with some trick

      2) release a JOB expressly created to complete the outbound that runs with the “special user”

      3) Call a function module expressly created via a RFC destination that use “special user”

      4) Modify the standard to select in more robust way the IS, as suggested at the end of the blog

      (0) 
      1. Dries Guth
        1) switch the runtime user with some trick
        How does the trick look like ?

        2) release a JOB expressly created to complete the outbound that runs with the “special user”
        –> Using BADI/user exit will not need to trigger any job. The proxy will be triggered by the user exit-

        3) Call a function module expressly created via a RFC destination that use “special user”
        –> BUT: How do you know, what runtime user has to be choosen in the Proxy call while a key user is triggerung the call via its transaction?

        (0) 
        1. Sandro Garofano Post author
          Dear Dries, this blog is not about “How to switch the runtime user”, but to connect more Integration Server to a SAP Application System.

          The aim of this blog is to show a possible path, but the  complete and robust solution require deep architectural, basis and development knowledge that obviously can’t be discussed here.

          (0) 
  2. Samiullah Qureshi
    Sandro,

    Nice Blog. However, I have a question

    We will be able to see message interfaces of only one PI system in SPROXY transaction on SAP application server. We need to maintain same structure as of outbound interface in other PI systems(other than default IS ).right?

    Regards,
    Sami

    (0) 
    1. Sandro Garofano Post author
      Right,

      you have to export from the “defaut” XI system and import into the other system(s). This is the procedure suggested by SAP also in  “Consumer and Provider ABAP ProxyService to Multiple SAP NW PI Systems Using Process Integration 7.1.”

      (0) 
      1. Ravi Neelagiri

        Hi Sandro,


        Nice Blog, We had the same business case with having the same business system name of SAP Application System in the different Integration Servers, which is causing issue in one XI system.

        Any other alternate workaround for this issue, Please suggest.


        Regards,

        Ravi Neelagiri

        (0) 

Leave a Reply