Changing the SmartViewerControls SetModifyingState like this seems to resolve this issue:
/**
* Purpose: Sets the TableIOState to ModifyingData
* Notes: Useful when modifying Viewer values through custom event handlers
*/
METHOD PUBLIC VOID SetModifyingState():
IF VALID-OBJECT (THIS-OBJECT:SmartGroupAssignSource) AND TYPE-OF (THIS-OBJECT:SmartGroupAssignSource, SmartViewerControl) THEN DO:
CAST (THIS-OBJECT:SmartGroupAssignSource, SmartViewerControl):SetModifyingState() .
RETURN .
END.
IF THIS-OBJECT:SmartTableIOState = TableIOStateEnum:FieldsEnabled THEN DO:
THIS-OBJECT:SmartTableIOState = TableIOStateEnum:ModifyingData .
/* Tell the SmartDataSource that the user has started to update data. */
IF VALID-OBJECT(THIS-OBJECT:SmartDataSource) THEN
THIS-OBJECT:SmartDataSource:BeginUpdateState (THIS-OBJECT).
END.
END METHOD.