Weird Duplicate PO Issue

Microsoft Dynamics GPThis is going to be a more wordy post than usual as I have no screenshots of the issue or resolution.

When I returned to the office on Wednesday after being away at reIMAGINE for a few days and then being on holiday in Kentucky, I was asked for assistance by Jason on our service desk.

A client had logged an issue with a PO; lets say the PO Number was PO34791 for the sake of argument (I don’t actually recall what it was).

When the PO Documents Enquiry (Inquiry) window was used, the PO looked fine; the creditor (vendor) was the correct one and all other values were okay and the PO showed as received.

However, the PO was also showing in PO Entry with a different creditor id.

Jason showed me two SQL queries;

  • The first, was a select on POP10100 WHERE PONUMBER = ‘PO34791’ and showed the correct PO.
  • The second, was a select on POP10100 WHERE VENDORID = ‘1ST001’ AND DOCAMNT = ‘791.50’ and this showed the other PO which the PO Entry window was loading. This query could be run for any information unique to the PO and it would return this PO instead of the correct one; ibncluding the PONUMBER field in the select would cause it to return nothing.

All very unusual.

I ran another query against POP10100 WHERE PONUMBER LIKE ‘PO34791%’ and this returned two lines of information both showing a PONUMBER field of PO34791.

in SQL Server Management Studio I dragged the values from the recordset into the query window to compare them; one was shorter than the other. The cause was that one of them (the one for the Vendor ID 1st001) contained a control character which is why it appeared shorter.

We’re not sure what the user had done, but the second, incorrect, PO was entered with a PO Number containing a control character; they’d been able to successfully enter the PO, but GP was then becoming confused about which one should be loaded when the user typed, or did a lookup, for PO34791.

We copied the live company into test and deleted the second PO (for vendor 1st001) from all tables (it had lines and tax and so on) and then verified the data with a Check Links and Reconcile and asked the user to double check.

This process would then be repeated on live with the PO being re-keyed (it was only a single line).