Rollback transaction must be in a try-catch, there should be no executable code between exception and rollback transaction, there is no begin transaction for rollback transaction, there is no commit transaction for begin transaction.
BeginTransaction();
Try
// ...
CommitTransaction();
Except
// ...
Raise;
EndTry;
RollbackTransaction();
BeginTransaction();
Try
// ...
CommitTransaction();
Except
// ...
RollbackTransaction();
// ...
Raise;
EndTry;