The crystal report is expecting a certain schema, and that schema cannot change from customer to customer, or as you found the report will not work.
I'm ok with one customer having 12 periods and another 50, but why would name the columns that way, since as you found out, the schemas don't match, so the report cannot be generalized, and it is a poor table design.
If the data is as described, and you have varying number of periods, you will need separate reports for each customer, or every customer will have to have the same number of periods, which has to be predefined, because the report has to match the schema.
Depending where you are in the development, and how much coding has been created, I would suggest changing the structure of the dataTable to be more 'normalized' which would have fewer columns, but more rows and could hand any number of periods from 1 to 1000 (not that you would have many accounting periods, but you get the idea)
This isn't so much a matter of experience in Crystal, as database design, which doesn't allow for flexibilty and as you have found, doesn't allow for Crystal to be written as 1 report for many users.