Thanks for posting your feature request. I have a suggestion that might work for you. We have some reports that are project-based and some that are timesheet-based. If you are using a project-based report, you will see projects that have 0 hours against them. Timesheet-based reports won't show projects with 0 hours, because there is no timesheet data to report on for that project. You can try using a report template such as Timesheet Day and remove all user and timesheet period columns. Let us know if this works for you!
Sorry, but that is not a viable solution. There are no templates that show data at the task level that exclude columns for expenses. You can suppress these columns from appearing in the report, but if expenses are charged against the task, the task will appear in the report with "hour" columns null. This is extremely annoying to users and causes very confusing looking reports.
The report writer should either automatically suppress rows when the columns included in the report are null or there should be a check box to "suppress empty rows".
As far as I recall, the Gen 2 report writer did this automatically. This is just another example of how the adopters of Gen 3 must take a penalty for upgrading.
Just another example of "not following through with customer support"