Business Transaction Events (BTEs) have been available as of Release 4.0 and are another technique for implementing program exits, and only program exits.
BTEs are generally found in the general ledger accounting (FI-GL), account receivable and payable (FI-AR and FI-AP) and sales and distribution components.
A BTE has a predefined interface and allows you to attach additional functionality in the form of a service funtion module.You must create funtion module with the parameters you have previously dictated. The BTE is called by the SAP standard program by a call to function OPEN_FI_PERFORM_ or OUTBOUND_CALL_. This function checks if there are any active BTEs according to customizing.
According to its Interface there are 2 types of BTEs:
Publish & Subscribe interfaces. Can not update data. Possible to have multiple implementations
Process interfaces. Can update date. Only one active implementation
How to find a BTE (2 ways)
- Search the source code for for “OPEN_FI_PERFORM” og ” OUTBOUND_CALL_”
- Use transaction FIBF menu Environment->Info System (P/S ). Use the Documentation button to see the documentation for the BTE.
Implementing the BTE
- Goto transaction FIBF menu Environment->Info System (P/S )
- Select the BTE you want to implement. (as below)
- Then we copy the sample function module to a Z-function module (First create a new function group for the function module) .
Note: The name of the Z-function module is not important
- Edit the code in the new function module:
- Go back to transaction FIBF – Menu Settings->Products -> Of a customer and create a new product which identifies the new product .
Remember to mark the Active field.
- We enter the product name description and RFC destination if applicable. The check box A is to activate the product.
- The next step is to link the function module and the event using the product created. Go back to FIBF menu Settings->P/S function modules->of a customer – Create an entry that links the BTE and Product with the new function module (as below)
- And that´s all, we only need to save and activate. 🙂