First of all, disabling constraints when running code is not really something to do lightly. I realise that there can be situations when you need to violate a constraint temporally during a transaction, and I might have run into these myself. I try to find workarounds like making the operations in a temp table and only update the target table in a final operation.
But if you need to do it, the best is to put it inside the stored procedure, and do inside a transaction so that you don't end up with the constraint disabled. Furthermore, if you do as Naomi suggested, the constraint will not be re-validated, which means that the optimizer cannot trust it, which can have performance implications.
This leads to:
BEGIN TRANSACTION
ALTER TABLE tbl NOCHECK CONSTRAINT MyProblematicConstraint
\-- Do dirty stuff here
ALTER TABLE tbl WITH CHECK CHECK CONSTRAINT MyProblematicConstraint
COMMIT TRANSACTION
And yes, that should really be CHECK twice in a row there.