In search screens in SAP CRM, you sometimes run in to the fact that for some reason, you are not able to select a search option you might want to be able to select.
For instance in the example, let’s say we would like to select all activity types starting with ‘ZB*’. This is not possible in the standard, but there is a way around this. Let’s talk about ‘Query Objects in the Generic Interaction Layer (GenIL).
Query objects are used to find business objects within the BOL. Many of SAP’s business objects have queries implemented to support specific search conditions. These query objects can easily be found using the GenIL Model Browser.
Besides standard query objects, supporting only ‘values equal to’ searches, some of the query objects are implemented as ‘dynamic query objects’Using these dynamic query objects it is possible to support multiple operators within the search. As said, it is possible. Not all dynamic query objects support all kinds of operators. This blog explains how to change the operators for dynamic query objects, to support custom specific search scenarios.
1. Dynamic Query Object : Within this blog we will use component “BT”, dynamic query object “BTQAct”.
Using the BOL browser(GENIL_BOL_BROWSER – Browser for Business Object Layer) , we want to search for specific objects, where field “PROCESS_TYPE” is in between a range of values, but the dynamic query object doesn’t allow us to do so.
Using the Generic Interaction Layer Model Browser it’s easy to locate the dynamic query objects for a specific business object.
2. Check default query operators
Since the dynamic query object doesn’t allow us to search with operator “BT” for field “PROCESS_TYPE”, we need to check what is causing this behavior. By double clicking the Dynamic Query Object, we get an overview of all allowed operators. As we can see, operator “BT” is supported for this query object.
3. Check exceptions per attribute
The dynamic query object specifies which operators are allowed within the search. But this doesn’t mean that all fields allow these operators as well. It is possible to set exceptions. By double clicking the field within the dynamic query object, we can see all allowed operators for that specific field.
4. Define operators for dynamic queries
To change the operators for dynamic query object we need to open the customizing using path:
Customer Relationship Management -> CRM Cross-Application Components -> Generic Interaction Layer/Object Layer -> Component-Specific Settings -> Define Operators for Dynamic Queries
Search for the corresponding component and dynamic query object. The customizing allows us to either change the default settings or the exceptions per attribute. In our specific case we need to change the exceptions per attribute and activate the “BT” operator.
5. Check new operator and test for dynamic query
Note: – In case the dynamic query object itself doesn’t supply the required values, meaning the newly added operator doesn’t work correctly, you’ll have to find / enhance the corresponding search implementation.