Try brown rice instead of pasta; it will fill you more and you won't have to eat as much of it. If you simply love the pasta, make sure it is with a high protein sauce like meatballs or a bolognese that is very meaty. Even a cream sauce is better than just a tomato, as both fat and protein will slow the digestion of carbs, fill you up more and you wont be able to so much of it, thus, reducing your overall calorie intake. I personally don't eat pasta at all; I find it leaves me craving carbs for hours after eating it, regardless of amount of protein with it then I tend to seek out icecream. Pasta is made from white flour which is very low i. nutritional value and will not fill you for long. Most of my clients have found this is the same for them. They also find it hard to avoid seconds, so they end up eating far too much in one sitting. Also, try brown pasta- it is more filling and will give you longer lasting energy as it is made from wheat flour.
Ham is quite salty, so I would not eat it daily. A high salt diet is linked directly to heart disease, so go easy on it. Make sure its a quality ham off the bone too. If you buy packet ham from the fridge section of the supermarket, check the packet for what % meat it is. Some are shockingly low (like 60% ham) and the balance is made up of water, salt and additives.
If you are drinking milk, ensure it is full fat, as you need the fat to slow down the digesion rate of the dairy sugars (you have probably heard of lactose as a common one). I don't recommend excessive milk intake as it will add to the calories. like you said- try water- its calorie free and better at hydrating
Word of warning: if you subsitute your ham sandwich with fruit- you will probably starve
try grilled Chicken and salad on rye bread instead. Try swapping every second ham for a chook
Hope this is helpful.