Msg 266
= Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = %ld, current count = %ld.
You start an explicit transaction If the INSERT statement fails, the SP steps into the CATCH with only a PRINT statement; no ROLLBAKC and so you have at the end of SP a still open transact; for the rest see the error message.
Add a ROLLBACK in case of @@TRANCOUNT <> 0.
https://learn.microsoft.com/en-us/sql/t-sql/functions/trancount-transact-sql?view=sql-server-ver16