The Safety Belt, documented in note 1127156, provides the option to protect the Java system from performance issues and OutOfMemory dumps because of huge query result sets. If the set limit is exceeded the message "Result set too large (<result set> cells); data retrieval restricted by configuration (maximum = <safety belt value> cells)". In context with active zero suppression it might be unclear how the result set size is calculated respectively when the zero suppression is applied.
Note 1127156 provides a related example. In below example the Safety Belt was set to 100 cells. A user may execute a query in the BEx Analyzer without any issue. As you can see, the result set has 10 cells.
Thenthe user executes the same query in the BEx Web Analyzer:
Suddenly, the Saftey Belt error message is be shown:
This problem scenario indicates the zero suppression to be active. Depending on the zero suppression type, the result set size is calculated before or after the application of the zero suppression. In above example the zero suppression is applied after the result set size was evaluated. Without applied zero suppression, the result set size exceeds the defined Safety Belt limit and the transfer of the result set is rejected.
There are two types of zero suppression. You can activate them in the Query Designer or in the data provider properties in web runtime.
BEx Web Analyzer:
If the Safety Belt limit is increased the results are shown. If the zero suppression type is switched from "All values = 0" to "Totals = 0" the results are shown as well.
Zero Suppression type "All values = 0" is always applied by the frontend application. Zero Suppression type "Totals = 0" is mainly applied by the ABAP backend, before the result set size is evaluated. The result set size is calculated in BICS_PROV_GET_RESULT_SET. The number of cells is simply calculated by formula rows * columns. You can set an external breakpoint as shown below and run the query:
In above example, with Zero Suppression type "All values = 0", 160 cells are calculated and hence the Safety Belt limit of 100 cells is exceeded:
With Zero Suppression type "Totals = 0", 10 cells are calculated, which corresponds with the finally displayed and expected result set. Hence the Safety Belt limit is passed: