Olá Pedro Silva!
Um detalhe a mais que você tem que observar é que pode ter Transações dentro de Transações.
Para evitar erros ao fazer um RollBack no seu código de tratamento de erros, você pode utilizar a função "TXNLEVEL" que retorna o número do nível da Transação que no caso identifica quantas transações tem.
Tente o exemplo abaixo:
For lnQtdeTransc = TXNLEVEL() To 0 Step -1
RollBack
EndFor
Obs.: Serve tanto para RollBack quanto para EndTransaction.
Veja help do VFP para mais informações.
Espero ter ajudado!
Até mais.
Erick
Força Sempre!
Strength Always!