this is a recurring request.
Best answer that I have seen/remember is to have a 'numbers' table, 1,2,3,4,5,6... then join your numbers table to your data table linking the numbers to the po (for example).
If you have 6 widgets on the po, and the table is linked to <= 6, then you get 6 records. Alternatively, you can create your table to be 1,2,2,3,3,3,4,4,4,4.... and then join on the actual value, both create multiple rows that look identical.
HTH
ps in the post that I found this in, the poster used an excel spreadsheet and a Command object to create his 'numbers' table.