The STARTING NEW TASK statement allows you to call a function module but it will be executed in a separate processing
task asynchronously so the ABAP program logic does not wait for this FM to finish its processing but continues with the
next line of abap code. The clever thing about this statement is that once the FM has finished processing
it will then execute the specified FORM within the original program to continue processing.
This small example is actually the basis for reports which auto-refresh themselves. i.e. the program calls a function
module in a new task which then waits a few seconds (WAIT 10 seconds). Once it returns to the program and performs the return
form it basically re-runs the whole report again. This especially creates an endless loop so report keeps updating itself
until it is cancelled by the user.
Execute FM in update task within separate unit of work CALL FUNCTION 'Z_FMODULE' starting new task 'UPDATE' destination 'NONE' performing processing_done on end of task EXPORTING P_UNAME = sy-uname. "program does not wait for FM to finish processing and continues with next line of ABAP code break-point. "...perform display_report. FORM processing_done. * In the mean time once processing of FM Z_FMODULE is complete this abap FORM is then executed. WIthin here you can perform any processing you like, including re-displaying a report "...perform display_report. ENDFORM.
Also see:
STARTING NEW TASK
IN UPDATE TASK
IN BACKGROUND TASK