I have followed the links and structured my code very similarly but am receiving an interesting error. I have plenty of inventory on-hand but am still receiving the following error:

My code is included below for reference:
select firstonly shipTable
where shipTable.DocumentId == shipTable2.DocumentId;
// Update QtyShipNow on the TO line for each line on generated id
while select * from shipTable3
where shipTable3.DocumentId == shipTable.DocumentId
&& shipTable3.GeneratedId == shipTable.GeneratedId
&& shipTable3.ProcessingStatus == stagingStatus::Pending
{
select forupdate inventTransferLine
where inventTransferLine.TransferId == shipTable3.DocumentId
&& inventTransferLine.ItemId == InventTable::getItemIdFromLogisticsId(shipTable3.ItemId)
&& inventTransferLine.LineNum == str2Num(shipTable3.PickLineNum);
if(inventTransferLine.QtyRemainShip != 0)
{
//inventTransferLineLocal = null;
//select forUpdate inventTransferLineLocal
// where inventTransferLineLocal.RecId == inventTransferLine.RecId;
inventTransferLine.QtyShipNow = str2Num(shipTable3.QtyShipped);
inventTransferLine.update();
//inventTransferLine.reread();
}
}
// Select TO that we are posting a shipment to.
select firstonly inventTransferTable
where inventTransferTable.TransferId == shipTable.DocumentId;
inventTransParmUpdate.ParmId = RunBaseMultiParm::getSysParmId();
inventTransParmUpdate.insert();
// Create parm table and lines for posting
invTransParmTable.clear();
invTransParmTable.ParmId = inventTransParmUpdate.ParmId;
invTransParmTable.TransferId = inventTransferTable.TransferId;
invTransParmTable.EditLines = true;
invTransParmTable.AutoReceiveQty = false;
invTransParmTable.UpdateType = InventTransferUpdateType::Shipment;
invTransParmTable.ShipUpdateQty = InventTransferShipUpdateQty::ShipNow;
invTransParmTable.TransDate = str2Date(shipTable.ShipDate,321);
invTransParmTable.insert(true);
// Post parm table and lines that were just created.
invTranUpd = InventTransferUpdShip::newParmBuffer(invTransParmTable);
invTranUpd.run();