Hi:  
  Your question, and answer, really are data-dependent. For example...compare these two possibilities for data structure:
[pre]
Option 1
      
Obs amort    product    beaconr     period      val   +plus more variables
 1   <25      AAA        XXX      Period 1    2525        
 2  25-30     AAA        XXX      Period 1    3030    
 3  30-35     AAA        XXX      Period 1    3535
 4   <25      AAA        XXX      Period 2    2525 
 5  25-30     AAA        XXX      Period 2    3030     
 6  30-35     AAA        XXX      Period 2    3535
[/pre]
              
versus
[pre]
Option 2
                            
Obs product beaconr period   amort1  ar25  amort2  ar30  amort3 ar35  + more variables
 1   AAA      XXX  Period 1   <25    2525   25-30  3030  30-35  3535     
 2   AAA      XXX  Period 2   <25    2525   25-30  3030  30-35  3535   
[/pre]
In option1 version of the data, there is a single variable/column named AMORT, and each observation has a different value for AMORT. Compare this to the structure of the data in Option 2...there are 3 related AMORT variables, AMORT1, AMORT2, AMORT3 and each of these AMORT column variables "goes with" the matching AR25, AR30 and AR35 variables.
 
Another option for how the data is structured is related to Option 1 something like this, where only 1 of the 3 variables (in this case AR25, AR30, AR35) has a value based on what the observation's value for AMORT is:
[pre]
Option 3
    
Obs amort    product    beaconr     period    ar25 ar30 ar35   +plus more variables
 1   <25      AAA        XXX      Period 1    2525   .    .        
 2  25-30     AAA        XXX      Period 1      .  3030   .   
 3  30-35     AAA        XXX      Period 1      .    .  3535
 4   <25      AAA        XXX      Period 2    2525   .    . 
 5  25-30     AAA        XXX      Period 2      .  3030   .     
 6  30-35     AAA        XXX      Period 2      .    .  3535
                                                                            
[/pre]
                                                                                                            
The TABULATE syntax that you use, if TABULATE is even the right procedure, will be different for Option 1 structure than it is for Option 2 structure. This is why showing the structure of the input data, if possible, will help.
 
You might need to open a track with Tech Support. They could look at a copy of your input data and you could send them a sketch or mockup of what the final report should be and then they could recommend whether TABULATE or REPORT or even a DATA Step report would be better. Another alternative might be to look at PROC TABULATE examples in the documentation and try to compare the structure of the data they used in their programs (these will either be SASHELP datasets or the programs will have a sample of the data) with the structure of your data.
 
cynthia