Asynchronous Communication - R/3 - XI

I'd like to get your opinion on the best method of Asynchronous communication between R/3 and XI given the following assumptions:
•     ABAP Proxies are not an option. SAP R/3 is version 4.6C with Basis 4.6D
•     Standard IDocs are only available for a few of the interfaces (10%)
Options:
1.     Standard IDocs when available and custom IDocs for other interfaces.
Pros
•     Guaranteed one-time delivery
•     Record of data sent from R/3
•     Performance is manageable at multiple stages
•     Excellent monitoring, and retry ability
Cons
•     Requires creating custom IDocs
2.     Transactional RFCs
Pros
•     Guaranteed one-time delivery (with tRFC)
•     Faster to implement than custom IDocs
Cons
•     No record of data sent from R/3
•     Performance isn’t as manageable as with IDocs
•     Limited ability to monitor and retry
Points will be rewarded...
Thanks,
Jesse

Jesse,
I think the best option is to use RFC adapter for your requirements where the standard IDoc is not available.
The reason for this is, someone needs to develop ABAP function modules for RFC as well as IDocs. If it is a custom IDoc, then you have to create custom IDocs and all of its components (segments, IDoc types, Message types, partners, process codes etc.) to execute a function module which is a custom code. Instead of going through all this hassle, better use RFCs.
In some cases you need to use IDoc where you want to reprocess the data instead of getting it from the source again.
If you need more information let me know.
regards
Shravan

