BPM on Mass Receipts

I have a BPM on receipts that pulls the Manufacturers Name and Part Number from the PO into the receipt window. It works fine if i am using the standard Receipt Entry to book stuff in, it works fine in Mass Receipts if there is only one line to book in. But if the PO has more than one line and i click the Mass Receipt button i get the following error -

Business Layer Exception

The table ds.RcvDtl has more than one record
The table ds.RcvDtl has more than one record

Error Detail

Correlation ID: e29112bb-fdef-4399-bfcd-a2d94b1491ae
Description: The table ds.RcvDtl has more than one record
Program: Epicor.Customization.dll
Method: GetSingleRow
Table: ds.RcvDtl
Field: undefined

Description: The table ds.RcvDtl has more than one record
Program: Epicor.Customization.dll
Method: GetSingleRow
Table: ds.RcvDtl
Field: undefined.

Screen shots of the BPM are below -






I am guessing it is to do with the “Method: Get Single Row” but i cannot see a way to run this otherwise?

Have you done a trace to see what data is being passed when it has multiple rows? I’m curious if there is some way you can have a BPM iterate through all rows of a dataset being sent.

I usually see that error when the method only takes 1 row and you’re trying to pass multiple dirty rows. Some Method/Data directives are capable of handling multiple, others aren’t.

I know I have specified which entry I wanted to use, for example in the Customer table, when you do an update, there are 2 rows being passed, so I specified the row I wanted to use in the Directive, but there could be something where you set a variable to find the amount of rows in the DS and another variable to iterate, and if iterate variable != DS Row variable, do your method, then update the iterate variable and pass it back into the condition? Not sure if that would work, just spit balling here, haven’t tried it and didn’t even think to until this question.