A typical SAP system installation contains dialog work processes and at least one update work process. The update work processes are responsible for updating the database. If, in a dialog work process, the function modules stored in interim storage through CALL FUNCTION ... IN UPDATE TASK are released for processing by means of the ABAP statement COMMIT WORK, the dialog work process will not wait for the update process to finish. This kind of update is called asynchronous update.
The following diagram shows a typical asynchronous update:
For example, let us suppose a user wishes to change an entry in a database table, or add a new one. He or she enters the necessary data, and then starts the update process by choosing Save. This starts the following procedure in the ABAP program:
1. Firstly, the program locks the database entry against other users. For this purpose, the enqueue work process is addressed (in a distributed system, this takes place through the message server). This generates a corresponding entry in the lock table. The user is informed whether the update was successful, or whether the lock could not be set because of other users.
2. If the lock is set, the program reads the entry that is to be changed and modifies it. If the user has created a new entry, the program checks whether a record with the same key values already exists.
3. In the current dialog work process, the program calls a function module using CALL FUNCTION ... IN UPDATE TASK, and this writes the change details as an entry in table VBLOG.
4. When the program is finished (maybe after further dialog steps), a COMMIT WORK statement starts the final part of the SAP LUW. The work process that is processing the current dialog step starts an update work process.
5. Based on the information passed to it from the dialog work process, the update work process reads the log entries belonging to the SAP LUW from table VBLOG.
6. The update work process passes this data to the database for updating, and analyzes the return message from the database. If the update was successful, the update work process triggers a database commit after the last database change and deletes the log entries from table VBLOG. If an error occurrs, the update work process triggers a database rollback, leaves the log entries in table VBLOG, flags them as containing errors, and sends an SAPmail to the user, who should then inform the system administrator.
7. The corresponding entries in the lock table are reset by the update work process.
Asynchronous updating is useful when the response time from the transaction is critical, and the database updates themselves are so complex that they justify the extra system load of logging them in VBLOG. If you are running a transaction in a background work process, asynchronous update offers no advantages.