SQL: Querying Microsoft Great Plains - Overview for Database Administrator/Developer
Looks like Microsoft Great Plains becomes more and more popular, partly because of Microsoft muscles behind it. Now it is targeted to the whole spectrum of horizontal and vertical market clientele. Small companies use Small Business Manager (which is based on the same technology - Great Plains Dexterity dictionary and runtime), Great Plains Standard on MSDE is for small to midsize clients, and then Great Plains serves the rest of the market up to big corporations. There are several reporting tools available and you definitely need to know which one to use for different types of reports.
If you are database administrator who is asked to import some data to Great Plains or repair or copy data from one company to another - read this and you will have the clues on where to look further.
1. Microsoft Great Plains Tables Structure - Launch Great Plains and go to Tools->Resource Description->Tables. Find the table in the proper series. If you are looking for the customers - it should be RM00101 - customer master file.
2. DEX_ROW_ID. This is identity column and each Great Plains table has it - this is due to the Great Plains Dexterity technology. This column is never used as a key field - so don't try to link your tables on DEX_ROW_ID. In case if you need to transfer the table from one company to another you should use these queries:
select * into GL00100_BAK from TWO.dbo.GL00100
alter table GL00100_BAK drop column DEX_ROW_ID
insert into GL00100 select * from GL00100_BAK
drop table GL00100_BAK
The set of queries above will transfer GL00100 (Account Master table) from TWO company into your current company. Then you need to run Checklinks - refer to GP Manual - in order to recreate the rest of the account master related tables.
3. Do not modify the table - sometimes it seems to be nice if you just append couple of extra columns to the table - like in IV00101 - inventory master file why wouldn't you just add couple of additional descriptions. If you do this - Great Plains Dexterity engine will fail reading all your items - due to the fact that DYNAMICS.DIC (main Great Plains Dictionary file) has exact description of all the tables and Dexterity uses it for reading and writing into the specific table
4. Feel free to create SQL views or stored procs. If you are helping your internal developers to create Crystal Reports - good SQL views are real help to them. Let me give you example, the view below will show work and historical SOP Invoices - then Crystal can just use it
create view SOP_WORK_HIST
select SOPNUMBE, CUSTNMBR, CUSTNAME, DOCAMNT from SOP30200 where SOPTYPE=3 and VOIDSTTS=0
select SOPNUMBE, CUSTNMBR, CUSTNAME, DOCAMNT from SOP10100 where SOPTYPE=3 and VOIDSTTS=0
The above view will show all the work and historical non-voided invoices (SOP Type = 3 stays for invoice)
5. Some repair / unlocking tips:
If you run query above against DYNAMICS database - it will unlock the user, who accidentally shut down the computer without logging off Great Plains:
delete ACTIVITY where USERID='JOHN'
Next one will unlock hanging batch:
update SY00500 set BCHSTTUS=0 where BACHNUMB = 'JULYINVOICES04'
Happy querying! if you want us to do the job - give us a call 1-866-528-0577! email@example.com
Andrew Karasev is Chief Technology Officer in Alba Spectrum Technologies - USA nationwide Microsoft CRM, Microsoft Great Plains implementation and customization company, based in Chicago, Boston, New York, San Francisco, Los Angeles, San Diego, Phoenix, Houston, Dallas, Atlanta, and Miami and having locations in multiple states and internationally (www.albaspectrum.com), he is Dexterity, SQL, VB/C#.Net, Crystal Reports and Microsoft CRM SDK developer.