Similar Messages

  • Is in PI7.1 possible asynchronous communication between SOAP and ABAPProxy?

    Hi,
    when method execute_asynchronous has disapeared since XI/PI 7.1, is
    there still way how to use ABAP proxy in asynchronous way?
    We need to build asynchronous connection SOAP->PI->ABAP_Proxy.
    In PI, both interfaces are defined as asynchronous (outbound for SOAP and
    inbound for ABAP Proxy).
    Despite of this fact, when message is sent, it is processed
    synchronous way.
    I have set breakpoint in my implementation of method for ABAP Proxy
    message processing. When message is sent and breakpoint is reached,
    whole connection stays open (between SOAP and PI and between PI and
    ABAP Proxy) and waits for processing method (the breakpointed one) to
    return. Only when processing method returns, is connection finelly
    closed.
    If i understand it correctly, this is synchronous behavior. In
    asynchronous behavior, as i understand it, should be connection
    between PI and ABAP Proxy of application server closed immediately
    after message has been delivered. This mean before my processing
    method is even called.
    The same could be said about SOAP and PI communication. Connection
    should be closed immediately after PI has received message. From
    definition of asynchronous communication of PI is obvious, that PI
    should receive message correctly and close connection to sender system
    even when receiver is unreachable. It should deliver message later
    when, receiver system is back on line. So why it keeps connection to
    sender system open while it waits for receiver?
    Why is this happening, when both interfaces are defined as
    asynchronous? Could be the reason for this, if APPLICATION
    ACKNOWLEDGEMENT is set on by default? If so, how can i change it
    to SYSTEM ACKNOWLEDGEMENT, or disable it at all?
    Or is this kind of asynchronous communication even possible since
    XI/PI 7.1 ?
    Processing of message we are sending can take some time, so we dont
    want connection pending open while waiting for finish of
    processing. Thats the reason why we have chose asynchronous model to
    use.

    Quote from How to Use the J2EE SOAP Adapter:
    "If you select Best Effort, the Web service client will receive a response
    message in the SOAP body. Otherwise, the Web service client will not receive a
    response message if no error occurs."
    "if no error occurs" - that is the problem. In either case he still
    waits if some error occure or not. I dont want it. Once PI has
    received message, I want the connection with sender to be closed. If
    there will be error in communication between PI and reciever, I want
    to see it only in PI log. That mean no notification to sender to be
    send about that error.
    Is that possible?

  • Synchronous and asynchronous communication tcp/ip

    Hello all:
    it is common to make synchronous communication between client and server by socket tcp/ip. But I'm needing now to establish an asynchronous communication. I mean:
    0.- The server is a multithread process that has the property to establish one connection for each client that wants to send him messages.
    1.-The client process sends message permanently to server.
    2.- The server processes the request, but don't have to respond to the client.
    3.-Only when the user want it, he sends messages to client by web application reusing the same communications that are opened between client and server process.
    I hope to explain my problem.
    Regards.

    Hello all:
    it is common to make synchronous communication
    between client and server by socket tcp/ip.A socket tcp/ip can be synchronous or asynchronous or both.
    But I'm needing now to establish an asynchronous
    communication. I mean:Is this purely asynchronous or can it be either.
    0.- The server is a multithread process that has the
    property to establish one connection for each client
    that wants to send him messages. Fine, any mode would be okay.
    1.-The client process sends message permanently to server. By permanently do you mean;
    - it is deleted from the client,
    - it is store on the server is a write once read many media. i.e. it is permenetly on the server and cannot be deleted/altered.
    2.- The server processes the request, but don't have to respond to the client.The server should never have to respond to the client. e.g. the server can go down so the client nees to live with the possibility it won't get a reply.
    Synchronous or Asychronous describes how the reply is send. No reply means it is neither.
    3.-Only when the user want it, he sends messages to client by web application reusing the same communications that are opened between client and server process.Are you using socket or a web application server ie. HTTP.
    You wan to be able to reuse the connection. You can do this in any of the case mentioned so far.
    >
    I hope to explain my problem.I hope you will explain your problem too.

  • RFC Sender to SOAP receiver through asynchronous communication

    Hi all,
      I have a requirement where I need send data from SAP HR system(through RFC) to webservice asynchronously.  For this I preferred RFC as a sender and SOAP as a receiver. Can anybody tell me whether it could be possible because I have gone throught the blog
    /people/michal.krawczyk2/blog/2005/03/29/configuring-the-sender-rfc-adapter--step-by-step
    accordingly I did the configuration and then i gone through the blog
    /people/shabarish.vijayakumar/blog/2006/03/23/rfc--xi--webservice--a-complete-walkthrough-part-1
    and
    /people/shabarish.vijayakumar/blog/2006/03/28/rfc--xi--webservice--a-complete-walkthrough-part-2
    in which they are communication synchronously.
    But in my case i need to communciation asynchronously.  so when i am creating Interface mapping system is not able to pickup my mapping program.  I mapped source message as RFC request with Target structure.
    Please let me know if asynchronous communication is possible how i have to may between RFC and SOAP. 
    Regards,
    Dhill

    Hi Satish,
    Thank you very much it is working fine now.  But I need some more clarification that for this scenario to execture we need a report from SAP side.  Instead is there any other method for XI to receive data.  I think it could be possible through proxies if yes can you send some link which would be very useful for me.
    Otherwise is there any other way to do it by avoiding to write the code in abap but to call the RFC.
    Regards,
    Dhil.

  • Question on Asynchronous Communication

    Hi all,
    Tell me which of this is true
       In SAP XI in async communication
    1. We don't have a response message
    2. We have a response message but we don't get it immediately(in that case how to check for this message)
    I am asking this question because in normal programming(C#, Delphi etc) usually async communication means that the server will respond after it is done with processing  and then throw a event which the client catches it and provides a handler for that event.

    Hey Sonia,
    your comment totally makes sense, because literally asynchronous means "not at the same time". So, an asynchronous communication should mean a message which is sent but whose response is not sent right away.
    Also, strictly speaking, in any EAI-like program, to develop an asynchronous communication means to develop two 1-way communication. Of course, for a server system to send back information to a client system, there must be, in some point of time, an event generated by client system requesting that information (apart for some exceptions, such as the scheduled automatic scenarios, for example).
    Hence, in EAI typical vocabulary, the action of developing an asynchronous communication means developing 1-way integrations (1 or more).
    Regards,
    Henrique.

  • RFC Asynchronous communication

    Hi Experts,
    I am doing a scenario in which data is passed using RFC via Proxy to PI and from PI to JMS queue(Target system).
    My problem here is i am new to SAP PI 7.1  and i have never worked on RFC before.
    Can anyone suggest some blogs so that i can refer and understand the RFC Asynchronous communication process.
    Thanks in Advance

    Hi,
    we cannot suggest blogs as you need to try the search functionality first
    but once you get a more detailed question which cannot be answered by using search
    come back to us and we will gladly help you ok ?
    thank you,
    Regards,
    Michal Krawczyk

  • J2EE asynchronous communication protocol

    Hi
    In my project, im supposed to program software agents and they are suppose to communicate to each other asyncrhonously. I need some directions to it as im quite new to J2EE stuffs and many of the java components.
    eg like RMI, JMS, ...
    Thanks

    JMS (Java Message Service) is a standard for asynchronous communication via a message queue.
    See http://java.sun.com/products/jms/index.html
    Jesper

  • Synchronous and asynchronous communication

    Hi all
    i am very new to jms and java. I have the task of developing an application for communication for a global company. The application must support most if not all of the following features:
    -synchronous messages
    -Asynchronous ('offline') messages
    -Authentication/identification
    -Saving a log of all conversations
    -Conference rooms
    -Secure (encrypted) communication
    -User information database (e.g. postal addresses, email addresses, -pictures, etc)
    -Sophisticated GUI
    -Resilience to network breakdown
    -Multimedia messages (styled text, pictures, file attachments)
    -Shared document editing
    -Shared whiteboard facility
    what can I use to develop this application...will JMS be able to do this??
    thank you

    This appears to be more like a user coomunication application. I would look for the architecture of commonly available instant messaging applications, such as MSN, Yahoo, Jabber.
    I would think of JMS to be used for transmitting business messages, like stock quotes, etc. Creating a PTP connection or a Topic in a pub-susb message would be an over-kill for such a usage scenario.

  • Asynchronous Communication fails

    Hi,
    I am using Visual Basic.NET 2003 and measurement studio together with National Instruments NI-VISA(TM) Software for Windows. Version 3.0.
    Synchronous communication with GBIP instrument (ESG E4438C from Agilent) works fine but I have a problem with asynchronous I/O.
    I always get an error like "Unable to queue the asynchronous operation (usually due to the I/O completion event not being enabled or insufficient space in the session's queue)."
    What went wrong?
    Here is my code:
    Private Sub btGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btGo.Click
    AxCWVisa.RsrcName = "visa://149.204.55.39:3537/GPIB0::19::INSTR"
    AxCWVisa.Open()
    AxCWVisa.WriteAsync("*idn?")
    End Sub
    Private Sub AxCWVisa_IOC
    ompletion(ByVal sender As Object, ByVal e As AxCWVisaLib._DCWVisaEvents_IOCompletionEvent) Handles AxCWVisa.IOCompletion
    MsgBox("IO completed")
    End Sub
    I have tried to Enable Events
    AxCWVisa.EnableEvent(CWVisaEventTypes.cwvisaEventIOCompletion)
    but all without success.
    Thank you for your help,
    Markus

    Hi Dan!
    Thank you for your answer.
    I have tried again the EnableEvent method but this fails. Here is my code:
    AxCWVisa.RsrcName = "visa://149.204.55.39:3537/GPIB0::19::INSTR"
    AxCWVisa.Open()
    AxCWVisa.EnableEvent(CWVisaEventTypes.cwvisaEventIOCompletion)
    After calling the EnableEvent method I get an exception with the following message:
    "Additional Information: Configuring Device
    The specified mechanism is not supported for the given event type."
    Since this is visaconnection across a network I have tried the asynchronous access at the local maschine - but with the same error message. So the network access should not be the problem.
    Using NISpy I get the following Info:
    1. viOpenDefaultRM (0x001AEC58)
    Process ID: 0x00000A40 Thread ID: 0x000009D8
    Start Time: 09:54:12.838 Call Duration: 00:00:00.421
    Status: 0 (VI_SUCCESS)
    2. viParseRsrc (0x001AEC58,"visa://149.204.55.39:3537/G...",1 (0x1),0 (0x0))
    Process ID: 0x00000A40 Thread ID: 0x000009D8
    Start Time: 09:54:13.259 Call Duration: 00:00:00.110
    Status: 0 (VI_SUCCESS)
    3. viClose (0x001AEC58)
    Process ID: 0x00000A40 Thread ID: 0x000009D8
    Start Time: 09:54:13.369 Call Duration: 00:00:00.000
    Status: 0 (VI_SUCCESS)
    4. viOpenDefaultRM (0x001AEC58)
    Process ID: 0x00000A40 Thread ID: 0x000009D8
    Start Time: 09:54:13.369 Call Duration: 00:00:00.000
    Status: 0 (VI_SUCCESS)
    5. viOpen (0x001AEC58,"visa://149.204.55.39:3537/G...",0 (0x0),0 (0x0),0x001DD1E0)
    Process ID: 0x00000A40 Thread ID: 0x000009D8
    Start Time: 09:54:13.369 Call Duration: 00:00:00.219
    Status: 0 (VI_SUCCESS)
    6. viSetAttribute (0x001DD1E0,0x3FFF001A,2000 (0x7D0))
    Process ID: 0x00000A40 Thread ID: 0x000009D8
    Start Time: 09:54:13.588 Call Duration: 00:00:00.000
    Status: 0 (VI_SUCCESS)
    7. viSetAttribute (0x001DD1E0,0x3FFF0005,5000 (0x1388))
    Process ID: 0x00000A40 Thread ID: 0x000009D8
    Start Time: 09:54:13.588 Call Duration: 00:00:00.000
    Status: 0 (VI_SUCCESS)
    8. viSetAttribute (0x001DD1E0,0x3FFF0007,0 (0x0))
    Process ID: 0x00000A40 Thread ID: 0x000009D8
    Start Time: 09:54:13.588 Call Duration: 00:00:00.000
    Status: 0 (VI_SUCCESS)
    9. viSetAttribute (0x001DD1E0,0x3FFF0177,-1 (0xFFFF))
    Process ID: 0x00000A40 Thread ID: 0x000009D8
    Start Time: 09:54:13.588 Call Duration: 00:00:00.000
    Status: 0 (VI_SUCCESS)
    > 10. viSetAttribute (0x001DD1E0,0x3FFF0021,9600 (0x2580))
    > Process ID: 0x00000A40 Thread ID: 0x000009D8
    > Start Time: 09:54:13.588 Call Duration: 00:00:00.000
    > Status: 0xBFFF001D (VI_ERROR_NSUP_ATTR)
    > 11. viSetAttribute (0x001DD1E0,0x3FFF00B3,2 (0x2))
    > Process ID: 0x00000A40 Thread ID: 0x000009D8
    > Start Time: 09:54:13.588 Call Duration: 00:00:00.015
    > Status: 0xBFFF001D (VI_ERROR_NSUP_ATTR)
    Any idea what went wrong?
    Thank you for your help!
    Markus

  • Asynchronous communication using HSDIO

    All-
    I am trying to create an application for asynchronous serial communication using a PXI-6541 HSDIO card.  I have one RX and one TX line to/from the device I'm trying to communicate with. The device uses 25-bit words with the first 3 bits representing "labels" or commands.  There are only 7 labels that can be transmitted to the device and 2 that the it uses in response.  I currently have a sniffer set up so I can monitor the 2-way communication.  I am oversampling the data in WDT for viewing purposes but I am having a hard time extracting the data into something useable.  Has anyone used HSDIO for asynchronous communicaton and if so, can you send me some examples on how you triggered the data?  
    The serial bus is similar to Arinc429 http://en.wikipedia.org/wiki/ARINC_429 if that helps.  Any suggestions are appreciated.  
    Thank you!
    -Jason

    I was wondering, have you taken a look at the built-in examples under LabVIEW»Help»Find Examples»Browse»Hardware Input and Output»Modular Instruments»NI-HSDIO (High-Speed Digital I/O)? Under the Demo folder, there's one example called Dynamic Acquisition Hardware Start Trigger.vi. It has a pattern match start trigger option. 
    Just a thought...
    Nathan S.
    Applications Engineer
    National Instruments

  • Outbound Asynchronous communication Using Proxy

    Hello,
    I am trying to send an outbound communication from an R/3 system using a abap proxy. The method execute_asynchronous completes without any bad return code (sy-subrc is 0).
    But the message does not go to the Integration server. Is there something I need to do to push the message ?
    I debugged the code and
    Thanks for help,
    Durga

    Hi,
    I remember reading somewhere that asynchronous messages will be send only after you do a commit work after you call the execute_asynchronous method.
    Can you try this.
    Warm regards,
    Venki.
    Message was edited by: Venkitesh S

  • URGENT :Synchronous & Asynchronous communication

    Hi,
         can anyone tell me what is the exact meaning of asynchronous & synchronous communication in sap SRM. SEND me answers with examples to my mail id.
    with kind regards,
    srinivas.g

    Hi,
    Everything is explained here :
    /thread/127699 [original link is broken]
    Kind regards,
    Yann

  • SAP XI Acknowledgements in asynchronous communication without using BPM.

    Hello experts,
    My scenario is File (Legacy system) -> XI->IDOC & I need to send the acknowledgement back to legacy system. How SAP XI acknowledgements work in asynchronous scenarios without a BPM process. I know it has to do something with ALEAUDIT. It would be great if someone describes how exactly it works?
    Regards,
    Nidhi

    Hi Nidhi,
    execute report IDX_ALEREQUEST on your PI system.
    - put for sender port the IDX1 port to your SAP system,
    - put the client of the SAP system
    - put the value of the SAP field "receiver partner number" (look at WE02)
    - put the value of the SAP field "receiver partner type"
    - put optional partner role
    The ALEAUD what the SAP ERP sends back (to be scheduled) will be handled at PI as seperate message. So you can do what ever you want with it, for example route it to an FTP server and map the values as you wish to have them.
    Regards,
    Udo

  • Design Pattern for Asynchronized Communication

    I've got to implement a special protocol for network communication:
    1. You'll have one connection, in this case, a TCP or UDP socket, all messages are exchanged via it.
    2. You have multiple threads sending requests and receiving response concurrently using the same socket:
    a. Each thread use a logic channel, which, from the thread's perspective, is an independant channel, the thread won't receive messages for other channels.
    b. Each request/response is a packet that can be treated as atomic - you either send/receive it in one go or not at all. Each packet has the channel id, so you know which channel it belongs to.
    c. For each thread, it sends request then waits for response, and then sends the next request and so on.
    Hope the senario is clear.
    So, some kind of notification pattern should be used here, I guess?
    OK, check my pattern books, all of them are talking about callback stuff like listener, observer etc, however, they don't fit in this scenario, as each thread use their channel like a socket without knowing any details of underlying connections, their codes would be like:
       sendRequest(req);
       Response res = receiveResponse();The receiveResponse() needs to be a block call, so the only solution here is a wait()/notify() pair (this all I can come up with, you are welcome to suggest other pattern). So, a lot of synchronization would be going on, e.g., if the receiving thread (a dedicated thread that reads all messages from the underlying socket) notify the thread before it enter wait() status in receiveResponse() would result in serious bug.
    I just wonder if there is a good pattern for this scenario? (I didn't read lots of design book, so may not be aware of such pattern). Any input are welcome.

    Sounds like you've laid out your problem quite well.
    You could use a fifo queue (producer-consumer queue) per thread - basically receiveResponse would check to see if there is anything in its (response) queue - if so, it is removed, if not, it waits. The socket thread receives a packet, finds the appropriate queue and pushes in the response - which wakes the receiver. This is thread safe, if done correctly - it is easy to do correctly.
    Now that I think about it more, your queue can only store one element, given the request/response nature of the communication, so you don't even need to use a collection.
    As for patterns, I think that Pattern Oriented Software Architecture Volume 2 (http://www.cs.wustl.edu/~schmidt/POSA/) may be of interest. And if threading and concurrency are of interest, checkout Concurrent Programming in Java, Doug Lea (http://www.amazon.com/exec/obidos/ASIN/0201310090/)

  • Asynchronous applet-servlet communication

    Hi all,
    I am trying to implement asynchronous applet-servlet communication and need your help. Anything would help(I tried with synchronous applet-servlet communication but doesn't solve my problem).
    Thanks,

    http://java.sun.com/docs/books/tutorial/networking/index.html
    You can open a socket connection. Bother the client and the server
    can have separate threads for reading and writing and that you gives you
    asynchronous communication. Later, if you think the server is generating
    too many threads and not scaling, you can use features of .java.nio to
    make it more scalable:
    java.nio.channels

Maybe you are looking for