Hi Dan,
I am not sure if unloading points would have any other impact on your system. If you assigned goods receiving hours to the unloading point, then the delivery time should be within those goods receiving hours. But it is not necessary to enter goods receiving hours.
Scheduling works by taking the requested delivery date as the base date. I.E. Other dates are calculated based on this date. The scheduling functionality was developed from the point of view that the user is more knowledgable than the system (not necessarily always the case but this is how it was designed). Therefore, when the user enters a date on the weekend, it is assumed that the user requires this date - that there is a valid reason for entering this date.
If you were to maintain unloading points in the customer master and maintain a factory calendar for the unloading point (Stored in KNVA-KNFAK), the system would respond by issuing a warning (V1019) when the user entered a non-working date. It is the standard system design that this message is a warning rather than an error. When the warning is received, the user has 2 options:
1) Acknowledge the warning and accept that they intended to enter a non-working day by pressing "Enter"
2) After reading the warning, they realise they do not wish to create an order with this delivery date and manually change the date in the "First Date" field.
It is not possible to change the message to an error in the standard system.
The same is true for EDI processing. In this case (when e.g. the IDoc comes from the customer) it is also not desirable to change this date automatically, although now the warning message is not visible. When a customer has a goods receiving date normally on Friday, but he says that he needs the material already on Saturday, the system should be able to accept a delivery date on Saturday.
Therefore, you have to look at the possibility of a user exit. As per Joans response, USEREXIT_MOVE_FIELD_TO_VBAK could be used to change the field VDATU. This would ensure that the requested delivery date falls on a more suitable date. You could also use USEREXIT_MOVE_FIELD_TO_VBEP to change VBEP-EDATU. You would need to discuss the specifics of the code with your ABAPers.