All Products - General
eBanking Suite for Microsoft Dynamics SL
Project Resource Estimating & Planning (PREP)
Project Work Order
Shop Floor Control w/Scheduling & Capacity Planning
Microsoft Dynamics SL Manufacturing Work Order
All Products - General
Citrix Installation
Discussion: When installing in a Citrix environment, the Citrix server is acting, in many ways, like a LAN client. The normal install is first done on the Microsoft Dynamics SL (DSL) server. And then for the Citrix server - below is a review of the LAN installation steps, but modified as they relate to the Citrix environment.
- Executables - If you install your DSL programs on the Citrix server, then "unzip" the Sandler·Kahne installation executable to the DSL Main folder on each Citrix machine (this will copy the .exes to their own folder, and it also copies reports and some .exes to the Citrix DSL Main folder)
- Database Maintenance (98.290.00) - This does NOT need to be run, as it only updates the SQL (app & system) tables.
- DB Update - It does not really need to be run as it updates the SQL (system) tables. However, since DB Update DOES update the Messages.csv in the DSL Main folder (and this file has the Sandler·Kahne messages), then an updated copy of this file MUST be in each Citrix server's DSL Main folder.
- Delta.mnu - Needs to be updated with the Sandler·Kahne entries on each Citrix server's DSL Main folder.
- Workstation install - needs to be run on each Citrix server machine. It copies .ocx/.dlls to the system folders and registers them on the machine. Some files are copied to the WTSrv\Crystal folder and these files may need to be copied to the WTSrv\System32 folder. In general, on Citrix, it seems that Crystal works best when the contents of the Crystal folder are copied to the System32 folder and/or the user profile\windows folder. You may have to run this install locally on the Citrix machine, not through Remote Administration. As we are not experienced DSL-Citrix implementers please consult with others who are.
- Positive Pay only - If a run-time error 13 type mismatch occurs when creating the positive pay file, then be sure the u2ftext.dll from the WTSrv\Crystal folder has been copied to the WTSrv\System32 folder. (both versions should be the same as the one found in the eBanking\wrkstn folder)
- In general, if Crystal exporting is not working, check (in this order) the SL main folder, the WTSrv\Crystal folder and the WTSrv\System32 folder - Crystal looks for its .dlls in these folders
- If required, use the MODULES utility (originally provided by Seagate) to check which modules are loaded in memory and in particular where the Crystal files - p2sodbc.dll and u2ftext.dll are loading from and their versions. This utility is run while a program has stopped and an error message is displayed. This only applies to DSL versions up thru 5.5. For more information, see the discussion in the Positive Pay section.
- File locations/permissions - Whether creating EFT or Positive Pay files, before they are transmitted to the bank, they are written to a designated location. Therefore, any Citrix user must have full rights (read, write, delete, etc.) to the file locations that have been specified in eBanking Setup.
Back to Top
Component xxx or one of its dependencies not correctly registered: a file is missing or invalid
Problem: During the workstation install of a Sandler·Kahne product, certain components are copied to the local machine and registered. This message appears when these components are not found on the local machine or are not correctly registered.
Resolution: Run the workstation install. Using Windows Explorer, find the WrkStn folder below the Sandler·Kahne folder (for eBanking - eBanking\Wrkstn, for Project Resource Planning & Estimating - RP\WrkStn, for Shop Floor Control - FC\Wrkstn) and execute the workstation install batch file (double-click in Windows Explorer). As the workstation install runs, verify that the files copy and register correctly.
Back to Top
Message was not found in message file
Problem: Messages for all of Microsoft Dynamics SL - DSL (core applications and third party products) are stored in the database and in one .csv file in the DSL main folder (messages.csv). Whenever a DSL update is done, this file is refreshed with only the DSL messages. Third party products (like all Sandler·Kahne products) add their messages to this file when the DB Update process is run. So, if the above message is displayed it indicates that the Sandler·Kahne message is no longer in the messages.csv file. For the correct functioning of all Sandler·Kahne products it is VERY important that our messages are correctly loaded - and that the above problem is resolved immediately.
Resolution: Run the DB Update process (Utility, DB Update) for the Sandler·Kahne product - this will refresh the messages.csv file with the correct messages. Be sure the messages.csv file (in the DSL main folder) is not marked as "read-only", or the update process will not succeed. For more details on running DB Update for our products see the Installation and Release Notes .pdf document.
Back to Top
Transaction Import - How to create control files for SK products
Problem: When trying to create a control macro (Utility, Control Macro Generator - 98.510.00), I can select the SK Software filename OK, but when I try to generate the control macro I get an error message that the file cannot be found.
Resolution: Microsoft Dynamics SL (DSL) knows how to find DSL executables because of the application's first letters and the folder setup (eg. 01* apps are in the GL folder). With third party products, DSL always expects them to be in the DSL main folder (where Parent.exe resides). However, all Sandler*Kahne Software apps are put into their own folders (eBanking, PWO-PW, SFC-FC, PREP-RP, WO Procurement-WP, etc.) and therefore the Control Macro Generator cannot locate the .exe. To solve the problem, simply temporarily copy the desired .exe to the DSL main folder and then use the Generator (e.g. want to import EFT Vendors - move the eBanking\DD25000.exe app to the main folder, or PWO - importing material lists - move the PW\PW26000.exe to the main folder). When done, it will be a good idea to remove the SK app from the DSL main folder.
Note: Importing Customers into eBanking Customer Banking Entry (DD.250.00). Along with putting DD25000.exe in the main folder, also place DD25200.exe there. This signals the Control Macro generator that the Customer Banking Entry "flavor" of the DD.250.00 screen should be used, and the macro is then created to support importing of Customer banking data. This feature is only available in eBanking v8.5.1 or greater.
Back to Top
SK Demo Image - problems within the Virtual Machine
Problem: After creating the Virtual Machine with the Microsoft Dynamics SL (DSL) base image and the SK Differencing Disk you experience some problems within the new image. These might be assertion failures, low memory messages, apps not opening, etc. - anything that does not work as you would expect.
Resolution: When creating the Virtual Machine with the Microsoft Dynamics SL (DSL) base image (.vhd) and the SK Differencing Disk you must use an "untouched" base image (not one bit can have been changed). Equally important is to use the correct version of the "base" image. See the SKSoft_Image-ProductInstall.pdf document used during installation for this information. The above described problem occurs when the base image has been slightly modified and is not in its original form (this can occur by opening the base image and then closing and saving some data). The best (most sure) way to resolve this problem is to copy the "base" image from the Microsoft Dynamics SL CD immediately before building the Virtual Machine. Another technique to insure an "untouched" base image is to mark it as "read-only" when first copying it from the CD.
Back to Top
eBanking Suite for Microsoft Dynamics SL - General
Create and Send Problem with Internet Explorer 8
Problem: IE8 has been installed on a workstation and Create and Send (AP-EFT, AR-EFT, Pos Pay, Wire Transfer Plus) no longer launches IE as it used to. You might get a message that IE cannot be found or if it launches when you close out of the bank website it tries to launch IE again, or locks up the workstation. You may not get the Complete Now/Complete Later dialog.
Resolution: (depends on your Dynamics SL version)
SL 7 (SPs or FP): There are two options: Either upgrade to eBanking v8.7 or greater OR use the "No Upgrade Option" below.
SL 6.x : Use the "No Upgrade Option" below.
No Upgrade Option: Change your communications option (in eBanking Setup and/or Company Paying/Cash Accounts) to use User's Communications. In the "Users Communications" field enter a .bat file that launches IE with your bank's URL, followed by the "pause" command. A sample .bat file can be downloaded here (the.bat file has a .txt extension added so it won't execute. When installing on your system remove the .txt extension and leave the .bat extension). Note that you will need to edit the URL for your bank's website.
Back to Top
Errors sending Emails - Relaying - Error 8
Problem: Emails sent to addresses inside the mail server's domain are being delivered, but those outside are not. This may be displayed in the Event Log as Error 8. The role of the mail server is to accept the AP EFT, AR EFT or Wire Transfer Plus message and see that it gets delivered to the recipient. If the recipient is local (i.e. the same domain as the mail server) the process is all handled internally by the mail server. If the recipient is located outside of your mail server's domain, the mail server will find and contact the recipient's mail server and deliver the message to it. This process is called "relaying". Mostly every mail server on the Internet employs some type of "relay" security. This security prevents spammers from using your mail server as a gateway to get their messages out on the Internet. The side effect of this is that if your mail server does not think that you or your application are authorized to relay mail through it, it will reject your messages.
There are several different methods of employing security on mail servers. Some mail servers will only accept mail from certain IP addresses. Some may require eBanking to authenticate itself by providing a user name and a password before it will allow you to submit mail for non-local delivery. Your mail server administrator should be able to tell you the type of authentication employed. In any event, if your EFT/Wire messages are being rejected by your mail server, you will need to diagnose the problem and take corrective measures so that your server will accept your messages.
Resolution: There are two main methods to resolve the "relaying" problem:
- Mail Server IP Configuration - If your AP/AR EFT or Wire Transfer Plus application will be running on the same IP or group of IP addresses every time, your mail server administrator may be able to configure the mail server to accept and relay all mail from those particular IP addresses (these IP addresses will be those for the client workstations - running eBanking, NOT the Microsoft Dynamics SL database server).
- eBanking Authentication - If your mail server supports Authentication by user name and password, then configure eBanking to use this type of authentication. Authentication is setup in eBanking in the eBanking Setup screen (DD.950.00), AP/AR EFT/Wire Defaults tab, Email Notification tab, E-mail Server tab, ESMTP Authentication frame
Back to Top
Errors sending Emails - Connecting to Mail Server - Error 9
Problem: There is an error in the workstation connecting to your mail server. This may be displayed in the Event Log as Error 9.
Resolutions: The connection with the mail server should be checked. Remember, eBanking email uses SMTP email that originates at the workstation and sends the message to the mail server. Therefore the connection may need to be verified at any workstation that is used to send emails (Create and Send... applications in eBanking). (The MS Dynamics SL application and/or database servers are not involved).
Use TELNET to test the connection - To check the connection to the SMTP mail server using telnet, do the following at the workstation having the problem:
In Windows, click the Start button and select Run…
TELNET mail.domain.com 25
Where:
Mail.domain.com = your mail server
25 = SMTP port
Anti-virus software - check to be sure the local anti-virus software is not setup to block the SMTP port (generally 25).
Back to Top
EFT/Pos Pay/Wire Transfer – Create and Send Files - Crystal Print Engine Error: 507 – Invalid file name
Problem: This error occurs when the Create and Send process attempts to create the output file. This message appears to say that the Crystal report file given is invalid. In fact, what it means is that the Windows logged on user does not have proper security to write to the path identified for the file to be created (as set in eBanking Setup or Company Paying/Cash Account). The error can also occur if the file already exists and is flagged as Read Only.
Resolution: Obtain appropriate security for the logged on user and/or remove the Read Only restriction on the file. A simple test to determine the exact cause of the problem is to use Notepad to create a text file (with the same name you assigned) and then attempt to write it to the output path. The output path to use will either be from eBanking Setup - DD.950.00 (EFT, Wire Transfer or Pos Pay tabs – as appropriate) or Company Paying/Cash Accounts DD.260.00 (if using the option to set these paths by CpnyID, Acct/Sub)
Back to Top
Using INIT mode in eBanking - what can/does it affect?
There are a number of areas in eBanking that respond to Microsoft Dynamics SL's Initialization (Init) mode (a setting on the Option menu on the Microsoft Dynamics SL toolbar - a user needs to have access rights set explicitly for Initialize mode). Here is the list:
- Vendor and Customer Banking Entry (DD.250.00) - Pre-Note Status and Approval Date can be changed.
- Company Paying/Cash Account (DD.260.00) - Pre-Note Status can be changed.Tax Payment Codes (DD.280.00) - Records can be added/edited/deleted.
- File Formats (DD.300.00) - Records can be added/edited/deleted.
- Transaction Types (DD.301.00) - Records can be added/edited/deleted.
- AP-Create and Send File (DD.500.00) - Keep/Delete button is always enabled. Useful for customizing the Keep/Delete form (modifying default email captions).
- AP-Create and Send File (DD.500.00), Pos Pay tab - Prior Periods control is made visible. Any number of prior periods can be entered to send older batches. This is typically used as part of startup procedures in new installations.
- AR-Select Invoices for EFT by Batch (DD.531.00) - Allows changes even if the batch has been Kept.
- AR-Create and Send/Receive File (DD.540.00) - Keep/Delete button is always enabled. Useful for customizing the Keep/Delete form (modifying default email captions).
Back to Top
EFT - AP or AR
EFT - New Company Paying/Cash Account - how to change the Pre-Note Status
Problem: I've created a new Company Paying/Cash Account (DD.260.00) and because it is in a New Pre-Note status I cannot send my ACH file to the bank.
Resolution: There are number of areas in eBanking that respond to Microsoft Dynamics SL's (DSL) Initialization (Init) mode (a setting on the Option menu on the DSL toolbar). This is one of them. When DSL is in Init mode, then the Pre-Note status can be changed directly to Approved Pre-Note. The use of INIT mode also applies to changing the Pre-Note status in Vendor and Customer Banking Entry.
Back to Top
EFT - Pre-Noting was once turned off, how do I now turn it back on?
Problem: At some point Pre-Noting was turned off in eBanking Setup (DD.950.00). Now I want to turn it back on, but when I go to eBanking Setup, the checkbox is no longer visible.
Resolution: When Pre-Noting is turned off, it is assumed that for the current file format (generally US-ACH) it is no longer a requirement (as pre-noting is an optional requirement of NACHA). Turning it off, un-checks the requirement in the US-ACH record of the File Formats table. To make the Pre-Noting options visible again, set Microsoft Dynamics SL in Initialization (Init) mode and go to the File Formats (DD.300.00) application. On the EFT tab, highlight the US-ACH format and put the grid into form view. On the right-side, check the box labeled "PreNotes". Save and exit the screen (remember to turn INIT mode off). Now the Pre-Note checkbox will be visible in eBanking Setup and you can check it to turn on pre-noting within the module.
Back to Top
EFT - Message 24062, Cannot write EFT file at this time,...
Problem: I'm trying to Send an ACH file and this message appears. When ACH files are created, an .ini file is updated (DDSystem.ini) indicating that a file is being sent. It is used so that only one ACH file can be sent to the bank at one time. Once the ACH file has been successfully sent, the flag in this file is cleared, indicating that it is OK to send another file (from the same workstation or another). Sometimes, when the transmission fails, or the Keep/Delete dialog does not appear or is not used, this flag is left "hanging". It also can exist because another person is sending a Payroll Direct Deposit ACH file (it shares this same DDSystem.ini file) or an AP or AR EFT ACH file - and in this case, you should wait until they have finished with their transmission.
Resolution: As the message indicates, just attempting to send the file a second time will clear this flag and let the process continue. If another person is sending an ACH file, then simply wait until they are finished and then proceed with your transmission.
Back to Top
EFT - Message 24063, Error - writing to DDSystem.ini
Problem: When creating an ACH file this message appears. When ACH files are created, this .ini file is updated indicating that a file is being sent. It is used so that only one ACH file is sent to the bank at one time, and it keeps track of an incrementer for the number of ACH files sent to the bank during the day. This file is normally found in the "PR" (Payroll) folder or if no "PR" folder exists, it is found in the "eBanking" folder. This error will occur if the user does not have rights to read and write to this folder\file.
Resolution: If there is a "PR" folder (underneath the Microsoft Dynamics SL main folder), then be sure the user trying to Create and Send has both read and write privileges to this folder\file. If there is no "PR" folder, then check the users privileges for the "eBanking" folder.
Back to Top
EFT – Create and Send Files - Message 24079, Multiple Batches have been selected
Problem: This message is presented when the selection includes both pre-note vendors as well as batch(es). Pre-notes are sent with the Company Paying/Cash Account which is assigned to the default Checking Account and Subaccount on the Account Information tab of the AP Setup screen. The message means that either the Account/Subaccount has not been defined for the current company (in Company Paying/Cash Accounts - DD.260.00) or that the Company Paying/Cash Account identified for the current company is not the same as that of the selected batch(es).
Resolution: It is probably easiest to process the selected batches or the pre-notes individually by selecting Selected Batches Only or Pre-Notes Only. Alternatively, the error will not occur when running Create and Send when logged into a company for which the Company Paying Account for the Account/Subaccount has been defined.
Back to Top
AP Electronic Funds Transfer
Positive Pay
Positive Pay - Error creating file, or Error 999, Operation not yet implemented, Out of memory
Problem: When Crystal is creating the Positive Pay file an error occurs - typically one of the above. However, it might come in a different flavor.
Resolution: There are two main causes for this error - 1) Outdated, misplaced or mismatched .dlls, or 2) the Positive Pay Crystal Report (.rpt) has an error in a formula. The DLL problem is generally caused when another application has installed Crystal or a much older version of Microsoft Dynamics SL had previously been installed (4.21 or earlier).
1) DLL problem - (p2sodbc.dll is not used and the windows\crystal is not used in Crystal 10 or greater) check for the existence of p2sodbc.dll in the windows (or winnt)\system32 folder and/or in the windows\crystal folder. The one copy (there should not be two) should have a version of 8.6.xxx If there are two copies, then rename the one in the windows\crystal folder to p2sodbc.old (so it won't be used), and be sure the one in the windows\system32 folder has a version of 8.6.xxx. Also check for a u2ftext.dll (this .dll provides for exporting data from Crystal to a text file). There should only be one copy of this file - and it should be in the windows\crystal folder and have a version of 8.0.0.27 (Please note that this will likely be older than the one being replaced, but it is the only one that produces an error-free Positive Pay file). This file is updated by running the eBanking (or APEFT for versions prior to eBanking 6.0) workstation install. To run the workstation install, execute the WrkStn_Install.bat located in the eBanking\wrkstn folder (this copies the correct version of u2ftext.dll to the windows\crystal folder (or winnt).
If the above procedure does not solve the problem, and you still get an error when running the Positive Pay - Create and Send, then, while the error message is still on the screen run the MODULES utility (originally provided by Seagate) to determine the location and version of the p2sodbc.dll and u2ftext.dll modules. Download this utility from the above link and execute it - then use File | New List | Memory modules to load into this app the currently loaded memory modules. Then select All | All Processes, and go to the View menu option and select Details. Now locate the two above mentioned .dlls and determine what version and where they are located (p2sodbc.dll - should be 8.6.xxx and windows\system32, u2ftext.dll - should be 8.0.0.27 and windows\crystal). More than likely getting these .dlls corrected will solve the problem.
2) Error in Positive Pay file. If a positive pay Crystal report has been created or modified and a string has been created that is quite a bit longer than what the file requires (eg. 150 characters or more), then we've found that by reducing the length of the string to the required length (generally 80 characters, but may vary bank to bank), this error is resolved. (For example, in an early version of the supplied DDPP-PosPay-1.rpt, a "Space(200)" function was used - it pads the string, and then uses the "Left" function to shorten it again. Using this "Space(200)" function can cause this error - to fix this, simply change this to "Space(80)" or some shorter string).
We've found that one possible cause of this error is if strings are not fully padded before truncating:
right("0000" + trim(ChkNbr), 10) - this would cause error
right("0000000000" + trim(ChkNbr), 10) - this would not cause errorl
Another:
{Field} + Space(10) [1 to Len], Where Len = 0 (this 0 value would cause the error)
Back to Top
Positive Pay - File has an extra leading space
Problem: When Crystal is creating the Positive Pay file, the file has an extra leading space and extra space padding at the end of a line is removed.
Resolution: This problem has been permanently fixed in eBanking v6.1.0 or greater - and should never occur (we've added additional processing to correctly remove the space and pad the files). For earlier versions of eBanking: Positive Pay files are created using Crystal Reports. Crystal uses the c:\<windows or winnt>\CRYSTAL\u2ftext.dll file to format and create exported text files. When the Positive Pay file has this leading space, then a "bad" version of this u2ftext.dll file is being used (note that there are some (very few) Positive Pay files that are specified with a leading space). To correct the problem, simply re-run the workstation install program. This process will copy a corrected version of the u2ftext.dll to the CRYSTAL folder.
- In a Terminal Services environment, the corrected version of the u2ftext.dll will need to be copied to the "Documents and Settings\<Username>\Windows\Crystal" folder. Also check the SL main folder (this would be non-standard) - any Crystal .dlls that might have been copied there will be accessed first.
- In a Citrix environment, it is required that all the files in the "Windows\Crystal" folder be copied to the "Windows\System32" folder - and this would include the corrected version of the u2ftext.dll. Also check the SL main folder (this would be non-standard) - any Crystal .dlls that might have been copied there will be accessed first.
Back to Top
AR Electronic Funds Transfer
LockBox Processing
Project Resource Estimating & Planning (PREP)
Project Work Order:
Sample TI Control Macro, Data File
Below is an example of a TI (Transaction Import) data and intelligent control macro for Project Work Order Entry (PW.260.00). It will update the task processing stage to "Plan" and then add a material list to the task. In this example two tasks (AD00000 and AD00003) are both being updated. As with PWO Entry, It is assumed that the Project/Task already exists (having been created by another TI or via Project Maintenance). The data elements for the Task are: Task ID, Processing stage. The data elements shown for the material list are: Inventory item, Site, Warehouse Bin Location, WO Qty. Required.
Data File
WorkOrder,EV123001
"Task,Change",AD00000,P
MatlReq,0RCRANK,200,00,1
MatlReq,0RBOLT,200,00,2
MatlReq,0RCHAIN,200,00,3
WorkOrder,MF990000
"Task,Change",AD00003,P
MatlReq,0RCRANK,200,00,1
MatlReq,0RBOLT,200,00,2
MatlReq,0RCHAIN,200,00,3
MatlReq,0RETRO24,200,00,4
Control Macro
'$include: "bsl.dh"
'PW260 Control Macro
Sub ProcessImportLine( LevelNumber%, Retval% )
select Case LevelNumber
case TI_Start
call AliasConstant( "Level0", "WorkOrder" )
call AliasConstant( "Level1", "Task" )
call AliasConstant( "Level2", "MatlReq" )
call AliasConstant( "Level3", "Routing" )
call AliasConstant( "Level4", "QtyDetails" )
call AliasConstant( "Level5", "LotSerial" )
call AliasConstant( "Level6", "AmtChanges" )
case 0 ' 0 of 6 WOHeader
'Level 0 if of Type N
' cHWONbr is a key field for level 0
' Field mask is UU-WWWWWW
serr = SetObjectValue( "cHWONbr", ImportField(1) )
case 1 ' 1 of 6 Tasks
'Level 1 if of Type D
' cTTaskID is a key field for level 1
' cTProcStage is an Combo Box
' Values are ;No Matl/Routing,P;Plan,F;Firm,R;Released,O;Ops-closed,C;Fin-closed
Dim Task As String
Task = trim(ImportField(1))
' Locate the correct Task line and Update the Proc Stage
serr1 = Edit_First(1)
Do While serr1 <> NotFound
If Trim(GetObjectValue("cTTaskID")) = Task then
serr = SetObjectValue( "cTProcStage", ImportField(2) )
Exit Do
End If
serr1 = Edit_Next(1)
Loop
' Open Material List screen
serr = SetObjectValue( "cmdBtn(0)", "PRESS" )
case 2 ' 2 of 6 Material List
'Level 2 if of Type D
' intMRSeqNbr is a key field for level 2
' NOTE -- This field is a required field
' SKIP Sequence Number
' serr = SetObjectValue( "intMRSeqNbr", ImportField(1) )
' Field mask is UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
' NOTE -- This field is a required field
serr = SetObjectValue( "txtMRComponent", ImportField(1) )
' Field mask is UUUUUUUUUU
' NOTE -- This field is a required field
serr = SetObjectValue( "txtMRSiteID", ImportField(2) )
' Field mask is UUUUUUUUUU
' NOTE -- This field is a required field
serr = SetObjectValue( "txtMRWhseLoc", ImportField(3) )
' SKIP Qty to Issue
' serr = SetObjectValue( "dblMRQtyToIssue", ImportField(5) )
serr = SetObjectValue( "dblMRWOQtyReq", ImportField(4) )
case 3 ' 3 of 6 Routing
case 4 ' 4 of 6 Quantity Details
case 5 ' 5 of 6 Lot/Serial
case 6 ' 6 of 6 Budget Updates
case TI_Finish
' Close Material List screen
serr = SetObjectValue( "cmdMR(4)", "PRESS" )
End Select
End Sub
Back to Top
Shop Floor Control:
Microsoft Dynamics SL Manufacturing Work Work Order:
Sample TI Control Macro, Data File
Below is an example of a TI (Transaction Import) data and intelligent control macro for Work Order Entry (12.250.00). It will add a WO using the default Build To type, and build a Bill of Material item that will auto-populate the material list. The data elements for the Work Order: WO ID, Part to Build. The data elements shown for the Build To target line is: Quantity to Build (it is a "change" txn, since the first build to line is defaulted automatically). The material list and routing will be auto-populated as the Quantity to Build is added. Since there are so few data elements, many of the controls in the control macro have been commented out.
Data File
WorkOrder,WO000015,0RCRANK-ASSMBLY
"BuildTo,Change",10
WorkOrder,WO000016,0RETRO24
"BuildTo,Change",30
Control Macro
'$include: "bsl.dh"
'12250 Control Macro
Sub ProcessImportLine( LevelNumber%, Retval% )
select Case LevelNumber
case TI_Start
call AliasConstant( "Level0", "WorkOrder" )
call AliasConstant( "Level2", "BuildTo" )
call AliasConstant( "Level3", "MatlReq" )
call AliasConstant( "Level4", "Routing" )
call AliasConstant( "Level5", "QtyDetails" )
call AliasConstant( "Level6", "LotSerial" )
call AliasConstant( "Level7", "WORequest" )
case 0 ' 0 of 7
'Level 0 if of Type N
' txtWONbr is a key field for level 0
' Field mask is UU-WWWWWW
' NOTE -- This field is a required field
serr = SetObjectValue( "txtWONbr", ImportField(1) )
' Field mask is UUUUUUUUUU
' NOTE -- This field is a required field
' serr = SetObjectValue( "txtCpnyID", ImportField(2) )
' cboProcStage is an Combo Box
' Values are P;Plan,F;Firm,R;Released,O;Ops-closed,C;Fin-closed
' NOTE -- This field is a required field
' serr = SetObjectValue( "cboProcStage", ImportField(3) )
' cboStatus is an Combo Box
' Values are A;Active,H;Hold,P;Purge
' serr = SetObjectValue( "cboStatus", ImportField(4) )
' ck3WOType is an Check Box
' Values are R for ON and M for OFF
' Values are CHECKED for ON and UNCHECKED for OFF
' serr = SetObjectValue( "ck3WOType", ImportField(5) )
' Field mask is UUUUUUUUUUUUUUUUUUUU
' NOTE -- This field is a required field
' serr = SetObjectValue( "txtParttoBuild", ImportField(6) )
' Changed this to ImportField(2)
serr = SetObjectValue( "txtParttoBuild", ImportField(2) )
' Field mask is UUUUUUUUUU
' NOTE -- This field is a required field
' serr = SetObjectValue( "txtSiteID", ImportField(7) )
' cboCompDfltSite is an Combo Box
' Values are W;Work Order,C;Component
' NOTE -- This field is a required field
' serr = SetObjectValue( "cboCompDfltSite", ImportField(8) )
' dtePlanStart is a Date Field Type
' NOTE -- This field is a required field
' serr = SetObjectValue( "dtePlanStart", ImportField(9) )
' dtePlanEnd is a Date Field Type
' serr = SetObjectValue( "dtePlanEnd", ImportField(10) )
'Currently Disabled dteActualStart
'Currently Disabled dteActualEnd
'Currently Disabled dblBTQtyOutToRework
'Currently Disabled dblQtyOrig
'Currently Disabled dblQtyCurrent
'Currently Disabled dblQtyQCHold
'Currently Disabled dblQtyReWork
'Currently Disabled dblQtyReworkComp
'Currently Disabled dblQtyScrap
'Currently Disabled dblQtyComplete
'Currently Disabled dblQtyRemaining
' optCostComp(0) is an Option Button
' Value is A to select button with caption "Actual Cost"
' optCostComp(1) is an Option Button
' Value is W to select button with caption "WO Standard Cost"
' optCostComp(2) is an Option Button
' Value is S to select button with caption "Standard Cost"
' serr = SetObjectValue( "optCostComp", ImportField(11) )
' optCAWoStd(0) is an Option Button
' Value is L to select button with caption "Last"
' optCAWoStd(1) is an Option Button
' Value is V to select button with caption "Average"
' optCAWoStd(2) is an Option Button
' Value is E to select button with caption "Estimate"
' optCAWoStd(3) is an Option Button
' Value is S to select button with caption "Standard"
' serr = SetObjectValue( "optCAWoStd", ImportField(12) )
'Currently Disabled dblCostWOComp
'Currently Disabled dblCostWOCompQty
'Currently Disabled dblCostWOCompExt
'Currently Disabled dblCostWIP
'Currently Disabled dblCostQtyWIP
'Currently Disabled dblCostWIPExt
'Currently Disabled dblCostStdOrig
'Currently Disabled dblCostStdOrigQty
'Currently Disabled dblCostStdOrigExt
'Currently Disabled dblCostStdLast
'Currently Disabled dblCostStdLastQty
'Currently Disabled dblCostStdLastExt
'Currently Disabled dblCostStdCurr
'Currently Disabled dblCostStdCurrQty
'Currently Disabled dblCostStdCurrExt
'Currently Disabled dblCostLast
'Currently Disabled dblCostLastQty
'Currently Disabled dblCostLastExt
'Currently Disabled dblCostAvg
'Currently Disabled dblCostAvgQty
'Currently Disabled dblCostAvgExt
'Currently Disabled dblCostEstimate
'Currently Disabled dblCostEstimateQty
'Currently Disabled dblCostEstimateExt
' serr = SetObjectValue( "dblCostStdWO", ImportField(13) )
'Currently Disabled dblCostStdWOQty
'Currently Disabled dblCostStdWOExt
'Currently Disabled dblBMStdLotSize
'Currently Disabled txtECRevision
'Currently Disabled txtECEngChgOrder
'Currently Disabled txtECEngDwgNbr
'Currently Disabled dteECStart
'Currently Disabled dteECStop
'Currently Disabled txtECSupersedes
'Currently Disabled txtECSupersededBy
' ck3FCWipIntegrity is an Check Box
' Values are 1 for ON and 0 for OFF
' Values are CHECKED for ON and UNCHECKED for OFF
' serr = SetObjectValue( "ck3FCWipIntegrity", ImportField(14) )
' ck3FCBackflushMtl is an Check Box
' Values are Y for ON and N for OFF
' Values are CHECKED for ON and UNCHECKED for OFF
' serr = SetObjectValue( "ck3FCBackflushMtl", ImportField(15) )
' ck3FCBackflushLbr is an Check Box
' Values are Y for ON and N for OFF
' Values are CHECKED for ON and UNCHECKED for OFF
' serr = SetObjectValue( "ck3FCBackflushLbr", ImportField(16) )
' optFCScheduling(0) is an Option Button
' Value is N to select button with caption "Do not reschedule"
' optFCScheduling(1) is an Option Button
' Value is F to select button with caption "Forward Schedule"
' optFCScheduling(2) is an Option Button
' Value is B to select button with caption "Backward Schedule"
' serr = SetObjectValue( "optFCScheduling", ImportField(17) )
' optFCSchedule(0) is an Option Button
' Value is N to select button with caption "Do not reschedule"
' optFCSchedule(1) is an Option Button
' Value is W to select button with caption "Work Order Start Date"
' optFCSchedule(2) is an Option Button
' Value is R to select button with caption "Routing Step Start Date"
' serr = SetObjectValue( "optFCSchedule", ImportField(18) )
'Currently Disabled ck3FCWOComplete
' ck3FCAdjustQtyForYield is an Check Box
' Values are 1 for ON and 0 for OFF
' Values are CHECKED for ON and UNCHECKED for OFF
' serr = SetObjectValue( "ck3FCAdjustQtyForYield", ImportField(19) )
'Currently Disabled intFCLastRoutingStep
' Field mask is WW-999-WW-99-WW-9
' NOTE -- This field is a required field
' serr = SetObjectValue( "txtProjGL_SubAcct", ImportField(20) )
' Field mask is UUUUUUUUUUUUUUUU
' serr = SetObjectValue( "txtMatlBudgAcct", ImportField(21) )
' ck3UpdMatlEstimate is an Check Box
' Values are Y for ON and N for OFF
' Values are CHECKED for ON and UNCHECKED for OFF
' serr = SetObjectValue( "ck3UpdMatlEstimate", ImportField(22) )
' Field mask is UUUUUUUUUUUUUUUU
' serr = SetObjectValue( "txtLaborBudgAcct", ImportField(23) )
' ck3UpdLaborEstimate is an Check Box
' Values are Y for ON and N for OFF
' Values are CHECKED for ON and UNCHECKED for OFF
' serr = SetObjectValue( "ck3UpdLaborEstimate", ImportField(24) )
'Currently Disabled cboProjStatus
' Field mask is XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
' NOTE -- This field is a required field
' serr = SetObjectValue( "txtWODescr", ImportField(25) )
' Field mask is XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
' NOTE -- This field is a required field
' serr = SetObjectValue( "txtProjectDescr", ImportField(26) )
' Field mask is UUUU
' serr = SetObjectValue( "txtAllocMethodCode", ImportField(27) )
' Field mask is UUUU
' serr = SetObjectValue( "txtRateTableID", ImportField(28) )
' serr = SetObjectValue( "intPriority", ImportField(29) )
'Currently Disabled txtMRWONbr
'Currently Disabled cboMRWOType
'Currently Disabled cboMRProcStage
' Field mask is 99-9999
' serr = SetObjectValue( "txtMRPerPost", ImportField(30) )
' serr = SetObjectValue( "dblMRIssueToBuild", ImportField(31) )
'Currently Disabled dblMREstimateCstTotal
'Currently Disabled txtRWONbr
'Currently Disabled cboRWOType
'Currently Disabled cboRProcStage
'Currently Disabled dblREstimateCstTotal
' Field mask is UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
' serr = SetObjectValue( "txtMRKitBomInvtID", ImportField(32) )
' Field mask is UUUUUUUUUU
' serr = SetObjectValue( "txtMRKitBOMSiteID", ImportField(33) )
' serr = SetObjectValue( "dblMRKBQty", ImportField(34) )
' ck3MRKBCopyRouting is an Check Box
' Values are Y for ON and N for OFF
' Values are CHECKED for ON and UNCHECKED for OFF
' serr = SetObjectValue( "ck3MRKBCopyRouting", ImportField(35) )
' optMRKBPos(0) is an Option Button
' Value is C to select button with caption "Current"
' optMRKBPos(1) is an Option Button
' Value is E to select button with caption "End of List"
' serr = SetObjectValue( "optMRKBPos", ImportField(36) )
'Currently Disabled dblQDQtyWOReqd
'Currently Disabled dblQDQtyMaterialIn
'Currently Disabled dblQDQtyMaterialOut
'Currently Disabled dblQDQtyRemaining
' optQDIncDec(0) is an Option Button
' Value is 0 to select button with caption " Issue Now:"
' optQDIncDec(1) is an Option Button
' Value is 1 to select button with caption "- Issued:"
' optQDIncDec(2) is an Option Button
' Value is 2 to select button with caption "- Auto-issued from child work orders:"
' optQDIncDec(3) is an Option Button
' Value is 3 to select button with caption "- Auto-issued from purchase orders:"
' optQDIncDec(4) is an Option Button
' Value is 4 to select button with caption "- Transferred in from work orders:"
' optQDIncDec(5) is an Option Button
' Value is 5 to select button with caption "+ Scrapped and rellocated:"
' optQDIncDec(6) is an Option Button
' Value is 6 to select button with caption "+ Transferred out, reallocated:"
' optQDIncDec(7) is an Option Button
' Value is 7 to select button with caption " Scrapped and not reallocated:"
' optQDIncDec(8) is an Option Button
' Value is 8 to select button with caption " Transferred out, not reallocated:"
' serr = SetObjectValue( "optQDIncDec", ImportField(37) )
'Currently Disabled dblQDQtyToIssue
'Currently Disabled dblQDQtyIssuedToDate
'Currently Disabled dblQDQtyAutoIssuedWO
'Currently Disabled dblQDQtyAutoIssuedPO
'Currently Disabled dblQDQtyTransferInWO
'Currently Disabled dblQDQtyScrapReAlloc
'Currently Disabled dblQDQtyTransferOutRealloc
'Currently Disabled dblQDQtyScrapNoRealloc
'Currently Disabled dblQDQtyTransferOutNoRealloc
'Currently Disabled dblLSQtyRemaining
' Field mask is MMMMMMMMMMMMMMM
' serr = SetObjectValue( "txtWOROrdNbrFilter", ImportField(38) )
' Field mask is UUUUUUUUUUUU
' serr = SetObjectValue( "txtLSCNFxdVal", ImportField(39) )
' Field mask is WWWWWWWWWWWWWWWWWWWWWWWWW
' serr = SetObjectValue( "txtLSCNNumVal", ImportField(40) )
'Currently Disabled txtLSCNNextLotSerNbr
case 2 ' 2 of 7
'Level 2 if of Type D
' cboBTBuildToType is an Combo Box
' Values are STK;Stock,ORD;Sales Order,MWO;Mfg. Work Order,PWO;Project Work Order,PRJ;Project/Task
' NOTE -- This field is a required field
' serr = SetObjectValue( "cboBTBuildToType", ImportField(1) )
'Currently Disabled txtBTInvtID
' Field mask is UUUUUUUUUU
' NOTE -- This field is a required field
' serr = SetObjectValue( "txtBTSiteID", ImportField(2) )
' Field mask is UUUUUUUUUU
' NOTE -- This field is a required field
' serr = SetObjectValue( "txtBTWhseLoc", ImportField(3) )
' serr = SetObjectValue( "dblBTQtyCurrent", ImportField(4) )
' Changed this to ImportField(2)
serr = SetObjectValue( "dblBTQtyCurrent", ImportField(1) )
'Currently Disabled dblBTQtyRemaining
'Currently Disabled dblBTQtyCompleteOps
' Field mask is UUUUUUUUUU
' serr = SetObjectValue( "txtBTCustID", ImportField(5) )
' Field mask is XXXXXXXXXXXXXXX
' serr = SetObjectValue( "txtBTOrdNbr", ImportField(6) )
'Currently Disabled dteBTSOPickDate
'Currently Disabled intBTSOSchedules
'Currently Disabled txtBTSOHold
' serr = SetObjectValue( "dblBTQtyQCHold", ImportField(7) )
'Currently Disabled dblBTQtyComplete
'Currently Disabled dblBTQtyReDirect
'Currently Disabled txtBTSpecificCostID
'Currently Disabled txtBTWO
'Currently Disabled txtBTProject
'Currently Disabled txtBTTask
'Currently Disabled txtBTBuildToLineRef
' Field mask is XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
' serr = SetObjectValue( "txtBTChgReason", ImportField(8) )
'Currently Disabled txtBTTargetDescr
'Currently Disabled dblBTQtyScrap
case 3 ' 3 of 7
'Level 3 if of Type D
' intMRSeqNbr is a key field for level 3
' NOTE -- This field is a required field
' serr = SetObjectValue( "intMRSeqNbr", ImportField(1) )
' Field mask is UUUUUUUUUUUUUUUUUUUU
' NOTE -- This field is a required field
' serr = SetObjectValue( "txtMRComponent", ImportField(2) )
' Field mask is UUUUUUUUUU
' serr = SetObjectValue( "txtMRSiteID", ImportField(3) )
' Field mask is UUUUUUUUUU
' NOTE -- This field is a required field
' serr = SetObjectValue( "txtMRWhseLoc", ImportField(4) )
' serr = SetObjectValue( "dblMRQtyToIssue", ImportField(5) )
' serr = SetObjectValue( "dblMRWOQtyReq", ImportField(6) )
'Currently Disabled dblMRQtyMaterialIn
'Currently Disabled dblMRQtyMaterialOut
'Currently Disabled dblMRQtyRemaining
'Currently Disabled txtMRSpecificCostID
' cboMRStockUsage is an Combo Box
' Values are N;Normal,B;Build Only,S;Stock Only, ;(None),X;Non-Stock
' serr = SetObjectValue( "cboMRStockUsage", ImportField(7) )
'Currently Disabled txtMRStockUOM
'Currently Disabled dblMRStdQty
' dteMRDateReq is a Date Field Type
' serr = SetObjectValue( "dteMRDateReq", ImportField(8) )
'Currently Disabled dblMRUnitCost
' Field mask is XXXXX
' serr = SetObjectValue( "txtMRRtgStep", ImportField(9) )
' Field mask is XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
' serr = SetObjectValue( "txtMRComment", ImportField(10) )
'Currently Disabled cboMRCompAdded
'Currently Disabled dblMRQtyAvailAtSite
'Currently Disabled dblMRQtyAvailAllSites
'Currently Disabled dblMRQtyOnHandWhseLoc
'Currently Disabled dblMRQtyOnHandAllSites
'Currently Disabled dblMREstimateCst
case 4 ' 4 of 7
'Level 4 if of Type D
' intRRoutingStep is a key field for level 4
' NOTE -- This field is a required field
' serr = SetObjectValue( "intRRoutingStep", ImportField(1) )
' Field mask is UUUUUUUUUU
' NOTE -- This field is a required field
' serr = SetObjectValue( "txtROperationID", ImportField(2) )
' Field mask is UUUUUUUUUU
' NOTE -- This field is a required field
' serr = SetObjectValue( "txtRWorkCenter", ImportField(3) )
'Currently Disabled cboRType
' dteRPlanStart is a Date Field Type
' serr = SetObjectValue( "dteRPlanStart", ImportField(4) )
' serr = SetObjectValue( "dblRActualHours", ImportField(5) )
' serr = SetObjectValue( "dblRLaborHrsPerUnit", ImportField(6) )
' serr = SetObjectValue( "dblRMachHrsPerUnit", ImportField(7) )
' serr = SetObjectValue( "dblRStepHours", ImportField(8) )
' serr = SetObjectValue( "dblREstimateHours", ImportField(9) )
' Field mask is UUUUUUUUUU
' NOTE -- This field is a required field
' serr = SetObjectValue( "txtRLaborClass", ImportField(10) )
' serr = SetObjectValue( "dblRStdRate", ImportField(11) )
' serr = SetObjectValue( "dblREstimateCst", ImportField(12) )
' cRBackflushMaterial is an Check Box
' Values are 1 for ON and 0 for OFF
' Values are CHECKED for ON and UNCHECKED for OFF
' serr = SetObjectValue( "cRBackflushMaterial", ImportField(13) )
' cRBackflushLabor is an Check Box
' Values are 1 for ON and 0 for OFF
' Values are CHECKED for ON and UNCHECKED for OFF
' serr = SetObjectValue( "cRBackflushLabor", ImportField(14) )
case 5 ' 5 of 7
'Level 5 if of Type D
' txtQDCol1 is a key field for level 5
'Currently Disabled txtQDCol1
'Currently Disabled txtQDCol2
'Currently Disabled txtQDCol3
'Currently Disabled dblQDTxnsCol4
'Currently Disabled txtQDCol5
case 6 ' 6 of 7
'Level 6 if of Type D
' txtLSLotSerNbr is a key field for level 6
'Currently Disabled txtLSLotSerNbr
'Currently Disabled dblLSQty
'Currently Disabled txtLSBatNbr
'Currently Disabled txtLSMfgrLotSerNbr
'Currently Disabled dteLSExpDate
'Currently Disabled txtLSShipContCode
case 7 ' 7 of 7
'Level 7 if of Type D
' ck3WORSelect is an Check Box
' Values are Y for ON and N for OFF
' Values are CHECKED for ON and UNCHECKED for OFF
' serr = SetObjectValue( "ck3WORSelect", ImportField(1) )
'Currently Disabled txtWORInvtID
'Currently Disabled dblWORSalesQty
'Currently Disabled txtWORSalesUOM
'Currently Disabled dblWORMfgQtyToBuild
'Currently Disabled txtWORStkUOM
'Currently Disabled dteWORPickDate
'Currently Disabled dteWORRequestDate
'Currently Disabled txtWORSiteID
'Currently Disabled txtWORCustID
'Currently Disabled txtWOROrdNbr
'Currently Disabled txtWORLineRef
'Currently Disabled txtWORCpnyID
'Currently Disabled ck3WORCreditHold
'Currently Disabled dteWORCreditHoldDate
'Currently Disabled intWORSchedLines
case TI_Finish
End Select
End Sub
' The following shows the correct syntax to
' PRESS a button
' These object names are specific to this screen.
' Button object name cmdQDOK, Caption &OK
' serr = SetObjectValue( "cmdQDOK", "PRESS" )
' Button object name cmdLSCreateNewNumbers, Caption Create &New Numbers...
' serr = SetObjectValue( "cmdLSCreateNewNumbers", "PRESS" )
' Button object name cmdLSCancel, Caption &Cancel
' serr = SetObjectValue( "cmdLSCancel", "PRESS" )
' Button object name cmdQDBatchDetails, Caption &Batch Details...
' serr = SetObjectValue( "cmdQDBatchDetails", "PRESS" )
' Button object name cmdWOR, Caption &OK
' serr = SetObjectValue( "cmdWOR", "PRESS" )
' Button object name cmdWOR, Caption &View Order...
' serr = SetObjectValue( "cmdWOR", "PRESS" )
' Button object name cmdWOR, Caption &Select All
' serr = SetObjectValue( "cmdWOR", "PRESS" )
' Button object name cmdWOR, Caption &Clear All
' serr = SetObjectValue( "cmdWOR", "PRESS" )
' Button object name cmdInfo, Caption &Info...
' serr = SetObjectValue( "cmdInfo", "PRESS" )
' Button object name Command1, Caption Queue
' serr = SetObjectValue( "Command1", "PRESS" )
' Button object name Command2, Caption Plan
' serr = SetObjectValue( "Command2", "PRESS" )
' Button object name cmdFindItemPTB, Caption
' serr = SetObjectValue( "cmdFindItemPTB", "PRESS" )
' Button object name cmdFlexPiece, Caption
' serr = SetObjectValue( "cmdFlexPiece", "PRESS" )
' Button object name cmdMR, Caption &Grid Pop
' serr = SetObjectValue( "cmdMR", "PRESS" )
' Button object name cmdMR, Caption &Renumber Seq
' serr = SetObjectValue( "cmdMR", "PRESS" )
' Button object name cmdMR, Caption &Kit/Bom...
' serr = SetObjectValue( "cmdMR", "PRESS" )
' Button object name cmdMR, Caption &Issue Material
' serr = SetObjectValue( "cmdMR", "PRESS" )
' Button object name cmdMR, Caption &OK
' serr = SetObjectValue( "cmdMR", "PRESS" )
' Button object name cmdMRInfo, Caption Info...
' serr = SetObjectValue( "cmdMRInfo", "PRESS" )
' Button object name cmdMR, Caption &LS
' serr = SetObjectValue( "cmdMR", "PRESS" )
' Button object name cmdMR, Caption &Material Check
' serr = SetObjectValue( "cmdMR", "PRESS" )
' Button object name cmdFindItemKB, Caption
' serr = SetObjectValue( "cmdFindItemKB", "PRESS" )
' Button object name cmdMRKitBOM, Caption &Insert
' serr = SetObjectValue( "cmdMRKitBOM", "PRESS" )
' Button object name cmdMRKitBOM, Caption &Cancel
' serr = SetObjectValue( "cmdMRKitBOM", "PRESS" )
' Button object name cmdLSCNOK, Caption &OK
' serr = SetObjectValue( "cmdLSCNOK", "PRESS" )
' Button object name cmdLSCNCancel, Caption &Cancel
' serr = SetObjectValue( "cmdLSCNCancel", "PRESS" )
' Button object name cmdLSDebugOK, Caption &OK
' serr = SetObjectValue( "cmdLSDebugOK", "PRESS" )
' Button object name cmdR, Caption &Renumber Seq
' serr = SetObjectValue( "cmdR", "PRESS" )
' Button object name cmdR, Caption &Copy Routing...
' serr = SetObjectValue( "cmdR", "PRESS" )
' Button object name cmdR, Caption &OK
' serr = SetObjectValue( "cmdR", "PRESS" )
' Button object name cmdRInfo, Caption Info...
' serr = SetObjectValue( "cmdRInfo", "PRESS" )
Back to Top |