For complex reports - not just simple data dumps from a table, I use Next Reports.
It is an awesome reporting tool for use within B4J and ABMaterial. See ABMaterial for dummies for example of using NR.
What I really like about it is: When I need to provide a new report to a client, I create it on my dev environment and upload the ( small - 3k ) report template to the client's server. I add the reference to this new report using my simple editor (already in the app) and wa la! DONE!