Separate the postive and negative values into separate fields. Bookkeepers were doing that long before computers by setting up ledgers with debit and credit columns.
If you don't want to restructure your database and layouts to separate the data fields, you can add calculation fields that separate the values behind the scenes.
Defind a calc, cPositiveOnSO in ProductLine as
If ( OnSO > 0 ; OnSO ; 0 ) // if you leave out " ; 0" this field will be empty for negative and zero and this also works.
use Sum(ProductLine::cPositiveOnSo) to compute the sum of just the positive values.
"I want to sum the positive value of OnSO only"
You could even try a calculation like this:
Evaluate ( Substitute ( List ( ProductLine::OnSO ) ; [ "-" ; "0*" ] ; [ ¶ ; "+" ] ) )