Hi Adrian,
Deleting the change pointer in BDCP_BEFORE_WRITE will not create an entry in BDCP2. When RBDMIDOC is run, IDOCs will not be generated when you delete change pointer using this BADI.
Change pointers are determined by FM CHANGE_POINTERS_READ when RBDMIDOC is run. May be you could write an implicit enhancement at the end of the FM & if your validation does not met, you could remove it from the interface CHANGE_POINTERS.
Explore the Function Module CHANGE_POINTERS_READ.
Thanks,
Karthikeyan