I am updating my custom field that I've placed in the standard table SalesLine.
[FormControlEventHandler(formControlStr(SalesAvailableDlvDates, TransferToConfirmedButton), FormControlEventType::Clicked)] public static void TransferToConfirmedButton_OnClicked(FormControl sender, FormControlEventArgs e) { SalesTable salesTable; SalesLine salesLine; SalesCalcAvailableDlvDates salesCalcAvailableDlvDates; SalesCalcAvailableDlvDates_SalesLine salesCalcAvailableDlvDates_SalesLine; SalesCalcAvailableDlvDates_SalesTable salesCalcAvailableDlvDates_SalesTable; SalesAvailableDlvDatesTmp salesAvailableDlvDatesTmpSelected; FormRun formRun = sender.formRun() as FormRun; FormControl DisableDlvDateControlButton = formRun.design(0).controlName('DisableDlvDateControlButton'); FormDataSource salesLine_ds = sender.formRun().dataSource('SalesLine'); HS_ConfirmedShipDate hs_ConfirmedShipDate; RecId salesLineRecId; salesCalcAvailableDlvDates = formRun.args().caller(); switch (classIdGet(salesCalcAvailableDlvDates)) { case classNum(SalesCalcAvailableDlvDates_SalesLine): salesCalcAvailableDlvDates_SalesLine = salesCalcAvailableDlvDates as SalesCalcAvailableDlvDates_SalesLine; salesLine = salesCalcAvailableDlvDates_SalesLine.parmSalesLine(); salesTable = salesLine.salesTable(); break; case classNum(SalesCalcAvailableDlvDates_SalesTable): salesCalcAvailableDlvDates_SalesTable = salesCalcAvailableDlvDates as salesCalcAvailableDlvDates_SalesTable; salesTable = salesCalcAvailableDlvDates_SalesTable.parmSalesTable(); break; default: break; } salesAvailableDlvDatesTmpSelected = sender.formRun().dataSource(formDataSourceStr(SalesAvailableDlvDates,SalesAvailableDlvDatesTmp)).cursor(); salesLineRecId = salesLine.RecId; if(DisableDlvDateControlButton.visible() == false) { ttsbegin; hs_confirmedShipDate.clear(); hs_confirmedShipDate.SalesOrderNumber = salesLine.SalesId; hs_confirmedShipDate.ItemNumber = salesLine.ItemId; hs_confirmedShipDate.ItemName = salesLine.itemName(); hs_ConfirmedShipDate.RefRecId = salesLine.RecId; hs_ConfirmedShipDate.OldPromisedDate = salesLine.ShippingDateConfirmed; hs_ConfirmedShipDate.NewPromisedDate = salesAvailableDlvDatesTmpSelected.AvailableShippingDate; hs_ConfirmedShipDate.Reason = "@HSP:ATPSimulateDeliveryDate"; hs_confirmedShipDate.insert(); ttscommit; if(SalesLine.HS_Reason != "@HSP:ATPSimulateDeliveryDate") { salesLine.clear(); select forupdate HS_Reason from salesLine where salesLine.RecId == salesLineRecId; ttsbegin; salesLine.HS_Reason = "@HSP:ATPSimulateDeliveryDate"; salesLine.doUpdate(); salesLine_ds.refresh(); ttscommit; info("@HSP:SalesOrderSaved"); } } }
The bold text is how I update the field. (my caller salesCalcAvailableDlvDates doesn't have any refresh/refreshEx/executeQuery. It returns this value. SalesCalcAvailableDlvDates_SalesLine). Every time I execute update my field, this error shows up:
"Cannot edit a record in Order lines (SalesLine). The record shown has been updated by another user. Press Revert or Shift+Control+F5 to see the updated values."
Why is this happening? I am only updating my custom field.
*This post is locked for comments