How to organize the Procurement function

How to organize the Procurement function ? Well, there is of course not one single solution. Many different factors influence. Can we create a generic variant?