The purpose of this page is to clarify the understanding of SID generation during activation of DataStore (DSO) requests.
The topics covered here include what happens during the SID generation phase, as well as typical errors that can occur.
Some troubleshooting steps & possible solutions are offered for these known errors.
Why SID generation ?
When you create a DSO, the system sets a system ID of 'SIDs Generation upon Activation' by default. This is a check box in the edit mode settings of the DSO. If this option is checked, the system checks the SID values for all of the characteristics in the DSO. If a SID value for the particular characteristic doesn’t exist, the system will then generate the SIDs on the fly.
SID Generation upon Activation helps to improve the runtime performance of a query as the system doesn’t have to generate SIDs at query runtime.
SID values are always stored in SID table of particular Infoobject, you can check the SID table '/BIC/S' Infoobject name.
What happens during the SID generation ?
- Records are selected from the activation queue
- The selected records are used to build SID data packages. Each of the SID data packages
- contains characteristic values for one InfoObject
- has a predefined maximum size of 10.000 characteristic values
- is processed either serially or in parallel according to the settings for the activation
- Missing SID values lead to
- the creation of SID values, if the DTP option “Further processing without master data" is set
- error messages in the monitor, if the DTP option “No Further processing without Master data” is set
Typical Errors that occur during SID generation
- No SID found for value '...' of characteristic ...
- BRAIN060, BRAIN290:
- Value '...' (hex. '...') of characteristic ... contains invalid characters.
Possible Solutions for 'No SID found for value .... of characteristic' (BRAIN070)
- Compare with values in SID table
- There is an Important DTP setting, "Type of Data Update to Data Targets"
- If you set this indicator, the system terminates activation if master data is missing and produces an error message.
- If you do not set this indicator, the system generates any missing SID values during activation.
Possible Solutions for issues with invalid characters, such as BRAIN 290
- Check the Hex value - use SAP Note 173241.
- Check if lowercase letters are allowed for the mentioned InfoObject in tcode RSD1.
- You have 3 options to correct the data:
- Correct the Data in the source system
- Correct the data in the PSA
- Write a routine to catch the incorrect characters
Possible Solutions for issues with SID Determination taking too long for DSO activation
- If you are not reporting on the DSO, the activation of SIDs is not actually required (this will take up some considerable time in activation). To determine if SID determination is taking too long, the activation log should show most of the time being spent to schedule the RSBATCH_EXECUTE_PROZESS as job BIBCTL_*.
- RSBATCH_EXECUTE_PROCESS is for scheduling and executing the SID-generation process. If you don't need the relevant DSO for reporting & you don't have queries on it, you can delete the reporting flag in the DSO maintenance. This would be a good way to speed this process up significantly.
- You can define the Degree of Parallelization in transaction RSBATCH for DSO's and other objects. Please see the following KBA: 1392715 - DSO req. activation:collective perf. problem note
- You can use transaction RZ04 to check how many background processes are available in the system at the time of load. Try debug the job BI_PROCESS_ODSACTIVAT after repeating the request activation in chain. check if function 'RSBATCH_START_PROCESS_INTERNAL' returns with no_free_wp.
- You can change the run-time parameters for the DSO by going to transaction RSODSO_SETTINGS - SAP Note 1118205
Sample coding: https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/4059
SAP Note 173241: Permitted characters in BW
SAP Note 1392715 : DSO req. activation:collective perf. problem note
SAP Note 1118205: RSODSO_SETTINGS Maintain runtime parameter of DataStore obj