In my testing leaving the value as "S" would allow it to work without error. The eCart object sets the weight unit as "oz", "lb", or "kg" all without the "s". The code that is in the shipping quote server behavior should account for this with the following code:
$Shipping_PackageArray[$Shipping_PackageIndex]["WeightUnits"] = "".strtoupper($eCart1->WeightUnits)."S" ."";
This code uses the eCart WeightUnits setting and adds the "S" to the end of it. If adding in the other values to this code gets it to work for you then it seems like a valid way of doing it, I'm just not sure how that is working for you, unless your code differs from the code above, or your carts WeightUnits setting is not "oz" or "lb".