For me you have to separate two points
-> dynamic table
there is a lot of doc about dynamic table
PDF, you just have to print the result of your report, and convert the OTF into PDF using function CONVERT_OTF_2_PDF Like in program RSTXPDFT4
you could also, call a report and catch the result using :
Call the report and catch the result
* Perform the program and export the restult in memory.
SUBMIT (p_prog) VIA SELECTION-SCREEN AND RETURN EXPORTING LIST TO MEMORY.
This command will call the selection screen of the report, and get the result in memory, you will not see the result in the screen.
* Catch the memory of the report result.
CALL FUNCTION 'LIST_FROM_MEMORY'
TABLES
listobject = it_listobj
EXCEPTIONS
not_found = 1
OTHERS = 2.