Thursday, December 19, 2013

Getting Started with Accpac Programming

Recently I have accepted a new position at Kerr Consulting that specializes in integrating ERP and other financial software packages such as Quick Books with existing software. Most of our work is related to Sage products and I have been specifically tasked with becoming an expert at Sage 300 ERP (Accpac) programming.


A Simple Example

I find it difficult to find simple examples when getting started programming any new platform. So I will start out with a very basic example of how to simply connect to Accpac.

Dependencies

  • We are programming with the .NET Framework version 4.5 and MS Visual Studio 2012. There is no problem with downgrading to lower versions of .NET and Visual Studio.
  • We are using Sage 300 ERP 2012/ 6.1 for the example code. This must be installed on your system in order to write software for sage.
  • Additionally you will need to install the Sage 300 ERP SDK v2012 that should be provided for you. The installation is named SDK61A.exe in my system.

References

You must make a reference to the AccPac COM library in order to access the SDK in .NET. Under your project right click on References and click Add Reference… Then click on the COM tree node on the left hand side of the form. Check the item named ACCPAC COM API Object 1.0 and then click ok to finish adding the reference. You can see where I have added the reference to my project below:



The Code

After your reference is added to your project the below code can be used to connect to Accpac and retrieve the Application Version you are programming on.

namespace Example1
{
    class Program
    {
        static void Main(string[] args)
        {
            var accpacSession = new AccpacSession();

            //Initialize the session. You will need to pass another version instead of 61A.
            //for AppVersion. I am using 6.1A so I pass 61A here.
            accpacSession.Init("", "XY", "XY1000", "61A");

            //This is the default setup for SAMINC but it might be different on your system
            accpacSession.Open("ADMIN", "ADMIN", "SAMINC", DateTime.Now, 0, String.Empty);

            //Write out the Application Version. It should be 61A just as you passed to Init.
            Console.WriteLine(accpacSession.AppVersion);

            //Always close the session when you are done.
            accpacSession.Close(); 
        }
    }
}

Where to Get More Help


  • The best resource for SDK help is Stephen Smith’s blog. There is a ton of information there that you won’t find anywhere else including the Sage documentation.
  • There is also a wiki page for Sage 300 ERP that has a variety of examples. However, you will have to be a member of the developer network to view or updated it.




7 comments:

  1. Is there any other DLL to be referenced?

    I am getting an error: Session could not be opened..

    ReplyDelete
  2. is there is any way to get whether signon manager has login users or not?

    ReplyDelete
  3. I want to create an exe, which open only when accpac is open (Login). Please suggest if you have any solution....

    ReplyDelete
  4. Anyone knows whether this API is thread safe? For example, to be used within an ASP.NET where multiple user requests may call the API simultaneously.

    ReplyDelete
  5. Thank you for consistently delivering high-quality content. It’s truly appreciated.

    Mahindra bolero pickup

    ReplyDelete