Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
former_member183750
Active Contributor

Up to and including Crystal Reports 2008 (v. 12.x), things were relatively straight forward. Though a bit of a review / explanation taking us all the way back to CR 10.5 will serve us well as an introduction type of thing. After Crystal Reports 200 (CR 2008), things get confusing and in this blog I want to try and remove the confusion - and frustration...

So, CR 10.5 - better known as "Crystal Reports Basic for Visual Studio 2008" (not to be confused with Crystal Reports 2008(!)). This was a bundled version of CR that was included for free with Visual Studio 2008. It had both 32 bit and 64 bit runtime. Now, let's skip to CR 2008 (c 12.x) as all that applies here, applies to CR XI (v. 11.x) and CR XI R2 (v. 11.5). The install of these versions of CR included the SDK for VS .NET. 32 bit only(!). However, perhaps to make up for the lack of 64 bit runtime, in addition to the Crystal Reports SDK for VS, you also got the InProc RAS SDK, which is way more functional and includes Report Creation APIs.

OK. We're up to CR 2008 (v. 12.x). What should the next version be? Well, version 13.x sounds just about right. And "Crystal Reports for Visual Studio 2010" (CRVS2010) is born. Note that this version, follows in the footsteps of CR 10.5; it only works in the VS 2010 IDE. E.g.; it is not a stand alone executable like CR XI R2 or CR 2008. CRVS 2010 has both 32 bit and 64 bit runtime. And it has the Crystal Reports SDK for .NET as well as the InProc RAS SDK. And it's FREE(!). All good.

What will the next version of CR be? How about SAP Crystal Reports 2011. What should the file versions be? Version 14.x sounds good and logical. One gotcha though; NO SDK. None. Not for VS, not for Java. Now, at this point this is not particularly bad as reports created in CR 2011 will work just fine with version 13.x runtime.

Right. Now let's release BI 4.x (an upgrade to Business Objects Enterprise 3.x). File version is 14.x for this product. And, it has a .NET SDK - version 14.x. All good, except for at least two gotachas:

  1. BI 4.x SDKs cannot be used for unmanaged applications. E.g.; reports must be run via managed applications only
  2. You cannot mix version 13 and version 14 files. E.g.; do not add CrystalDecision.CrystalReports.Engine assembly of version 13 and BusinessObjects.Enterprise.* of version 14 in the same app

More on point (2) below ( Mixing versions - NO, NO, NO, NO, NO ). Now, just to confuse things a bit more, what do we call CR that can work with Visual Studio 2012? How about "SAP Crystal Reports, developer version for Microsoft Visual Studio". And let's give it version 13.6.x. Oh and yes, it does work with VS 2010 also.

Wonder about Crystal Reports for VS 2014? Me too :).

Mixing versions - NO, NO, NO, NO, NO

In the days of CR 2008 and BO 3.x, all files were versioned as 12.x. Thus you could do something like the following:

ReportDocument.Load(myInfoObject, myEnterpriseSession)


The above is an overload that uses RAS to bridge to BOE.  It will  use the RAS server in the back-end. However, since ReportDocument is defined in the CR SDK and InfoObject / Enterprisesession is defined in the BO / BI SDK, when you move to BI 4.x, you cannot use the same code. E.g.; when migrating from BO 3.x to BI 4.x it is imperative to avoid this type of code. Remember, the 4.x runtime is only supported for fully managed scenarios and the reportdocument SDK is only supported in the 13.x runtime(!).  Therefore, the .Load overload and any BOE dependencies were removed from the 13.x runtime.

Just as word to a simple solution to those running into an app that uses the above; The application already has the infoObject, so most of the work is done.  To set parameters /logons to the reportdocument object, use CrystalDessions.Enterprise.Desktop.Report object(cast the InfoObject to a Report object and use PSReportFactory for the reportsource)  or ReportClientDocument  object (create ReportAppFactory from enterprisesession and create ReportClientDocument from ReportAppFactory.Opendocument (InfoObject.ID)).

Well, that is it. Still confused? Below is a handy dandy matrix that may help.

Product nameFile Version*CR SDK for .NET32 bit 64 bit InProc RAS SDK
Crystal Reports Basic for Visual Studio 200810.5YESYESYESNO
Cystal Reports 200812.xYESYESNOYES
Crystal reports For Visual Studio 2010^13.xYESYESYESYES
SAP Crystal Reports 201114.0.xNOYESNONO
BI 4.x**14.xYES**YESYESNO

SAP Crystal Reports, developer version for

Microsoft Visual Studio^^

13.xYESYESYESYES
SAP Crystal Reports 201314.1.xNOYESNONO

*Remember, that a File version is not the same as Assembly version

^ Crystal Reports for Visual Studio 2010 versions; 13.0, 13.1, 13.2, 13.3, 13.4, 13.5

^^ Future versions for SAP Crystal Reports, developer version for Microsoft Visual Studio version 13.6 + 0.1. E.g.; 13.7, 13.8, etc.

** Managed only

Still more questions? Don’t' forget to search for answers using the search box at the top right corner of this web page. Or, start a Discussion in this Space.

19 Comments