The attached patch allows admin reports (admin/report/* folders) to have database tables and cron. The interface is as follows, for a report called 'XX':
1) Database tables for a report called 'XX': XX/version.php (sets $plugin->version, $plugin->required), XX/db/install.xml, XX/db/upgrade.php (with function xmldb_report_XX_upgrade)
2) Cron support: XX/cron.php (with function report_XX_cron, which is called every cron, up to report to determine how often it actually needs to run or if it wants to run at a particular time etc).
Could be applied to 1.9 or just HEAD.