I am getting this error while using web property configuration for the constraints what am I doing wrong
The error occurs when the user clicks on a new line in the grid while the data is constrained
Error is

C:\Dataflex Projects\ContactWebDev\Programs\WebApp.exe
Assert: Server DDO's current record does not match psCurrentRowID
DataFlex Error#: 4402 in line: 26231.

GET_ALLOWCHANGESELECTEDROW (6459) - oWbGrdCamp_Dtl (1914) - at address 26231
GET_CHANGECURRENTROW (6443) - oWbGrdCamp_Dtl (1914) - at address 22534
GET_HANDLEACTION (5744) - oWbGrdCamp_Dtl (1914) - at address 15343
GET_HANDLEACTION (5744) - oWbGrdCamp_Dtl (1914) - at address 23409
GET_CALLACTION (6241) - oWebApp (19) - at address 21147
GET_CALLACTION (6241) - oWebServiceDispatcher (34) - at address 20841
GET_DOCALL (1284) - oCallInterface (35) - in native code
GET_DOCALL (1284) - oWebServiceDispatcher (34) - at address 10712
MSG_ONDFFUNC (5030) - oVDFInetSession (24) - at address 9282
MSG_STARTWEBAPP (5832) - oWebApp (19) - at address 16585
[start] - at address 42775
------------------------------------------------
my code in The DDO Follows
Code:
    Object oContPlan_DD is a cContPlanDataDictionary        Set DDO_Server to oEMPFOL_DD
        Set DDO_Server to oCONTACT_DD
        Set DDO_Server to oContCamTyp_DD
        Set DDO_Server to oCLTYP3_DD 
        
        Set Validate_Delete_Structure_Mode to DD_VALIDATE_STRUCTURE_NEVER
        Set Validate_Save_Structure_Mode to DD_VALIDATE_STRUCTURE_NEVER
        Set Auto_Fill_State to True


        
        Procedure OnConstrain
            String sMEmpl sMPlan sMCltyp //sFilter
            Forward Send OnConstrain            
            Constrain CONTPLAN.COMPLETE ne "Y"
            WebGet psMEmploy of oMarketing_Plan to sMEmpl  
            WebGet psMPlan of oMarketing_Plan to sMPlan
            WebGet psMCltyp of oMarketing_Plan to sMCltyp
            If sMEmpl ne "" Constrain CONTPLAN.EMPL eq sMEmpl //Web Property
//            If sEmploy ne "" Constrain CONTPLAN.EMPL eq sEmploy // Global Variable
            If sMPlan ne "" Constrain CONTPLAN.PURPOSE eq sMPlan
            If sMCltyp ne ""  Constrain CONTPLAN.CLTYPE eq sMCltyp
        End_Procedure


    End_Object // Contplan Data Dictionary Object


    Set Main_DD to oContPlan_DD
    Set Server to oContPlan_DD
    
// -----------------------------------------------------------------------------------------------------    
{ WebProperty=True }
Property String psMEmploy
{ WebProperty=True}
Property String psMPlan
{ WebProperty=True }
Property String psMCltyp
My Code in the onchange event
Code:
                Object oEMP3_EMP_CODE is a cWebForm                    Entry_Item EMP3.EMP_CODE
                    Set Server to oContPlan_DD 
                    Set piColumnSpan to 4
                    Set psLabel to "Employee:"
                    Set piLabelOffset to 100
                    Set psLabelColor to "white"
                    Set peLabelAlign to alignRight
                    Set pbServerOnChange to True
                    
                    Procedure OnChange String sNewValue String sOldValue
                        Forward Send OnChange sNewValue sOldValue
                        String sVal // webget and webset
//                        WebGet psValue of oEMP3_EMP_CODE to sEmploy // Global Varible
//-------------------------------------- Web Property method -----------------------------
                        WebGet psValue of oEMP3_EMP_CODE to sVal
                        WebSet psMEmploy of oMarketing_Plan to sVal


////----------------------------------------------------------------------------------                
//                        Send Rebuild_Constraints of oContPlan_DD
                        Send RefreshListFromDD of oWbGrdCamp_Dtl
                        Send Refind_Records of oContPlan_DD
                        Send FindDDRecordInBuffer of oWbGrdCamp_Dtl
                    End_Procedure


                End_Object
What am I doing wrong?