Hi Amrita,
You need not to write 3 BADI's for 3 Virtual KFs. You can achieve all in one BADI. I think you have not included this new KF in "Define" method. Your "Compute" method seems to be OK.
While debugging, you can just make an entry for p_cha_0crm_enddat and execute and see whether it populates data for new KF or not. This is just to investigate.
Regards,
Suman