Yes, you can create reports as complex as you need. Classes ussually are used to initialize a report by providing a specific user interface, to save the parameters and pass them to the report. The main logic of the report exists into the report's methods. If you don't have licenses for classes it's ok, you can simply use the report's interface, or, if you need more complex one, you can build using a form and a table, where each parameter is a field in that table. Then pass the record buffer to the report through args().record(myTable). That should be ok for both 2/3tier environments.
Comments
Yes, you can create reports as complex as you need. Classes ussually are used to initialize a report by providing a specific user interface, to save the parameters and pass them to the report. The main logic of the report exists into the report's methods. If you don't have licenses for classes it's ok, you can simply use the report's interface, or, if you need more complex one, you can build using a form and a table, where each parameter is a field in that table. Then pass the record buffer to the report through args().record(myTable). That should be ok for both 2/3tier environments.
Good luck!
Ciprian Dudau
Axapta Developer