I’m not sure if you’re talking about Belly Drum or the berry, but there are a few reasons for either one not activating that aren’t always common knowledge.
Belly Drum will only fail if the user is below half HP or if its Atk stat is already maxed.
If you use Belly Drum on a Pokémon with an odd max HP value, then it’ll drain half of the user’s HP rounded down, placing it at 1 HP too high for it to count as half full. To remedy this, you just need to slightly rearrange the HP EVs or IVs so that your Pokémon’s max HP is an even number.