User exits allow you to add additional functions to the SAP standard. So a customer can modify anything he want that is found in the include (tables, structures, and so forth).
Programs with user exits contain subroutine calls at certain points in their syntax that are identified by the prefix USEREXIT. The actual user exits are located in an include that has been assigned to a module pool. This is where customers can include any changes (enhancements) that they want to make to the system. These includes are always processed during program flow.