File based Sync-Async Bridge

Hi All,
I have a scenario where a file is available in a shared folder.
This file needs to be picked by a RFC Function module called in a Synchronous mode and the contents of the file needs to be displayed as the output of this RFC.
Is this achievable using Sync-Async Bridge.If so can someone explain me the steps to achieve the same?

If i were to open a Sync-Async bridge, I need to do the following
Step 1: Receive step to open the sync/async bridge
Step 2:Asynchronous send step
Step 3:Receive step
Step 4: Send step to close the sync/async bridge
In my scenario.
Step 1: Receive the RFC's request message
Step 2: ????
Step 3: Get the message from the file
Step 4: Transform the file's message to RFC's response message
Step 5: Send the RFC's response message  
Moreover file adapter works in a polling mechanism..

Similar Messages

  • Payload based sync/async bridge

    This is my scenario: ABAP -> XI -> MQ -> XI -> ABAP
    I want to use the message content to be the correlation key, it means ABAP sends a message with order no.="ORDER1" to MQ and MQ will reply a message contains order no.="ORDER1". Then XI will use this message from MQ to reply to the sync ABAP program. Is it possible ?
    I read this document "How-to Correlate JMS 1.20" to build a sync/async bridge (XI is 3.0 SP17)
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/5059f110-0d01-0010-7c8b-fdc983be70c0
    First, I followed 3.1 to build a "header based" sync/async bridge. It's ok, I can see a message id in the field "JMSCorrelationID" in MQ tool. (I didn't test reply). And then I checked 3.4 in the document and want to build a "payload based".
    There are only 2 steps in this document
    1. I modified the correlation to the order no. field of request message in the send step.
    2. I modified the correlation to the order no. field of reply message in the correlation editor.
    Is it ok ? Because when I ran the ABAP program again, I still see the same JMSCorrelationID in MQ?

    Thanks, so, the correlation id is encoded. I think I can see "ORDER1" originally. I changed it to "ORDER2" and see another correlation id and I changed it back to "ORDER1" and I see the original correlation id. I think the configuration of ABAP -> XI -> MQ should be correct now.
    Now my problem is MQ -> XI -> ABAP. I manually put a message with order no.="ORDER1" in the reply queue. XI got it, but show the error message in workbench. 
    "XI inbound processing failed for message at 2007-03-28|18:15:22.464+0800. JMS and XI identifiers for message are ID:414d51204d495453303153305420202045a35b480003f722 and 3cf8ed80-dd15-11db-a560-0017a47618a6 respectively. JMS adapter will rollback database and JMS session transactions"
    Both of the messages are not the encoded "ORDER1" and when I press refresh in workbench, the 2nd id in the error message is always changed. Is there any suggestion for it ? thanks.

  • Is it possible to create soap to file sync/async bridge

    Hi All,
    I am balakrishna, I have one requirement, at sender side we have ep system and at receiver side having http system. from ep side we are using soap req/res as sync communication. At reciver side we have to use the reciver file adapter as a dummy because receiver file adapter doesn't pick the file from the http links. so, again we have to use the sender file adapter  to pick the files (text/excel) from the http links directly using wget os command. how can i implement this scenario using bpm.

    Hi,
         You will find a sample BPM for sync/async bridge under
    SAP BASIS --> http://sap.com/xi/XI/System/Patterns --> Integration Process --> BpmPatternSyncAsyncBridge.
    Your requirement would be similar to this.
    Regards

  • For File -- RFC-- File scenario want to remove sync/async bridge

    For File -- RFC-- File scenario want to remove sync/async bridge
    Can I work with File -- RFC-- File scenario without BPM
    Regards

    Hi-
    Check this threads
    RFC -> File without BPM
    File - RFC - File without a BPM - Possible from SP 19.
    File-To-RFC without using BPM

  • RFC -File Sync Async bridge RFC Adapter Exception

    Hi
    I am using sync async bridge to send a response back to rfc.
    Although there is no error in sxmb_moni as well as the auditlog shows that the response was sent successfully to rfc.. still the RFC adapter gives the following error with no response sent to RFC..
    Error in processing caused by: com.sap.aii.af.rfc.RfcAdapterException: failed to identify XML document:java.lang.Exception: javax.xml.parsers.FactoryConfigurationError: Provider com.sap.engine.lib.jaxp.SAXParserFactoryImpl not found
    please help

    Solved the problem..
    The problem could be due to the following..
    1. the response structure was just a single character..while i was sending a whole string..
    2. I restarted the server...probably the problem
    javax.xml.parsers.FactoryConfigurationError: Provider com.sap.engine.lib.jaxp.SAXParserFactoryImpl not found
    system property must have set mismatch for the SAXFactoryImpl.... by deploying modules before in which i was using SAX parser.. may be the i set the system property earlier to other provider dont remember...
    Hope this information will be useful to someone in future using Sync/Async bridge

  • Getting Time-Out Error in Sync-Async Bridge

    Hi All,
    My IP has a Sync-Async Bridge. I have a fork, two senders, two switchs and a transformation step inside the bridge.
    If XI takes much time to process the IP, the send step that closes sync-async bridge is not waiting for the message after a particular period and throws time out error to the sender.
    Is it possible to increase the waiting time for sync-async bridge?
    This IP works correctly 8 out of 10 times. Sometimes the message is sitting permenantly in the queue(smq2) and gives me system failure error.
    Can u tell me why this problem happening?
    Thanks & Regards,
    Senthil.

    Dear Michal/Senthil,
    Can you pl clear a confusion that i have had for ages...
    suppose there is a sync/async bridge ( i understand that it is used for sync business system too async BS communcation )
    where we have 4 steps
    sync receive - > async send -> async receive -> sync send..
    i do understand that async send and async receive are combined through correlation
    but i do not understand how do they work..
    i mean when async send say send a file to a target system...does async receive reads a file from the same folder based on the corelation or wat...
    basically can you pls explain me how do the steps 2 and 3 above work
    Edited by: Tarang Shah on Mar 3, 2009 12:51 PM

  • BPM Design using sync-async  bridge

    Hi Arpit,
    Below mentioned is an overview of the process flow which we are trying to implement.
    1. A synchronous interface takes in the request
    2. After the mapping, a file is created
    3. Another file adapter reads this file and sends a message back to the sync interface. This step is to make sure that the file is created
    I'm using a sync-async bridge for this process, since file creation and reading processes are asynchronous and the request/response is synchronous.
    Can somebody help me by telling how to design the BPM. How many send and receive steps are required etc?
    Thanks,
    Sandeep
        | Request  |    |    |       |    |     |    |       |
        |--------->|    |    |       |    |     |    |File   |
    HTTP|          |Sync|--->|Mapping|--->|Async|--->|Adapter|
        |<---------|I/f |<-  |       |    |I/f  |    |(write)|
        | Response |    | |  |       |    |     |    |_______|
                          |                              |
                          |                              |
                          |                          ____|___
                          ||      |   |        |    |        |
                          -|Async |<--|File Adp|<---|Folder  |
                           | I/f  |   |(read)  |    |________|

    Hi
    <i>>>I have to map the incoming xml from HTTP to another format before creating the file.</i>
    Ya then u can use the transform Step in between the
    sync Recv ---> Transform ---> Send to File System
    <i>>>Once a file is read, that interface has to send an acknowledgement message telling the status.</i>
    Wht type of acknowledgement msg telling the status.
    I think u can add another element in ur created file payload like <b>Status</b>: Created (ConstanT)
    Then u can map the payload of the readed file with tis payload having Ststus init.Fo this u need a <b>Transformation</b> Step.
    BTW i was searching some previous blogs and i got this and it is bit related to ur scenario.Go thru this
    /people/sriram.vasudevan3/blog/2005/01/11/demonstrating-use-of-synchronous-asynchronous-bridge-to-integrate-synchronous-and-asynchronous-systems-using-ccbpm-in-sap-xi
    Hope it helps.
    Regards
    Arpit Seth

  • RFC Sender to start Sync/Async Bridge

    Hi,
    I'm trying to start a Sync/Async Bridge calling RFC. When importing RFC into Integration Repository, by default it creates two Message Type for request and response (RFCNAME and RFCNAME.response).
    My scenario is configured as follows:
    <b><u>Integration Repository</u></b>
    The starting step in BPM is configured with an abstract synchronous interface (output message is RFCNAME and input message is RFCNAME.response).
    <b><u>Integration Directory</u></b>
    <u>Sender Agreement</u>: sender service is R3 business system (from SLD), interface is the RFC program name (not an interface).
    <u>Receiver determination</u>: sender service is the R3 business system, the interface is RFC program name, an as configured receiver the BPM.
    <u>Interface determination</u>: In the configured inbound interface for the receiver (BPM) I configure the abstract synchronous interface
    My problem is that when calling the RFC, the outbound message is received into XI but does not reach BPM: NO_RECEIVER_CASE_ASYNC. Can you help me please?
    Thank you,
    Gari.
    (Sorry for my english!!!)

    Of course it is possible. Some considerations, though:
    1. you said that receive/send steps of BPM are configured with RFC and RFC.Response messages. However, by default, the RFC interface cant be used as Abstract Async. You have to explicitely create those abstract async interfaces. Have you done that?
    2. What extra steps do you have in BPM? I mean, you dont need to create abstract interfaces based on message type of RFC. If you have the message type of your receiver, you can perform mapping outside of BPM, and all abstract async interfaces could be done refering to the receiver message types.
    Regards,
    Henrique.

  • Sync - Async Bridge: a Doubt

    HI ,
    Can you confirm if my understanding below is correct:
    Sync System calls Asynch : Sync-async bridge to be used I understand
    But for Async to sync , no Sync-async bridge is required and we can discard the response or do anything with it.
    Thanks,
    Himadri

    just adding up to the discussion
    <b>But for Async to sync , no Sync-async bridge is required and we can discard the response or do anything with it.</b>
    we build async-sync relationship for getting/tracking the response. Say ur sender JDBC does an action in R3 and the reponse from R3 need to be updated in a file or a table in a DB then u build this kind of relation ship.
    Ps: Award points to all helpfull replies.

  • Sync/Async Bridge without Asynchronous Send / Receive Steps

    Hello together,
    we have a synchronous HTTP <--> RFC Scenario using a sync/async Bridge in BPM with the following characteristics:
    1. HTTP Payload is received (opens Sync/Async bridge)
    2.  lookup is done in an LDAP System (we use an UDF here)
    3. Customzied JCo is called which takes the XML String as input parameter (done by Java Mapping)
    4. Return Value of JCo then is delivered back to HTTP Client (closes Sync/Async Bridge)
    --> No RFC Adapter is used here as the provided JCo does all the parsing
    When testing the sync/async bridge is started but we receive an timeout after 30 sec.
    Could it be that the sync/async required exactly a pair of async send and receive steps (which we do not have in our scenario and which we do not need)?
    This would be a problem, as we have to use BPM in this synchronous scenario. Do you have any idea?
    Thank you very much for your help.

    Thank you for your reply, but I think you misunderstood me. Please let me try to clarify once more:
    1. Synchronous HTTP Sender Interface (Request/Response) opens Sync/Async Bridge
    2. LDAP Lookup is done by UDF using the Request Message in Transformation Step
    3. Switch is done based on result of Lookup
    4. Branch 1 in switch calls customized JCo with Java Mapping in Transformation Step (Request Message as input, Response message as output)
    5. Response message (delivered from JCo Call) should close the Async/Sync Bridge and be send back to HTTP Sender
    --> We have no async send / receive steps in this scenario.
    The customized Jco has been provided by an external partner as there is lots of parsing logic implemented. So we want to connect to the backend SAP system using this JCo and not via a  send step.
    My key qestion is therefore: Is it absolutely necessary to use exactly a pair of async send / receive steps in a sync/async bridge?
    In this case we have to look for another design concept without BPM which would make the solution very difficult I think....

  • Sync-Async Bridge with Acknowledgment

    Hello Everybody
    I have a Sync-Async Bridge (RFC <-> BPM -> File). I have defined my Asynchronous Send Step in BPM to request acknowledgment from the Receiver File Adapter. The File Adapter returns that acknowledgment but, I would like to check acknowledgment status to define the next step of ccBPM. For example, for negative acknowlegment status I would like to stop/cancel BPM. Is that possible?
    Thanks
    Julio

    Hi Julio !
    SAP Note 837285:
    "Permanent negative acknowledgements: If the BPE receives a
    permanent negative system or application acknowledgment, the
    asynchronous send step waiting for it triggers a system error for
    which you can define an exception handling."
    Put your async send step inside a block and create an exception branch..I think that for the file adapter ack you will need a deadline branch also because if the ack is not received, the BPM will keep waiting for it endlessly.
    Regards,
    Matias.
    Message was edited by:
            Matias Denker

  • Async-Sync-Async Bridge Without BPM

    HI Folks,
    I have a requirement as
    u201CAn Asynchronous SOAP request is triggered to PI and then should get records from a (JDBC)database and write the result to a fileu201D
    It is of Aync-Sync-Async Bridge and i have to do without BPM
    I know by using some module parameters at sender communication channel we can do this.
    But my query
    1)Is that for SOAP sender communication channel can we provide the same module parameters
    Number - ModuleName - Type - ModuleKey
    1- AF_Modules/RequestResponseBean - Local Enterprise Bean - 1
    2- CallSapAdapter-Local Enterprise Bean - 2
    3-AF_Modules/ResponseOnewayBean-3
    Parameters
    ModuleKey - ParameterName - ParameterValue
    1 - passThrough - true
    3-receiverChannel - Receiver File Adapter Name
    3-receiverService - Receiver Business Service/ System
    2) Does the SOAP support the without BPM scenarios
    3)Scenario is like Soap --> JDBC -->File (Async - Sync - Async) and how abt for Soap --> RFC -->File (Async - Sync - Async)
    Thanks in Advance
    Lemon

    For your requirement , you can handle this scenario without BPM in two ways.
    1) Async sync bridge without BPM.   You are going to use request response bean and one way response bean module to achieve this. very simple. See this [link|http://wiki.sdn.sap.com/wiki/display/XI/File-RFC-File(Without%20BPM)]
    In the sender SOAP channel you have to configure first request response bean, second callsapadapter and third onewayresponse bean. Refer this link. Simply follow file sender configuration for your soap sender or RFC sender.
    Note: one receiver agreement , one receiver determination, one interface determination. only two receiver channels one jdbc and one file.
    2) You can create SOAP  to File asynchronous.  Using quality of service  EO and creating service interface asynchronous mode.   In the mapping area do JDBC lookup.  If your version is 7.1 then this lookup is available. This is pretty simple no need to do async to sync pattern.
    Hope that helps.

  • Dynamic configuration in Sync/Async bridge in JMS

    Hi
    Scenario:
    Portal sending request to JMS MQ and getting Response using sync/Async Bridge.
    I have to written a UDF which will capture the value for cust_uid from request mapping and store it in dynamic configuration
    And when the response comes from JMS MQu2026.this value gets populated in response mapping.
    I have tested the UDF in a dummy Soap2rfc scenario and its working fine.
    But when used in Sync/Async Bridge, the dynamic configuration  fails.
    For Sync/Async Bridge, there are 2 channels 1) Sender JMS 2) receiver JMS.
    The synchronous request is converted to an asynchronous request in the module processor and sent.
    The asynchronous system sends a response to a sender adapter. In the module processor of the sender adapter, this response is forwarded to the module processor of the original receiver adapter, where it is sent as a synchronous response of the waiting synchronous request.
    Please  suggest
    Regards
    Abhijit

    Hi Abhijit,
    Okay, so your data extraction/insertion is working fine for a simple synchronous request responser call.
    I suppose this is working fine because your receiver adapter copies some part of the request message (at least the dc header) to the response message. (But I don't think this always works for all the adapter types). It is not working for the sync-async bridge because there are two unrelated messages in this case.
    In order to copy the dc header from the first message to the second message, I think you can use the DynamicConfiguraitionBean module to store the dc header value in the module data and use this module again to recover it and set it to the second message. The whole process is somewhat complicated, but I will sketch the approach below.
    First, let's call the first use of DCB the store step and the second the recover step. These store and recover steps must take place in the same module sequence so that they can use the module data to pass data from the first message to the second message. Furthermore, the store step must occur after the cust_id value is extracted into the dc header. So, your configuration must be placed in the receiver adapter side. Assuming the request message with the filled dc header coming into the module sequence, the first DCB module can be placed before the ROB module to store the dc header value in the module data. And the second DCB module can be placed after the WRB module to recover the dc header value from the module data and set it the dc header of the response message.
    I hope this will work.
    Regards, Yza

  • Using WAIT step in Sync/Async Bridge

    I am using a sync/async bridge and placed a 1 minute wait step in between my async send and async reply.  When I test my process, the async reply comes in but then my 1 minute wait eventually times out and gives me an error.  Can someone guide me in fixing this BPM design (which steps to add and how)?
    http://webpages.charter.net/kpwendel/bpm_with_wait.jpg
    I would like it to stop waiting once the async reply comes in and not timeout.  If the 1 minute mark comes and a reply never came in, it would also be nice to send back an error message.
    Thanks!

    I pulled my WAIT task and had this scenario working a week ago.  I have not made any changes, but now my inbound replies to close the BPM and link up to the request are not "linking".  The request is eventually timing out even though the reply with a good correlation id comes in successfully.  Any suggestions?
    UPDATE:  I went through my objects in the IB:Config and resaved/activated them and now it is working.  Don't know what messed them up in the first place.
    Message was edited by: Keith Wendel

  • Sync/Async bridge via JMS with FAULT messages

    Hello all,<br><br>
    I set up a sync/async bridge scenario with using of JMS communication channel (SAP - JMSReceiverCC - JMSServer and application - JMSSenderCC - SAP). The normal communication works fine.<br>
    But what we can not solve is the Fault Message handling. If there is a application error behind the JMS, a fault message is generated instead of proper application response and sent back to XI. Without any additional setup of JMS Sender CC the processing of the message ends with "MAPPING - EXCEPTION_DURING_EXECUTE", because normal "response mapping" is executed instead of "fault message mapping". This is correct behavior without any discussion.<br><br>
    [SAPhelp|http://help.sap.com/saphelp_nw70/helpdata/en/45/202845de34072ce10000000a155369/frameset.htm] says that there are 2 module parameters to be set : fault, faultNamespace. The description is rather vague, so let's see, what the "NotifyResponseBean" does, when parameters fault/faultNamespace are filled:<br><br>
    <pre>if(fault != null && faultNamespace != null)
      if(faultNamespace.equals("http://sap.com/xi/XI/System"))
        ((XIMessage)message1).setMessageClass(MessageClass.SYSTEM_ERROR);
        ((XIMessage)message1).setError(fault, "no additional information");
      } else
        ((XIMessage)message1).setMessageClass(MessageClass.APPLICATION_ERROR);
        ErrorInfo errorinfo = message1.createErrorInfo();
        errorinfo.setAttribute("ApplicationFaultInterface", fault);
        errorinfo.setAttribute("ApplicationFaultInterfaceNamespace", faultNamespace);
        errorinfo.setAttribute("ErrorCode", fault);
        errorinfo.setAttribute("AdditionalErrorText", "no additional information");
        message1.setErrorInfo(errorinfo);
    } else
      ((XIMessage)message1).setMessageClass(MessageClass.APPLICATION_RESPONSE);
    }</pre><br>
    The code is pretty straight forward so one could assume, that it's the name and namespace of inbound synchronnous message interface what is supposed to be filled in the values of each parameter. And from that kind of information SAP XI can evolve how to handle the response, actually the fault.<br>
    Unfortunatelly the real situation is different - every time the fault message is generated and sent back to XI, the response is correctly corelated with the request message, "WaitResponseBean" and "NotifyResponseBean" are finished correctly and the processing crashes in messaging class on following exception:<br><br>
    java.lang.NullPointerException at java.util.Hashtable.put(Hashtable.java:592) at
    com.sap.aii.messaging.mo.MessageContext.setAttribute(MessageContext.java:140) at
    com.sap.aii.adapter.xi.ms.XIMessage.updateHeaders(XIMessage.java:4244) at
    com.sap.aii.adapter.xi.ms.XIMessage.getTransportHeaders(XIMessage.java:570) at
    com.sap.aii.af.ra.ms.impl.ServerConnectionImpl.request(ServerConnectionImpl.java:212) at
    com.sap.aii.af.ra.ms.impl.core.transport.http.MessagingServlet.doPost(MessagingServlet.java:337) at ...
    <br><br>
    Is there anyone, who can put more light on JMS sync/async bridge fault handling ???
    <br><br>
    Thank you ...<br>
    Regards
    Tomas

    Hello again,
    I proceed in investigation little more, but the main problem has not been solved. I found that the problem is not even in WaitResponseBean (placed in JMCReceiverCC). This bean is woken up properly on base of proper CorrelationID. See the log:
    2009-10-15 11:00:33 Success WRB: entering WaitResponseBean
    2009-10-15 11:00:33 Success WRB: retrieving the message for f1ea1fc0-b96d-11de-9b68-00144f4acd86 ...
    2009-10-15 11:00:46 Success WRB: retrieved the message: ApplicationError
    2009-10-15 11:00:46 Success WRB: leaving WaitResponseBean
    I think, that the problem is somewhere within main messaging functionality. I suppose that on base of exception message:
    com.sap.aii.messaging.mo.MessageContext.setAttribute(MessageContext.java:140) at
    which is generated.
    Any ideas or comments ?
    Thank you in advance.
    Regards
    Tomas

Maybe you are looking for