Setting ddl in tran to true allows these commands to be used inside a user-defined transaction:
alter table (clauses other than partition and unpartition are allowed)
create default
create index
create procedure
create rule
create schema
create table
create trigger
create view
drop default
drop index
drop procedure
drop rule
drop table
drop trigger
drop view
grant
revoke
Data definition statements lock system tables for the duration of a transaction, which can result in performance problems. Use them only in short transactions.
These commands cannot be used in a user-defined transaction under any circumstances:
alter database
alter table...partition
alter table...unpartition
create database
disk init
dump database
dump transaction
drop database
load transaction
load database
select into
truncate table
update statistics