As a user creates a new business object item or changes an existing one by selecting the Edit button on the object page, the system creates a draft which is automatically saved in the background. The message Draft updated is displayed in the footer after each update of the draft. It is allowed to update draft while it is still incomplete and inconsistent. In order to activate the draft (that is to save the draft as an active document), the input should be consistent. For that, there are different validation checks which can be done.
For more information about draft handling, see Draft Handling.
Client Side Validations
Client side validations, as the name suggests, are executed on the front end and are done and visualized immediately after the focus leaves the input field. For example, a user can enter the wrong date format or more characters than the field length allows. The field is marked red and a message button appears in the footer of the object page ( bottom left). It displays the number of errors and, when choosing it, a message popover opens and displays the messages. They are displayed as long as the errors are not corrected.

You can also navigate to the corresponding field and see the same error message there.

Back-end validations
Other input consistency checks may require some validations in the back end. Usually such validations are triggered as a user chooses the Save button on the object page (correspondingly the Apply button on the subobject page).
The app is responsible for preparing such consistency checks in the back end.
For example, CAP runtimes automatically validate user input in the fields which correspond to the properties annotated with @assert.integrity, @assert.target, and some others. Check the CAP documentation for the complete list of supported input validation annotations Input Validation.
SAP Fiori elements automatically displays messages that are sent from the back end as part of the request-response cycle. The messages for subitems are also displayed.
Messages referring to the state of an instance, for example input consistency checks, are called state messages. They are displayed in the Edit mode on the object page and the subobject page in the same popover as the client side validation messages. The messages are displayed on the UI as long as the inconsistencies are not corrected. The state messages can be persisted in the back end.
For the sake of completeness we have to mention the transition messages which can also be sent from the back end.
They are 'transient' in nature and do not affect the state of the object. They refer only to the last action that was executed. These messages are not relevant for the user input validation. These messages can be displayed in the list report or on the object page in the display mode. For more information, see Using Messages.
For more annotations for User Input validation with CAP, see Common Annotations.