POSuggSvcContract issues with Update method directive

,

Referring to a post by @markb_wi , going through and trying to come up with the C# to achieve editing a PO Suggestion using a BAQ bpm through a Custom Action / Run Action.

My normal way of doing updates in a customization is with the adapter, seems I don’t have access to that in a BPM query.

      POSuggAdapter testadapter  = new POSuggAdapter();
      testadapter.BOConnect();
      
      // Get Property
      POSuggDataSet testdata = testadapter.POSuggData;
      
      testadapter.Dispose();

I see 2 other posts asking about the use of POSuggSvcContract but neither had conclusions that used that contract.

Referring to the picture I shared earlier, I have it structured to use the POSuggSvcContract. Everything runs fine from what I can tell, and the GetByID returns results. However, the Update method throws an error on run. If I comment out the Update method call, it runs except obviously doesn’t push the data into the record. It acts like there are no errors when syntax checking, and seems like it is set up to work but when it runs it throws the error of:

Job is required.
Asm is required.
Operation is required.
Requisition is required.
Line is required.

Clearly I am setting those fields on the table, and even went as far as to set all the fields that are listed as Mandatory on the Update part of the BAQ.

if (queryResultDataset != null && queryResultDataset.Results != null)
  foreach(var result in queryResultDataset.Results)
  {
      // gather info through function call
      var x = this.InvokeFunction("APICalls","function-123",Tuple.Create(result.SugPoDtl_VenPartNum));
      
      // visually change the results page prior to refresh
      result.RowMod = "U";
      result.SugPoDtl_API_TexasInstrument_Price_c = x[0].ToString();
      
      
      // create instance of BO
      Erp.Contracts.POSuggSvcContract POSuggSvc = Ice.Assemblies.ServiceRenderer.GetService<Erp.Contracts.POSuggSvcContract>(Db);
    
      
      // GetByID method directive
      Erp.Tablesets.POSuggTableset table_posugg = POSuggSvc.GetByID(result.SugPoDtl_SugNum);
      
      
      // Required fields
      table_posugg.SugPoDtl[0].SugNum = result.SugPoDtl_SugNum;
      table_posugg.SugPoDtl[0].BuyerID = result.SugPoDtl_BuyerID;
      table_posugg.SugPoDtl[0].Company = result.SugPoDtl_Company;
      table_posugg.SugPoDtl[0].Plant = result.SugPoDtl_Plant;
      table_posugg.SugPoDtl[0].PartNum = result.SugPoDtl_PartNum;
      table_posugg.SugPoDtl[0].LineDesc = result.SugPoDtl_LineDesc;
      table_posugg.SugPoDtl[0].TermsCode = result.SugPoDtl_TermsCode;
      table_posugg.SugPoDtl[0].ShipViaCode = result.SugPoDtl_ShipViaCode;
      table_posugg.SugPoDtl[0].WarehouseCode = result.SugPoDtl_WarehouseCode;
      table_posugg.SugPoDtl[0].RelQty = result.SugPoDtl_RelQty;
      table_posugg.SugPoDtl[0].XRelQty = result.SugPoDtl_XRelQty;
      table_posugg.SugPoDtl[0].JobNum = result.SugPoDtl_JobNum;
      table_posugg.SugPoDtl[0].AssemblySeq = result.SugPoDtl_AssemblySeq;
      table_posugg.SugPoDtl[0].OpCode = result.SugPoDtl_OpCode;
      table_posugg.SugPoDtl[0].ReqNum = result.SugPoDtl_ReqNum;
      table_posugg.SugPoDtl[0].ReqLine = result.SugPoDtl_ReqLine;
      
      // Changes
      table_posugg.SugPoDtl[0]["API_TexasInstrument_Price_c"] = x[0].ToString();
      
      // Flag
      table_posugg.SugPoDtl[0].RowMod = "U";
      table_posugg.SugPoDtl[0].SetRowState(IceRowState.Updated);
     
      // Update method directive
      POSuggSvc.Update(ref table_posugg);
      POSuggSvc.Dispose();
      
      
  }

Edit - I have it not erroring, but it also doesn’t write the data into the DB. I have an exact same setup writing into UD24 as a workaround, but using the POSuggSvc in place of UD24Svc doesn’t write. Still looking into why.