When QlikView stores data in a field it references the first stored value for each repetition of this value, using the format of the first one.
QlikView will interpret all these values as 1, but it will show as 001 in the front end.
In your case you have loaded a number 0021 in the serial no field before you get to the 21 which is why it's represented as 0021.
If you need to have the 0021 represented as is, I would suggest using Text() around the field name to load the values as different values.
Otherwise I would suggest stripping leading zeros from the serial no values.
Many thank for that information, wouldn't have found that in 100 years.
I guess it is an inbuilt "feature".
The base data field is character (varchar) so the data needs to be represented as text in its original format so the TEXT() solution worked great.
Now I am off to fix this on the rest of my reports.