I have this script for SQL 2005 try this out
SELECT job.Name,
case job.description when 'No description available.' then '' else job.description end,
step.step_name,
case his.run_status when 0 then 'Failed' Else 'Success' end 'Status',
convert(varchar,convert(datetime,cast(his.run_date as varchar),106),106) 'Run Date',
case len(run_time) when 6 then SUBSTRING(convert(varchar,run_time),1,2) + ':' + SUBSTRING(convert(varchar,run_time),3,2) + ':' + SUBSTRING(convert(varchar,run_time),5,2)
when 5 then SUBSTRING(convert(varchar,run_time),1,1) + ':' + SUBSTRING(convert(varchar,run_time),2,2) + ':' + SUBSTRING(convert(varchar,run_time),4,2)
when 3 then '12' + ':0' + SUBSTRING(convert(varchar,run_time),1,1) + ':' + SUBSTRING(convert(varchar,run_time),2,2)
when 1 then '12:00:00'
else convert(varchar,run_time)
End 'Run Time',
his.run_duration,
case when his.sql_message_id <> 0 and his.sql_message_id <> 8153then his.message else '' end 'Message'
from msdb.dbo.SysJobs job,
msdb.dbo.SysJobSteps step,
msdb.dbo.SysJobHistory His
where job.enabled = 1
and job.job_id = step.job_id
and job.job_id = His.job_id
and step.step_id = His.step_id
and his.run_date = ( select top 1 his1.run_date from msdb.dbo.SysJobHistory his1
where his1.job_id = His.job_id
and step.step_id = His1.step_id
order by 1 desc
)
and his.run_time = ( select top 1 his2.run_time from msdb.dbo.SysJobHistory his2
where his2.job_id = His.job_id
and his2.run_date = his.run_date
and step.step_id = His2.step_id
order by 1 desc
)
and job.description not like 'This job is owned by a report server process%'
--and his.run_status = 0
order by his.run_status, job.Name, His.step_id
Regards
Durai Nagarajan