This is essentially a difference of synchronization with the main program calling this FM.
For Update task, we specify explicitely that we want to update some rows in a database table. But Update task is essentially for waiting that all tasks to do before are done and updating database at the end. The main point is that MF called in Update task wait for a COMMIT WORK to be executed.
On the other hand FM in background task are executed immediatly and are not specific to updating database table : it can be a function that would return some values or something else like that.
If you want to see more about difference between background jobs / update jobs, you can also have a look at transaction SM51. Here you will see all the servers composing your SAP instance and what kind of task they can execute :
- background jobs corresponds to BATCH
- update tasks corresponds to UPDATE
Those 2 kinds of tasks stands not necessarily on the same server...
Best article about RFC calls I've ever read click [here|http://www.sdn.sap.com/irj/scn/index;jsessionid=(J2EE3417200)ID0519063150DB10009773621581261878End?rid=/library/uuid/f078394a-4469-2910-c4bf-853c75674694&overridelayout=true]
It comprehensively explains all the types of RFC calls.
Revert back if you still have doubts.
To call a function module directly, use CALL FUNCTION IN UPDATE TASK directly in your code.
Refer Link: [Calling a function module in background task |http://help.sap.com/saphelp_nw04/helpdata/EN/8f/53b67ad30be445b0ccc968d69bc6ff/content.htm]
Refer Link: [Call function module in update task|Call function module in update task;
Refer Link: [CALL FUNCTION IN UPDATE TASK |http://help.sap.com/saphelp_nw70/helpdata/EN/41/7af4e0a79e11d1950f0000e82de14a/content.htm]