Well, your puppy is suffering from gastroenteritis. It happens when the dog has eaten irregularly or has exercised a bit too soon after eating. The best thing to do in this case is not to give the dog anything to eat and drink for 12 hours except ice cubes offered every 2 hours to provide fluids in very small quantity so that the dog does not dehydrate. After 12 hours if the dog didn't have any more vomiting/diarrhea, start giving the dog some water (only few laps given every 2 hours). If he holds up for the next six hours and doesn't vomit or has a diarrhea bout again then increase the water dosage volume. You can start giving the dog bland food after he has kept the water down for 12 hours starting with very low dosage of 2 tablespoons every 2 hours. Oat meal, boiled rice and chicken will be good. Again, if he keeps it down for the next 12 hours, then gradually increase the quantity up to 6 hours. Continue the gradual increase in the quantity along with a decrease in feed intervals. Get back to normal diet after 2 days of this routine. If you see blood or the diarrhea and / or vomiting persist, then get to a veterinary doctor immediately.