We use this in our system very much .The idea is - create a driver UBE , in this driver UBE , call the child UBE in synchronous mode (so that your parent waits till the child is done ) using the business function B91300C . Now if you need to pass report params and DSTR to the child UBE , then all you need to do is copy B91300C and make say B5691300C , in the. h file make sure you include your child report R57XXX.h. Now go into the .h file which will be in the include folder for the report and grab the DSTR name (just like we do for tables and pointers) and get that in your copy of B91300C . Add some business function code to copy from LPDS to this UBE VAR DSTR and then all you need to change in the call of LAUNCHUBEXX is to pass the UBEVAR and then it shoould work and return the job # . Once the Job # is there you can either go to F986110 or F986114 and fetch the UBE name . Create a NER to have the complete path like E910SYS\PrintQueue\RXXX_Job#_version .pdf or,csv and fetch it and then use the business function Email Merge Letter to pass the details and email .