Having used this as the basis for my own version though I best update again - there is an error in the code when you have multiple schemas in a database where tablenames are repeated (so schemaA.Table1 and schemaB.Table1).
Solution is to make the code schema aware, so changing this code section :
INSERT INTO #TEMPFRAG
SELECT OBJECT_NAME(F.OBJECT_ID) OBJ,I.NAME IND,
F.AVG_FRAGMENTATION_IN_PERCENT,
F.PAGE_COUNT,TABLE_SCHEMA
FROM SYS.DM_DB_INDEX_PHYSICAL_STATS (DB_ID(),NULL,NULL,NULL,NULL) F
JOIN SYS.INDEXES I
ON(F.OBJECT_ID=I.OBJECT_ID)AND I.INDEX_ID=F.INDEX_ID
JOIN INFORMATION_SCHEMA.TABLES S
ON (S.TABLE_NAME=OBJECT_NAME(F.OBJECT_ID))
--WHERE INDEX_ID<> 0
AND F.DATABASE_ID=DB_ID()
AND OBJECTPROPERTY(I.OBJECT_ID,''ISSYSTEMTABLE'')=0'
with this
INSERT INTO #TEMPFRAG
SELECTOBJECT_NAME(F.OBJECT_ID)
,I.NAME IND
,F.AVG_FRAGMENTATION_IN_PERCENT
,F.PAGE_COUNT
, s.name -- NOTE CHANGED FROM TABLE_SCHEMA
--,i.allow_page_locks -- I use this to better handle allow_page_locks true / false
FROMSYS.DM_DB_INDEX_PHYSICAL_STATS ('+cast(@DB_ID as varchar)+',NULL,NULL,NULL,NULL) F
JOINSYS.INDEXES I ON(F.OBJECT_ID=I.OBJECT_ID) AND I.INDEX_ID=F.INDEX_ID and i.is_disabled = 0 -- Note I'm skipping disabled indexes
joinsys.tables t on f.object_id = t.object_id -- NOTE NEW LINE TO REPLACE USE OF INFORMATION_SCHEMA
joinsys.schemas s on s.schema_id = t.schema_id -- NOTE NEW LINE TO COMPLETE JOIN
--WHERE INDEX_ID<> 0
AND F.DATABASE_ID=DB_ID()
ANDOBJECTPROPERTY(I.OBJECT_ID,''ISSYSTEMTABLE'')=0
The only other change you want to make for the above to work is to add at the start of your code :
declare @DB_ID int
set @DB_ID= DB_ID('Your DB Name Here')
Because that gets around a failure in the original source if you want to run this for any database from any database.