Skip to Content

1. Business Requirement

We had a business requirement where the nature of the interface is Request Response kind. However, there would be large volume of data that will be processed in this. So keeping the performance in mind we needed to split the scenario with two Asynchronous message flows instead of a single Synchronous integration. However the challenge is we need to keep track from ECC on which outbound message is for which inbound.

2. Issue in getting message Id inoutbound proxy call

Our issue was to put an Xref entry in Z table in ECC side which keeps track on which outbound message is for which inbound. To do this we need the outbound message Id while calling the proxy itself. However, the message ID is not readily available in ECC.

3. Concept: Using inheritance

Basically we used the concept of inheritance to trap the message ID while calling the proxy.

In our case the original proxy outbound class is ZZZCO_IDD0533_CONFIRM_TRANSFER.

msg1 

We created a child class (ZCL_COM_CALL_PROXY_IDD0533) of this proxy class where our application code will be written.

msg2 

Note:Proxy class ZZZCO_IDD0533_CONFIRM_TRANSFER is maintained as Super-class.

4. Code Snippet

We have a Z program that calls the outbound proxy. Instead of instantiating the proxy class directly, we instantiate the child class.

Here is the code snippet: 

Now let’s have a look at the code inside the method call_proxy of class ZCL_COM_CALL_PROXY_IDD0533.

msg3 

Code snippet:

To report this post you need to login first.

1 Comment

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

  1. Volker Kolberg
    Hi!
    Why did you not use cl_proxy_class e.g. in this way:
      DATA: lv_msgid        TYPE sxmsmguid.
      DATA: lv_msgid_string TYPE string.
      TRY.
          CALL METHOD cl_proxy_access=>get_inbound_message_key( IMPORTING message_id = lv_msgid ).
          lv_msgid_string = lv_msgid.
        CATCH cx_ai_system_fault.
      ENDTRY.

    Regards,
    Volker

    (0) 

Leave a Reply