To SDK or Not to SDK
That is the question. With Sage ERP Accpac there is a lot of customization capabilities and programming APIs built in including VBA macros and the Accpac COM API, but then there is the Software Development Kit or SDK (http://en.wikipedia.org/wiki/Software_development_kit). A common question is: Do I need the SDK to do this or that? In this blog posting we will see what you can do without the SDK and what you require the SDK to do.
The core Accpac System Manager contains many components and tools that are installed as part of the regular product. These are all required for the normal use of Accpac. For instance all our User Interface Forms use our COM API to communicate with the Business Logic, so this interface must be installed with System Manager and as a result if fully usable from any COM aware programming system (like VB) without anything else being required. In the same way, the VBA macro system is installed as part of System Manager.
Although there is an SDK installation that you install and use on your computer, we don’t sell that as a product. What we sell is an ISV program that includes the SDK, along with access to online resources like a Wiki, programming support calls and other programs like discounts for trade show booths. So even if you don’t need the SDK installation part, you might still want to sign up for the ISV program for some of the other benefits. Especially the support, since this is the only way you can get support on programming type problems.
Without the SDK
The Accpac macro language is VBA (http://en.wikipedia.org/wiki/Visual_Basic_for_Applications). You can use this to automate processes and customize UIs. It is a very powerful feature of the core Accpac System Manager. From VBA you have access to all the Accpac Business Logic.
These are APIs that are built into the core Accpac System Manager that allow external programs to connect to Accpac and use the Accpac Business Logic. These APIs include the Accpac COM API (also used by VBA) and the .Net Interface. In the forthcoming Accpac 6.0 there will also be a Java Native Interface (JNI, http://en.wikipedia.org/wiki/Java_Native_Interface) and the SData RESTful web services interface (https://smist08.wordpress.com/2009/11/24/sdata-in-sage-erp-accpac-6/).
Crystal Reports (http://en.wikipedia.org/wiki/Crystal_Reports) is not part of the SDK. If you want to customize reports in Accpac, you need the Crystal Reports Designer (available separately). With this you can open and customize any report in Accpac (except Financial Reports which are done in Excel). When customizing reports, consider putting them in a customization directory (see administrative services) rather than just customizing the report Accpac installed in place, since it might get overwritten by a product update later.
System Manager includes a number of useful tools under the Tools folder of its start menu entry. Many of these like RVSpy are very useful when developing macros or programming the external interfaces. Below is the U.I. Info tool that is included with System Manager.
With the SDK
The goal of the SDK is to let third parties write accounting modules just like Sage writes Accpac accounting modules like Accounts Receivable or Order Entry. In fact our own developers of these products use the same SDK that we make available. Some examples of third party applications developed this way are Technisoft Service Manager (http://www.technisoft.com/), Norming Asset Management (http://www.norming.com/), Peresoft Cashbooks (http://www.peresoft.com/) or AutoSimply (http://www.autosimply.com/).
The SDK gives you all the header files and libraries to develop with C/C++. It gives you templates for create Accpac User Interface Forms and Views (Business Logic Objects). It gives you a large set of tools to help you develop with. Many of these tools are added to Accpac as a regular Accpac application see below.
If you look in an accounting application directory such as AR56A you will see a number of small files like roto.dat or eng\grp.dat. The SDK contains command line tools to create these files. Basically it is everything you need to develop a complete Accpac application.
When you create your application with the SDK you get all the functionality of a full Accpac application with very little extra work. For instance your application will:
- Fully support VBA – you are as customizable as any other Accpac application
- Your Business Logic will be available through all the external APIs
- Will use the standard Accpac Import/Export
- Your UIs will look, feel and behave like any other Accpac screen – you will use the same controls like Finders, grids and navigation controls
- Runs from the Sage Accpac desktop, and the Sage Accpac Web-desktop
- Will participate in data activation, database dump/load and all other Accpac database operations like database transactions
Add-ins are developed in the same manner as full SDK modules. However their goal isn’t to be a standalone application. Their goal is to add to or change the functionality of existing Accpac modules. They can alter the behavior of the business logic, as well as add their own business logic, UIs and reports.
The key feature add-ins are using is that the Accpac business logic can be “subclassed”. That means you can create a new business logic object that sits in front of the Accpac one and process all the calls first. These subclasses are chained, so there could be several add-ins all subclassing the same Accpac business logic object. This is a very powerful form of customization, in that it customizes the behavior for everything that uses the business logic including import/export, macros, external programs as well as UIs. Whereas UI customization only affects the customized UI.
An example of an Add-in is the Accpac SageCRM integration module. This module, once activated has a few UIs, but its main purpose is to subclass a number of Accpac business logic object and when they are called, make corresponding changes in SageCRM. For instance when you update a customer’s information in Accpac, the SageCRM’s subclass Views sees the changes and calls SageCRM’s API to make the corresponding change there.
As you can see, you can develop quite a few powerful customizations and integrations without using the SDK at all. So how do you choose when to use the SDK? Main reasons to use the SDK:
- Create a full Accpac accounting module
- Create an add-in with subclass business logic objects
- Want to get the 12 free developer support calls per year
- Want the full Accpac SKD documentation to better understand the workings of Accpac
Some of the main things that you don’t need the SDK for:
- Create a macro to customize a UI
- Create a macro to import data
- Create an integration via the COM API or .Net interface to an external program
This is a guide, as with anything in computing there are always exceptions, but hopefully this gives some guidance.