In this example you have a mainreport REPORT1. From REPORT1 you 
can drill down to REPORT2 and from REPORT2 you can drill down
to REPORT3.
Tip:	Use hotspots to fire the AT LINE-SELECTION event.
	When the cursor is over the hotspot, it cganges to a hand,
	and you just have to click on the hostspot, instead of
	double clicking.
Note:	To see how to recognize if the user has selected a valid line, take a look at
	How to check if a valid line is selected before drill down.
START-OF-SELECTION.
* Read data for REPORT1 into itab1
END-OF-SELECTION.
  PERFORM write_report1.
TOP-OF-PAGE.
*  Write list header for REPORT1
AT USER-COMMAND.
* Respond when the user presses a function key
  CASE sy-ucomm.                
   WHEN 'REPORT2'.                 
     PERFORM write_reprt2.   
   WHEN 'REPORT3'.                 
     PERFORM write_reprt3.   
  ENDCASE. 
AT LINE-SELECTION.                                                  
* Istead of pressing a button can perform the same actions 
* as i AT USER-COMMAND, by double clicking a line  
* sy-lsind contains the list level.
* Each time an interactive list event occurs, sy-lsind is
* automatically increased by 1.
* At REPORT1 sy-lsin = 0
  CASE sy-lsind.                                                    
    WHEN 1.                                                         
       PERFORM write_reprt2.   
    WHEN 2.                                                         
       PERFORM write_reprt3.   
  ENDCASE. 
TOP-OF-PAGE.
* Write report header for report1 ( sy-lsind = 0 )
TOP-OF-PAGE DURING LINE-SELECTION.                        
* Write report header for sub reports
   CASE sy-lsind.                                          
     WHEN 1.                                               
*     Write report header for REPORT2.
     WHEN 2.                                               
*     Write report header for REPORT3.
    ENDCASE.
FORM WRITE_REPORT1.    
   LOOP at itab1.
*     write report1....... 
*     Hide keyfields used for the select statement of
*     report2
      HIDE: itab1_year, itab1_month.
   ENDLOOP.       
ENDFORM.
FORM WRITE_REPORT2.    
   SELECT * FROM databasetable2 into itab2
      WHERE year   = itab1_year AND
            month  = itab1_month.
   LOOP at itab2.
*     write report2 .......
*     Hide keyfields used for the select statement of
*     report3
      HIDE: itab2_carrid.
   ENDLOOP.       
ENDFORM.
FORM WRITE_REPORT3.    
   SELECT * FROM databasetable3 into itab3
      WHERE carrid   = itab2_carrid.
   LOOP at itab3.
*     write report3 .......
*     No need to hide keyfields, as further drill down is not
*     possible
   ENDLOOP.       
ENDFORM.