Standard Data Directive - Empty RowMod

Does anyone know why the RowMod is empty when firing upon saving inside Quote Entry?

I see the RowMod is “A” when I initially add the part, and “D” when I delete the part. However, it is blank when I save from Quote Entry.

  var quoteDtl = (from r in ttQuoteDtl select r).FirstOrDefault();
  string rowMod = (string)quoteDtl["RowMod"];

I checked this by calling a Standard process BPM inside QuoteDtl to show the rowmod.

If I run the BPM inside an In-Trans process, it returns “U” (as I would expect).

Any ideas, or is this an Epicor bug?



An empty RowMod means the row is unchanged. I THINK – but it’s been a while – that when you Save/Update a record Epicor sends two data rows: one is the original, unchanged row (with RowMod blank) and the other is the updated row (with RowMod = “U”). If you get the count of rows in ttQuoteDtl, is it more than 1? Or if you use a foreach loop, does one of the rows have a “U” RowMod?

This code below is from a Standard directive and loops through each updated row and uses this fact to get the old values that were changed. The loop is for each updated row, and the FirstOrDefault methods select the passed rows that are unchanged – the original data before the update was called.

You’re right, I was always taking just the first row inside ttQuoteDtl instead of filtering on RowMod = “U”.

just to fill out the reason… when you UPDATE a record, there are always TWO records… the unmodified record (rowmod = “”) and the modified record (rowmod = “U”)… this allows BPMs to look for events like “when a field has changed from X to Y”… the only way to do this is to have a copy of the before/after values of all the fields. So, you always need to search for the Modified value, or the new value (rowmod = “A”) when doing work. Many times, I personally shortcut this and simply look for rowmod <> “”

1 Like