Your statement "Work.Empty is an empty data set and does not have anything inside it. " explains the error. If there are no variables then there is nothing to "keep" and attempting to do so generates an error.
Since Proc Append will not let you add any variables that are not in the base set then the keep option isn't really needed. If you want to avoid the problem of SAS not wanting to add the data when you do have varaibles not in the base set then use the FORCE option. Note the force options will not add those variables but will allow the appending of varaibles that do match the base data. If you use the force option because you know there are variables you do not want to add to the base set you might want to include the NOWARN option as well to prevent the warning SAS will put in the log that the Force option was used.
Also not that if you have variables of different types but same name the ones in the append set will be missing in the result. There is not conversion. And different lengths for the same variable may result in trucation.
... View more