In this step, you will add a Save button for employee details and create an UpdateEmployee method routine. At this stage, employee notes will not be updated.

1.  Add a push button to the top of row 4, column 1.

2.  Change the button's Alignment to Top Right.

a.  Give it a margin Right of 20 and a margin Top of 10.

b.  Change its Caption to Save.

c.  Change its Name to Save_Employee.

d.  Give it an Image of xImageSave16.

e.  Create a Click event for the Save button.

3.  Create a SaveEmployee method routine, based on the following:

Map for input of class xEmployeeIdentification, Name EmployeeID
Define a component iiixEmployeeDataServer / Save srvroutine, with name UpdateEmployee.
Assign xEmployeeIdentification to value EmployeeID
Execute UpdateEmployee asynchronously, exchanging Group_By xEmployee and field IO$STS.
Within a Completed event routine for UpdateEmployee:
If IO$STS is equal OK

   Assign fields in Group_By xEmployee the value null
   Set Label_Details.Caption to blank.
End Routine

Your code should look like the following:
Mthroutine Name(SaveEmployee)
Define_Map For(*INPUT) Class(#xEmployeeIdentification) Name(#EmployeeID)
Define_Com Class(#iiixEmployeeDataServer.save) Name(#UpdateEmployee)
#xEmployeeIdentification := #EmployeeID
#UpdateEmployee.ExecuteAsync( #xEmployee #io$sts )
Evtroutine Handling(#UpdateEmployee.Completed)
If (#io$sts = OK)
#xEmployee := *null
#Label_Details.Caption := ""
Clr_List Named(#NotesList)
Endif
Endroutine
Endroutine 

4.  Complete the Save_Employee button Click event by adding code to invoke the SaveEmployee method passing xEmployeeIndentification.

     Your code should look like the following:
Evtroutine Handling(#Save_Employee.Click)
#COM_SELF.SaveEmployee( #xEmployeeIdentification )
Endroutine
 
5.  Compile and test the web page.

     Note: This application is a simple training exercise. Logic to update the employee entry in the EmployeeList dropdown hasn't been added, such as when Given Name or Surname is changed. This could easily be achieved.