SQL Scripts for Microsoft Dynamics GP: Insert Manufacturing Routings from Text File

Microsoft Dynamics GPThis script is part of the SQL Scripts for Microsoft Dynamics GP where I will be posted the scripts I wrote against Microsoft Dynamics GP over the 19 years before I stopped working with Dynamics GP.

This script uploads a text file using BULK INSERT to create manufacturing routings. There is error handling built in to check if the item, machine or route exists and will throw an error if issues are found; routings are only inserted if there are no errors.

/*
Created by Ian Grieve of azurecurve | Ramblings of an IT Professional (http://www.azurecurve.co.uk) This code is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0 Int). */
/* CREATE TEMP ERROR TABLE */ CREATE TABLE #Errors ( Error VARCHAR(1000) ,ROW_ID INT IDENTITY ) GO /* CREATE TEMP TABLE FOR DATA */ CREATE TABLE #ROUTING_IMPORT ( ROUTINGNAME_I VARCHAR(31) NOT NULL, RTSEQDES_I VARCHAR(101) NOT NULL, ITEMNMBR VARCHAR(31) NOT NULL, RTSEQNUM_I VARCHAR(11) NOT NULL, OPCODE_I VARCHAR(7) NOT NULL, MACHINEID_I VARCHAR(11) NOT NULL, SETUPTIME_I NUMERIC(19, 5) NOT NULL, MACHINETIME_I NUMERIC(19, 5) NOT NULL, RUNTIME_I NUMERIC(19, 5) NOT NULL, LABORTIME_I NUMERIC(19, 5) NOT NULL, QUEUETIME_I NUMERIC(19, 5) NOT NULL, CYCLETIME_I NUMERIC(19, 5) NOT NULL, MOVETIME_I NUMERIC(19, 5) NOT NULL, LABORCODE_I VARCHAR(11) NOT NULL, LABORCODE2_I VARCHAR(11) NOT NULL, NUMOFEMP SMALLINT NOT NULL, NUMBEROFMACHINES_I SMALLINT NOT NULL, WIPOPPERMOSTARTQTY SMALLINT NOT NULL, ) GO /* BULK INSERT */ BULK INSERT #ROUTING_IMPORT FROM 'c:\temp\ItemRouting.txt' WITH (FIELDTERMINATOR = '\t' ,ROWTERMINATOR = '\n' ,FIRSTROW = 2 ) GO /* VALIDATE DATA */ --validate parent item INSERT INTO #Errors (Error) --VALUES ( SELECT 'Item Number does not exist: ' + CAST(['Import'].ITEMNMBR AS VARCHAR(100)) FROM #ROUTING_IMPORT AS ['Import'] LEFT JOIN IV00101 AS ['Item Master'] --Item Master (IV00101) ON ['Item Master'].ITEMNMBR = ['Import'].ITEMNMBR WHERE ['Item Master'].ITEMNMBR IS NULL ) GO -- validate machine id INSERT INTO #Errors (Error) --VALUES ( SELECT 'Machine does not exist: ' + CAST(['Import'].MACHINEID_I AS VARCHAR(100)) FROM #ROUTING_IMPORT AS ['Import'] LEFT JOIN MM010032 AS ['Machine Master'] --MM010032 ON ['Machine Master'].MACHINEID_I = ['Import'].MACHINEID_I WHERE ['Machine Master'].MACHINEID_I IS NULL ) GO --validate existing bom INSERT INTO #Errors (Error) --VALUES ( SELECT 'Routing for Item already exists: ' + CAST(['Import'].ITEMNMBR AS VARCHAR(100)) FROM #ROUTING_IMPORT AS ['Import'] LEFT JOIN RT010001 AS ['routing_mstr'] --RT010001 ON ['routing_mstr'].ITEMNMBR = ['Import'].ITEMNMBR AND ['routing_mstr'].ROUTINGNAME_I = ['Import'].ROUTINGNAME_I WHERE ['routing_mstr'].ITEMNMBR IS NOT NULL ) GO --validate existing bom lines INSERT INTO #Errors (Error) --VALUES ( SELECT 'Routing for Item already exists: ' + CAST(['Import'].ITEMNMBR AS VARCHAR(100)) FROM #ROUTING_IMPORT AS ['Import'] LEFT JOIN RT010130 AS ['routing_line'] --RT010130 ON ['routing_line'].ITEMNMBR = ['Import'].ITEMNMBR AND ['routing_line'].ROUTINGNAME_I = ['Import'].ROUTINGNAME_I AND ['routing_line'].RTSEQNUM_I = ['Import'].RTSEQNUM_I WHERE ['routing_line'].ITEMNMBR IS NOT NULL ) GO /* INSERT NEW DATA IF NO ERRORS */ --insert bom header IF (SELECT COUNT(*) FROM #Errors) = 0 -- Insert if no Email Details INSERT INTO RT010001 --RT010001 ( ROUTINGNAME_I ,ITEMNMBR ,RTPRIMARY_I ,REVISIONLEVEL_I ,RTSTATUSDDL_I ,NOTEINDX ) --VALUES ( SELECT DISTINCT ROUTINGNAME_I ,ITEMNMBR ,1 --RTPRIMARY_I ,'' --REVISIONLEVEL_I ,4 --RTSTATUSDDL_I ,0 --NOTEINDX FROM #ROUTING_IMPORT AS ['Import'] WHERE ( SELECT COUNT(['routing_mstr'].ITEMNMBR) FROM RT010001 AS ['routing_mstr'] WHERE ['routing_mstr'].ITEMNMBR = ['Import'].ITEMNMBR AND ['routing_mstr'].ROUTINGNAME_I = ['Import'].ROUTINGNAME_I ) = 0 ) GO -- insert bom lines IF (SELECT COUNT(*) FROM #Errors) = 0 -- Insert if no Email Details INSERT INTO RT010130 --RT010130 ( ROUTINGNAME_I ,RTSEQNUM_I ,ITEMNMBR ,RTSEQTYPE_I ,RTSEQDES_I ,WCID_I ,OPCODE_I ,RTGWCID_I ,RTMCID_I ,MACHINEID_I ,SETUPTIME_I ,MACHINETIME_I ,RUNTIME_I ,LABORTIME_I ,QUEUETIME_I ,CYCLETIME_I ,MOVETIME_I ,PERCENTCOMPLETE_I ,QUANTITY_I ,LABORCODE_I ,LABORCODE2_I ,RTPARNUM_I ,RTNEXNUM_I ,DWGNUM_I ,TOOLID_I ,WAITHOURS_I ,MULTIPLEEMPLOYEEOP_I ,NUMOFEMP ,LASTSEQUENCETODAY_I ,TAPENUMBER_I ,USERDEF1 ,USERDEF2 ,NOTEINDX ,MFGNOTEINDEX_I ,USERID ,CREATDDT ,CREATETIME_I ,CHANGEDATE_I ,CHANGETIME_I ,AUTOBACKFLUSHLABOR_I ,AUTOBACKMACHINE_I ,NUMBEROFMACHINES_I ,NUMBEROFCREWS_I ,QAQCNEEDED_I ,POOFFSETDAYS ,WIPOPPERMOSTARTQTY ) --VALUES ( SELECT ROUTINGNAME_I ,RTSEQNUM_I ,ITEMNMBR ,0 --RTSEQTYPE_I ,RTSEQDES_I ,'MAIN' --WCID_I ,OPCODE_I ,'' --RTGWCID_I ,'' --RTMCID_I ,MACHINEID_I ,SETUPTIME_I ,MACHINETIME_I ,RUNTIME_I ,LABORTIME_I ,QUEUETIME_I ,CYCLETIME_I ,MOVETIME_I ,0 --PERCENTCOMPLETE_I ,0 --QUANTITY_I ,LABORCODE_I ,LABORCODE2_I ,'' --RTPARNUM_I ,'' --RTNEXNUM_I ,'' --DWGNUM_I ,'' --TOOLID_I ,0 --WAITHOURS_I ,0 --MULTIPLEEMPLOYEEOP_I ,NUMOFEMP ,0 --LASTSEQUENCETODAY_I ,'' --TAPENUMBER_I ,'' --USERDEF1 ,'' --USERDEF2 ,0 --NOTEINDX ,0 --MFGNOTEINDEX_I ,USER_ID() ,FORMAT(GETDATE(), 'yyyy-MM-dd 00:00:00.000') --CREATDDT ,FORMAT(GETDATE(), '1900-01-01 HH:mm:ss.000') --CREATETIME_I ,'1900-01-01 00:00:00.000' --CHANGEDATE_I ,'1900-01-01 00:00:00.000' --CHANGETIME_I ,1 --AUTOBACKFLUSHLABOR_I ,1 --AUTOBACKMACHINE_I ,NUMBEROFMACHINES_I ,0 --NUMBEROFCREWS_I ,0 --QAQCNEEDED_I ,0 --POOFFSETDAYS ,WIPOPPERMOSTARTQTY FROM #ROUTING_IMPORT AS ['Import'] WHERE ( SELECT COUNT(['routing_line'].ITEMNMBR) FROM RT010130 AS ['routing_line'] WHERE ['routing_line'].ITEMNMBR = ['Import'].ITEMNMBR AND ['routing_line'].ROUTINGNAME_I = ['Import'].ROUTINGNAME_I AND ['routing_line'].RTSEQNUM_I = ['Import'].RTSEQNUM_I ) = 0 ) GO /* OUTPUT ERRORS */ IF (SELECT COUNT(*) FROM #Errors) > 0 SELECT Error FROM #Errors ORDER BY ROW_ID GO /* DROP TEMP TABLES */ DROP TABLE #ROUTING_IMPORT GO DROP TABLE #Errors GO

