Daniel - $FieldNo is not unique across all the QV tables in your model. For example, if you have more than one table - then $FieldNo starts from 1 instead of starting from last number from previous table. This is the reason why are getting the dash "-" which is the NULL value. So, if there are two field names with same $FieldNo then FirstSortedValue will return the NULL value. I think - this is what is happening. To prove, this is exactly what is happening - create a ListBox with $Table and select only one table then try to check your expression.
Also, I've made a video tutorial on FirstSortedValue on my blog: http://qlikshare.com/tag/firstsortedvalue/
Hope this makes sense.