Craig has a lot of good stuff in his reply there, especially about making sure you do the report from midnight at the beginning of the week to midnight at the end of the week.
I would, however, question why you are using WORKORDER.REPORTDATE as the basis of this. That would mean the Work Order would have to have been BOTH reported (created) AND completed "last week." What if it had been reported 2 months ago, but was completed "last week?" I would think that should also be included for consideration of whether or not it had actuals.
Also, don't subtract 1 from the 2nd getdate() statement. For example, if I run this right now, Oct. 10, 2022, 9:09 Central:
SELECT wonum, reportdate
FROM workorder
WHERE reportdate BETWEEN CAST(getdate() - 7 AS DATE) and CAST(getdate() - 1 AS DATE)
ORDER BY reportdate
The results only include Oct. 3 - Oct. 8. So dates 3, 4, 5, 6, 7, and 8 -- that's only 6 days; not a full week.
Depending on your company's processes (or if you have users who occasionally hit wrong buttons), it
may be possible that a Work Order is both Completed and Closed "last week." For that reason, I would use the WOSTATUS table to find things that were "completed last week."
Finally, as Craig has alluded, it is unclear if you were asking for "Work Orders completed last week without
Actual Labor " or "Work Orders completed last week without
any kind of Actuals" -- no actual Labor, Materials, Tools, or Services. From what you wrote, I think you intended "without Actual Labor" but I'll build upon Craig's response, including "without any kind of Actuals." If you meant just "without Labor" remove the last three lines that start with AND NOT EXISTS.
This is written for a SQL Server database:
SELECT *
FROM workorder
WHERE
EXISTS (SELECT 1 FROM WOSTATUS ws WHERE wonum = workorder.wonum AND ws.siteid = workorder.siteid
AND status = 'COMP' and CAST(changedate AS DATE) BETWEEN CAST(getdate() - 7 AS DATE) AND CAST(getdate() AS DATE))
AND (woclass = 'WORKORDER' OR woclass = 'ACTIVITY') AND historyflag = 0 AND istask = 0
AND (
NOT EXISTS (SELECT 1 FROM matusetrans m WHERE refwo = workorder.wonum AND m.siteid = workorder.siteid)
AND NOT EXISTS (SELECT 1 FROM servrectrans s WHERE s.refwo = workorder.wonum AND s.siteid = workorder.siteid)
AND NOT EXISTS (SELECT 1 FROM labtrans l WHERE l.refwo = workorder.wonum AND l.siteid = workorder.siteid)
AND NOT EXISTS (SELECT 1 FROM tooltrans t WHERE t.refwo = workorder.wonum AND t.siteid = workorder.siteid)
);