Click to show/hide the SQL Scripts for Microsoft Dynamics GP Series Index

SQL Scripts for Microsoft Dynamics GP
Verify PM Batches Exist
Update Accrued Purchases Distribution on History Receipts from Posting Account Setup
Insert Mfg BOMs from Text File
SQL Function To Return Approver
List of Active Fixed Assets
Insert Manufacturing Routings from Text File
Table Function to Split String on Delimiter
List of Open Payables Transactions
Insert Creditor Item Numbers
Return Top Level BOM for Manufacturing Orders
Custom Purchase Order Email Notification to Originator on Workflow Final Approval
list of Open Payables Distributions
Set New Vendor On Hold if EFT Exists
Set New Vendor On Hold if EFT Exists
Payment Run Apply Query
List GL Transactions
Simple RMA Audit
Change Vendor Change Approvals Joins and Fields
Insert National Accounts from CSV
List GL Accounts With Notes
Import Site Bins From CSV
Remove Multicurrency from Sales Transactions
Change Email Notification Assignment
List General Ledger Transactions (Excluding Year End Journals)
List Taxes Linked to GL Accounts
Allow Workflow Originator to be an Approver
Add Joins and Fields to PM Document Approval Notification Emails
Update Accounts and Distributions on Work Status Sales Transactions from Item Card, Tax Details or Posting Account Setup
Upload and Verify Tax Commodity Codes
Delete Corrupt Extended Pricing Data
Assign All Items to All Site Bins
Sales Transactions (Work) Against a Specific Site
Change Web Service URi
SQL View to Return Quantity Available
Verify Tax Detail Assigned to Vendor
Insert Extended Pricing Price Sheet Header
Prefix Companies Names with System Designator
SQL View to Return Category Linked to Segment 3 in COA
Update Site Descriptions From CSV
Copy Workflow from Source to Destination Database
Extract GL Period Balances
Sales by Customer By Year
Purchased Items With Serial Numbers and Linked Sales Transactions
SQL View to Return Purchase Orders
Select All Primary Keys and Generate ALTER Script
Copy Workflow Calendar from Source to Destination Database
SQL Trigger on PO invoice Insert to Change GL posted Date
Sales by Salesperson By Year
Script to Set Transactions as Included on VAT Daybook Return
SQL Script to Return PO Receipts
Insert Extended Pricing Price Sheet UofM Work
View for Payables Transactions Extract
Export Open/History PM Transactions After a Specified Date
Copy Email Messages from a Source to Destination Database
PO Receipt History View
Insert Extended Pricing Price Sheet Assignments
Extract Payables Transactions from All Companies
List Open Purchase Orders
SQL View to Create Division Tree for Management Reporter
Select Chart of Accounts
Activate Horizontal Scroll Bars for All Existing Users
Workflow Assignment Review
Update Item Replenishment Method for Manufacturing
Get Alpha Characters from an Alphanumeric String
Set Vendor On Hold If EFT Details Changed
List Open Purchase Order Lines
SQL View to Create Division, including UDF 3 and 4, Tree for Management Reporter
Delete Orphaned Vendor EFT Details
Sales Invoice Query
Round Extended Pricing Price Sheet Item Value
Get Numeric Characters from an Alphanumeric String
Trigger to Activate Horizontal Scroll Bars for New Users
View to Return List of Payments and Linked Invoices
Select Duplicate Extended Pricing Price Sheet Work Records
RM Aged Debt Report
Select Next Temporary Creditor ID
Select a List of Vendor Addresses
Set Vendor On Hold When Created
Assembly Transaction Quantities Required
Generate Standard Cost Update Macro from Text File Import
Check for Corrupt Extended Pricing Records
Sales Line Items
Compare Ship To Address on Work Sales Trx Against Customer
SQL View to Return PO Commitment Detail
List Bank Accounts with Linked GL Accounts
Validate and Insert/Update Vendor Emails from a Text File
Return Items with Incorrect Quantities
Set Account Categories To User-Defined Field 2
Check Posting Type for Account (Segment 2)/Account Category Combinations
Update Ship To Name on Work Sales Transactions to Match the Customer Name
List Tax Detail Transactions
Select Tax Details and Related G/L Accounts
Update Account Description by Adding 3rd Segment Description
Update Segment Descriptions from Other Database
Return Opening Balance for Period of Supplied Date
Update Min Order Qty and Average Lead Time on Vendor Item From Text File
List of PM Invoices for Vendors with POs
Select Debit, Credit and Net Change for All Accounts in Date Range
Select All Pending Prepayments
Available Stock for All Items
Item Report
Migrate Vendor Emails from Active Docs to Standard Email Fields
Update Mfg Cost Accounts from Mfg Item Class Setup
PO Commitment Detail
Update Inventory Accounts from Item Class
Create Macro to Delete Items
Update Accounts Payable Distribution on Work Status PM Transactions from Posting Account Setup
Update Item Resource Planning on Item Quantity Master from Text File
SQL View to Return List of Posted Vendor Document Numbers
Update Inventory Distribution on Work Status Purchase Orders from the Item Card
Update Item Engineering File from a Text File
List of Exchange Rates

What should we write about next?

If there is a topic which fits the typical ones of this site, which you would like to see me write about, please use the form, below, to submit your idea.

Your Name

Your Email

Suggested Topic

Suggestion Details

Looking for support or consultancy with Microsoft Dynamics GP?

I no longer work with Microsoft Dynamics GP, but the last company I worked for was ISC Software in the UK; if you’re looking for support or consultancy services with Microsoft Dynamics GP you can contact them here.

Leave a Reply

Your email address will not be published. Required fields are marked *