Q: What is this?
A: The 'Do not perform a 'Verify Database' on report load' is a new option under the B1UP main configuration that if enabled will connect to Crystal Reports in a new way. It was introduced in B1UP 2018.08 and higher
You can see a video about it here.
Q: Why did you make this?
A: When B1UP Introduced Crystal Reports to B1UP back in 2008 it was very new to us and the SAP Community, so we implemented it the best way we understood this back then, and in that implementation, we used a method called "Verify Database".
This all work and still does but in the recent year we have become aware that this 'Verify database' call has 2 drawbacks:
- If there are any issues with the Crystal Report run (wrong input or SQL) the 'Verify Database' call would make the error message difficult to understand (would often just say "No Error" to any sort of error)
- Calling 'Verify Database' will essentially run the SQL in the Crystal Report twice so if you have SQL that had long execution time, it would the extra slow (compared to SAP) when running from B1UP. [Learn more about Crystal Report Performance here]
We also looked at how SAP have implemented their own Crystal integration and also say that they did not do it so we thought now was the time to redo our 10-year-old code.
Q: If I upgrade to B1UP 2018.08 or higher will this be on by default?
A: No, Any existing installation (aka where a previous version of B1UP has been installed) it will be off by default. However, on brand new installations, it will be on by default.
The reason we do this is because the new option is not 100% backward compatible (see below) and we do not wish to break existing setups. We do however recommend that you read below, fix any issues and turn it on in the main config as it will give the best experience going forward
Q: You said it is not 100% backward compatible. What is the issue?
A: The issue happens if all below apply to your data source in your Crystal:
- You use SQL commands
- One or more of your SQL's do a SELECT *
- You have written the Crystal in another system the system you are connecting to (aka another database)
- The table you do the SELECT * against have UDFs
- These above UDFs are not in the production database
If all above is true the Crystal will not work with the 'Do not perform a 'Verify Database' on report load'. So, in that case, you should not turn on the option or change your Crystal Report to not use SELECT * (something that would also improve performance)
An example of this is, unfortunately, our old Out of the box "Account Balance" Crystal Report (more info here)