Outbound processing for the BAPI interface

In BAPI outbound processing, a message flow sends a request to the SAP server. For BAPI units of work and BAPI result sets, processing is handled synchronously (the message flow waits for a response from the SAP server). For simple BAPIs, you can request that processing be handled synchronously or asynchronously (the message flow does not wait for a response from the SAP server).

For BAPI units of work and BAPI result sets, the processing is handled as described in Synchronous RFC. For simple BAPIs, you make a selection, during configuration, about the type of remote RFC call you want to make.

Synchronous RFC

If you select Synchronous RFC (the default) during configuration for a simple BAPI, or if you are using BAPI units of work or BAPI result sets, the following processing steps occur:
  1. The adapter receives a request from a message flow in the form of a BAPI business object.
  2. The adapter converts the BAPI business object to an SAP JCo function call.
  3. The adapter uses the Remote Function Call (RFC) interface to process the BAPI or RFC function call in the SAP application.
  4. After passing the data to the SAP server, the adapter handles the response from SAP and converts it back into the business object format required by the message flow.
  5. The adapter then sends the response back to the message flow.

Asynchronous transactional RFC

If you select Asynchronous transactional RFC during configuration, the following processing steps occur:
  1. The adapter receives a request from a message flow in the form of a BAPI business object.
  2. The adapter checks the business object to see whether the SAP transaction ID attribute has a value assigned. (The SAP transaction ID (TID) is a field in your message.)
    • If the SAP transaction ID attribute has a value, the adapter uses that value during processing.
    • If the attribute does not have a value, the adapter makes a call to the SAP server and gets a transaction ID from the SAP server.
  3. The adapter converts the BAPI business object to an SAP JCo function call.
  4. The adapter uses the transactional Remote Function Call (tRFC) protocol to make the call to the SAP server.

    The adapter does not wait for a response from the SAP server.

  5. After the function data is passed to the SAP application, control returns to the adapter.
    • If the call to the SAP server fails, the SAP server throws an ABAPException.
    • If the call to the SAP server succeeds but contains invalid data, no exception is returned to the adapter. For example, if the adapter sends a request that contains an invalid customer number, the adapter does not respond with an exception indicating that no such customer exists.
  6. The request node builds a message tree that contains the transaction ID as one of the fields.

Asynchronous queued RFC

If you select Asynchronous queued RFC during configuration, the following processing steps occur:
  1. The adapter receives a request from a message flow in the form of a BAPI business object.
  2. The adapter checks the business object to see whether the SAP transaction ID attribute has a value assigned. (The SAP transaction ID (TID) is a field in your message.)
    • If the SAP transaction ID attribute has a value, the adapter uses that value during processing.
    • If the attribute does not have a value, the adapter makes a call to the SAP server and gets a transaction ID from the SAP server.
  3. The adapter converts the BAPI business object to an SAP JCo function call.
  4. The adapter uses the tRFC protocol to make the call to the specified queue on the SAP server.

    The adapter does not wait for a response from the SAP server.

  5. After the function data is passed to the SAP application, control returns to the adapter.
    • If the call to the SAP server fails, the SAP server throws an ABAPException.
    • If the call to the SAP server succeeds but contains invalid data, no exception is returned to the adapter. For example, if the adapter sends a request that contains an invalid customer number, the adapter does not respond with an exception indicating that no such customer exists.
  6. The request node builds a message tree that contains the transaction ID as one of the fields.