The BAPI Module implements the init(), terminate(), pollForEvents(), and the doVerbFor() method. However, the pollForEvents() method is not used because the BAPI Module supports request operations only.
The init() method opens an RFC connection with the SAP application through the SAP Gateway. If the connector fails to initialize, it terminates using the terminate() method. The connector terminates by disconnecting the connection to the SAP Gateway.
A single implementation of the doVerbFor() method in the vision connector framework's business object handler initiates all business object requests. The vision business object handler processes all of the business objects passed between the BAPI Module and the integration broker. In the BAPI Module, a single BAPI business object handler supports all BAPI calls.
Figure 47 illustrates business object processing for the BAPI Module.
Once invoked by the Vision business object handler, the BAPI business object handler executes in the following manner:
IBM WebSphere Business Integration Adapter for mySAP.com includes a tool, SAPODA, that generates business object definitions that support BAPIs. SAPODA interprets the interface of a BAPI, maps its parameters to the business object attributes, and adds the application-specific information for each attribute.
The connector and SAPODA support SAP BAPI transactions (also referred to as Logical Units of Work). A BAPI transaction consists of a set of BAPIs that are executed in a sequence so as to complete the entire transaction. The sequence of multiple BAPIs is invoked using the same JCo client connection.
To support BAPI transactions, SAPODA generates a top-level business object that acts as a wrapper of a set of child business objects, each one representing a single BAPI call in the transaction sequence. The BAPI transaction wrapper object represents the complete transaction. Each second-level child business object represents a structure parameter or table parameter of the method. Simple attributes correspond to the simple parameters of the method.
The BAPI business object handler returns SUCCESS when all the BAPI calls in the transaction process successfully. The business object handler also provides error handling in case of failures. If a BAPI call in the transaction fails processing, the subsequent calls in the transaction terminate and, depending on the error code, BAPI_RETURN returns either FAIL or APPRESPONSETIMEOUT.
The BAPI interface does not provide a rollback mechanism for transactions. You can achieve rollback in one of the following ways:
Note that rollback needs to be handled by the business process logic.
For details about the strucutre of BAPI transaction business objects, see Developing business objects for the BAPI Module.
The connector and SAPODA provide ResultSet support for DB2 Information Integrator (DB2 II). SAPODA generates a ResultSet object that is a wrapper business object. This object contains two attributes, BAPI_Query and BAPI_Result, that represent Query BAPI and Result BAPI objects. For details about the structure of BAPI ResultSet objects, see Business object structure for BAPI ResultSets.