"We have dinner."
You're thinking too much in terms of verbatim translation. Noi abbiamo cena literally means "we have dinner". As if to say you and a buddy went to pick up dinner or food for your family. Then you call your mom and say "noi abbiamo cena". It states you and your friend physically have the dinner in your possession. A lot of people don't realize cena is actually the lui/lei form of the verb cenare (to have dinner). If you follow the conjuation rules for regular "are" verbs, (noi) ceniamo actually means "we have dinner". Which is the action of "having dinner (to consume/eat the food, not to possess the food)". Hope this helps :)
"Ceniamo" would be "we dine" rather than "we are having dinner", since that is what "abbiamo la cena" means.
While "lui/lei cena" use the same word as "la cena", they are not the same words, because the first instance is a verb and the second is a noun.
For sentences specifying regularly occurring events, you could say, "i lunedì abbiamo cena" "on Mondays we have dinner", since the dinner isn't a specific "a" or "the" dinner. It it's a specific instance of dining, then "la cena" would be warranted. HOWEVER, in Spanish the article is dropped after some verbs, in particular "tener" = "to have", so "abbiamo cena" = "we are having dinner [at this moment]" might still be a correct colloquial usage, even if it doesn't follow forma rules of grammar.
For sure! But that's also what makes it difficult, verb conjugation, which we have very little of in English. Mangiamo = Let's eat, Mangio = I eat, Andiamo = Let's go, Vado = I go, and so on. French is similar with a zillion verb conjugations, but you can't drop the subject as much as in Italian. Convenient, but a killer to learn, and I continually get them wrong! My Italian friends say I talk like a child, because I use all the words instead of the conjugated short cuts, and I'm very articulate because I'm trying, and usually place the words in the wrong order, in English order. LOL
Two English words, actually: "We dine". If you start with "abbiamo la cena", it's actually English that's more compressed. And more precise. In Italian, you can "have" your cake, and not be eating it, too, while "dining" means both having your cake and eating it, too.
Well, abbiamo is the noi (we) form of the verb "avere", which means to have/to own. So the translation would be to physically having the lunch/dinner (depending on the context) in your possession. It would be no different than saying "noi abbiamo le mele" (we have the apples). Hope this helped!