
The SAP system allows desktop applications (custom controls) to be controlled using ABAP. The application logic runs on the SAP application server (automation client) that drives the custom controls (automation server) on the frontend.
The frontend works as the container for custom controls on the frontend. The custom controls can either be ActiveX controls or JavaBeans depending on the version of the SAP GUI that is currently in use.
The following example shows an SAP Tree Control in combination with an SAP TextEdit Control:

The described framework supports controls (ActiveX and JavaBeans) that are displayed in the SAP GUI.
The Automation Controller is run from ABAP using the classes CL_GUI_CFW, CL_GUI_OBJECT, and CL_GUI_CONTROL. These allow you to create and destroy custom controls, set and get their attributes, and call their methods.
To assure adequate performance in the client/server environment, the system provides a buffer mechanism called the automation queue, which buffers a series of method calls to different instances of custom controls before sending them all to the frontend in a single step.
Events that are triggered in a custom control are processed in two steps:
Filter out irrelevant events
Relevant events are forwarded to the application server. Your ABAP program then gets the control over an OO event at a defined point and can react to the event.
The lifetime of a control is regulated by the lifetime management. Lifetime management automatically destroys controls at the frontend when they are no longer needed. The application program of course also supports an explicit destruction of controls.
Certain methods and events in controls are not supported by SAP GUI for HTML. Others are only available in a limited form. For more details, see the documentation about each control.