The difference between afi_rdata_en and afi_rdata_en_full is that you can use afi_rdata_en to mask off any beat coming back from the memory but you have to keep afi_rdata_en_full asserted for the full length of your read.
For example, if you have a burst of 8 on memory side, which takes 4 clock cycles, you have to keep afi_rdata_en_full asserted for all 4 cycles (i.e. 1111) but if you want to mask off words 5 and 6 out of the 8 words that are coming back, you can go ahead and make afi_rdata_en 1101 and you will only read back words 1, 2, 3, 4, 7 and 8 because 5 and 6 will be masked off.