In case others can use it, I adjusted the Serial_Concat formula (below) in @JimWoodhead's .rpt so that it prints the qty in parentheses next to each lot/serial # (sample attached):
shared Stringvar Serialnos;
if {SO_InvoiceWrk.LotSerialNo} <>"""" and Serialnos="""" then
Serialnos:={SO_InvoiceWrk.LotSerialNo} & "" ("" & totext({SO_InvoiceWrk.LotSerialQuantityShipped}, 0) & "")"" else
if {SO_InvoiceWrk.LotSerialNo} <>"""" then
Serialnos:=Serialnos+"", ""+{SO_InvoiceWrk.LotSerialNo} & "" ("" & totext({SO_InvoiceWrk.LotSerialQuantityShipped}, 0) &"")