Ah, I see what's happening.
There's a SELECT earlier in the (implicitly started) transaction that's taking a table-level shared lock. You're going to have to identify what that select is and why it's taking a table lock in order to fix this (changing to read committed isolation level will also work, but be careful, there may be a good reason why the isolation level is repeatable read, and by changing it you could break application functionality)
You could also investigate why implicit transactions are on. That's a transaction behaviour more associated with Oracle than SQL Server (where auto_commit is the default and most transactions you'll see are started explicitly via BEGIN TRANSACTION)
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)SQL In The Wild
: Discussions on DB performance with occasional diversions into recoverability
We walk in the dark places no others will enter
We stand on the bridge and no one may pass