Yeah, it wants 2 lines in your dataset before the update: the initial one without any changes and RowMod=“” and the second one with the changes and RowMod=“U”.
First, call the GetByID to get the full req dataset (in this case tsReq). Then copy the header and set the fields:
// copy header
var currentRow = tsReq.ReqHead[0];
var newRow = tsReq.ReqHead.NewRow();
BufferCopy.CopyExceptFor(currentRow, newRow, "");
// set fields for the new header
newRow["NextDispatcherID"] = "ApproverIDHere";
newRow["NextActionID"] = "APPR";
newRow["ReplyOption"] = "A";
newRow["ReqUserId"] = "RequestorIDHere";
newRow["RowMod"] = "U";
// add new header to tableset
tsReq.ReqHead.Add(newRow);
Finally, call the Update. Worked for me.