!--a11y-->
Combo Engine 
A combo engine is attached to an attribute of a business object or business query and provides a list of selection values for the attribute.
If the attribute is called ‘DayOfWeek’, the list of possible values are Monday and Tuesday.
The details of the attached combo engine is stored in the Mobile Application Repository (MAR).
It is mainly used to support combo controls in the user interface to provide a list of choices for user selection.
A combo engine has an associated business document recordset from which a set of values are displayed by the attached user interface combo control. Each value corresponds to a list of possible values for the long text attribute.

For a long text attribute called ‘DayOfWeek’, the list of possible values are Monday and Tuesday while the corresponding short text values could be Monday and Tuesday.
However, it is the responsibility of the user interface to get the list of values into the list of the combo control. It calls the GetListData method to retrieve the corresponding recordset. The BDoc type related information for the combo engine is stored in the MAR.
The combo engine component supports mapping from short text to long text and vice-versa in order to support language independence. Attributes with combo engines assigned can get an additional associated long text sibling attribute. In this case, the attribute with the combo engine is referred to as the short text attribute. Short texts are language independent data, and it is the combo engine that provides a mapping to the corresponding long text, which is displayed at the user interface.
Since it is only the short text that is saved to the database, the long text of the same business object can have different values in different end user environments, which are dependent on the international settings. Both attributes are available at the business object and can be read as well as set. If the short text attribute is set, the long text attribute is automatically modified into the corresponding long text. Also if the long text attribute is set, the short text attribute is updated automatically.
Mapping of short-to-long text or vice-versa is performed only when requested by the business object or business query object. The current language and country values can be obtained from the user data dictionary.

Short text to long text mapping does usually make sense only if the selection is mandatory and not optional.
To safeguard against duplicate long text (that is, same long text but different short text), the combo engine component ensures unique mapping via the SetIndex method.
In combo engines, you have the option of caching the resultant recordset once it is accessed. Caching stores the recordset in memory, and you can access the long text of a selected short text without having to query for the second time.
Enabling caching improves the combo engine performance when the recordset is relatively small or medium. However, if the recordset is very large, performance is affected. Therefore, the size of the recordset should be considered while enabling caching during combo engine creation. Hence it becomes more important to analyze the scenario where the combo engine is being used and then design the combo engine.
The combo engine uses the list engine for list management. It creates the list engine whenever it is initialized. Since the list engine is a generic list component, the combo engine uses the business factory to create the list engine. The combo engine sets the business document name and segment name in the list engine and requests the list engine to populate the combo list. The combo engine sets the hierarchy information as filter criteria in the list engine, which updates the list accordingly.