I am encountering a new blocking problem that I can’t seem to get over. I have searched the Community Site and any other sources I can find and can’t seem to find a clear reference to this situation anywhere. There are lots of special cases but nothing that addresses this basic behavior.
I am stumped trying to change column values in both Global and Context Variables that contain a single Record with multiple Columns inside it. I have successfully used the Set(), UpdateContext() and Patch() functions in different scenarios individually but now when I try to combine the Patch within either the Set() or UpdateContext() functions as referenced in the documentation (Set() & UpdateContext())


I am loading the contents of the record selected from the gallery below into both one Global and one Context variable that are otherwise identical. As illustrated below, when the record is selected, the values are loaded properly and displayed into the regular display labels on the right.
When I put new data into the data inputs on the lower right, and hit each of the buttons (Update Global and Update Context), I would expect that the values in the labels in the upper right to change accordingly based on the code below but that isn’t happening. I am receiving no error messages or conditions and it just seems to be ignoring the button pushes.
Here is code on the button I am using to select the record from the gallery (the black and red below). It seems to be working as it is supposed to.
icoSelectOrder from galOrders
Set(
selectedOrderHeader,
galOrders.Selected
);
UpdateContext({selectedOrderHeaderContext: galOrders.Selected})
Here is the screen after I select a record from the gallery but before I enter the new value I want to use to update the column values.

Here is the code that executes on each of the Update buttons.
OnSelect on btnUpdateGlobal
Set(
selectedOrderHeader,
Patch(
selectedOrderHeader,
{
'SoldTo Name': txtSoldtoName.Text,
'ShipTo Name': txtShipToName.Text,
'ShipTo Number': txtShipToNumber.Text,
'SoldTo Number': txtSoldToNumber.Text
}
)
)

OnSelect on btnUpdateContext
UpdateContext(
{selectedOrderHeaderContext:
Patch(selectedOrderHeaderContext
,
{
'SoldTo Name': txtSoldtoName.Text,
'ShipTo Name': txtShipToName.Text,
'ShipTo Number': txtShipToNumber.Text,
'SoldTo Number': txtSoldToNumber.Text
}
)
}
)

Here is the unexpected behavior (or lack thereof) when I hit either button.
When I hit either the UpdateGlobal or UpdateContext, I do not get the expected behavior where the column values in each of these Record variables is set to the new values I have entered in the txt input fields.
Clearly something is wrong but I can’t figure it out as the commands are both passing the syntax checker and I have checked it against any the syntax examples (above) I can find in the online documentation for both the Set() and UpdateContext() functions along with Patch().

For reference, here is the CDS entity Sales Order Header that I am using to populate the galOrders. This whole thing cropped up as I have been collecting new values that I will then use to patch the selected record but I haven’t gotten to that step yet. I have successfully patched records in other CDS entities so I think I have a handle on that step. We will see after I solve this one.

Can anyone provide any insight on what I am doing wrong to cause this blocking problems (or if there is some underlying problem lurking in the tool)?
Thanks,
Mark