Create PO Approval Request thru Code

Has anyone created a PO Approval request (POApvMsg) thru code?
Our PO Approval for PO limit is working. There is a BPM on POApvMsg that sends email notification when MsgType = 1. The problem is when I tried to create a PO Approval Request by code it gives me an error “You must either Approve or Reject the PO”. Also, it gets changed to MsgType = 2 (Response) when I let it continue. Any other way of doing this?
The code below errors out on Update.

            bool MorePages = false;
	POApvMsgAdapter adPOApproval  = new POApvMsgAdapter(oTrans);
	adPOApproval.BOConnect();


	Boolean bOK = adPOApproval.GetNewPOApvMsg();
	if(bOK)
	{
		if(adPOApproval.POApvMsgData.POApvMsg.Rows.Count > 0)
		{
			string msgText = DateTime.Now.ToString() + Environment.NewLine;
			msgText += "There is a price increase on this PO for approval." ;

			DataRow dRow = adPOApproval.POApvMsgData.POApvMsg.Rows[0];
			dRow.BeginEdit();
			string company = dRow["Company"].ToString();
			dRow["PONum"] = Convert.ToInt32(edvPOHeader.dataView[edvPOHeader.Row]["PONum"]);
			dRow["POAmt"] = Convert.ToDecimal(edvPOHeader.dataView[edvPOHeader.Row]["TotalCharges"]);
			dRow["ApproverResponse"] = "";
			dRow["MsgType"] = 1;
			dRow["MsgDate"] = DateTime.Today;
			dRow["MsgTime"] = DateTime.Now.TimeOfDay.TotalSeconds;
			dRow["MsgTo"] = edvBuyer.dataView[edvBuyer.Row]["ApprovalPerson"].ToString();
			dRow["MsgFrom"] = edvBuyer.dataView[edvBuyer.Row]["BuyerID"].ToString();
			dRow["MsgText"] = msgText;
			dRow["DcdUserID"] = coreSession.UserID;
			
			dRow["RowMod"] = "A";
			dRow.EndEdit();
			adPOApproval.Update();