ARTICLE
Database Commit
In AS ABAP , database commits are
triggered either implicitly or explicitly.
Implicit Database Commits
The implicit database commits in an AS ABAP are caused by the
fact that an AS ABAP uses its own
work processes to connect to the
database system. A work process can only ever execute a single
database LUW but cannot interfere with
the database LUWs belonging to other work processes. Since an ABAP
program can be executed by different work processes during its runtime,
the database LUW for the current work process must be completed each
time an action takes place that leads to a change of work process. As a
result, a database commit is performed implicitly in the following
situation:
Completion of a dialog step
The program waits for a user action and does not occupy a work process
during this time. The next free work process is assigned to the program
in the next dialog step.
Calling a function module in a
synchronous or asynchronous remote
function call
The current work process passes control to a different work process or
system. An exception to this are updates . When
updates are running, sRFC and
aRFC do not cause work processes to be
switched or database commits to be executed.
Completion of a function module called in a separate work process using
a synchronous remote function call.
Usually, a new work process is allocated to the call program. If a new
sRFC follows quickly enough, and enough
free work processes exist, the work process sRFC continues to be
used, but an implicit database commit is performed regardless.
Execution of the statement RECEIVE in a
callback routine specified in an asynchronous RFC
To receive data from the the other application server, the current work
process must be interrupted before the callback routine is executed A
database commit is performed, except during the update.
HTTP / HTTPS / SMTP communication executed using the
Internet Communication Framework
A database commit is executed each time a response is sent in an
ICF
server program . If a service is called from an ICF client program
, a database commit is executed only if the work process is changed
due to the maximum wait time being exceeded. An exception to this are
updates and background processing. This behavior applies regardless of
whether the communication is stateless or stateful .
Interruption of the current work process using the statement
WAIT UP TO or WAIT
UNTIL .
After the interruption, the program is allocated the next free work
process.
Sending error messages ,
information messages , and
warnings .
These messages interrupt the current dialog step (see above).
Explicit Database Commits
Database commits can be triggered explicitly in ABAP programs in the
following ways:
Use of the relevant database-specific
Native SQL statement.
In ADBC , only the corresponding
methods of the class
CL_SQL_CONNECTION can be used to do
this. In other cases, the database interface does not detect the end of
the transaction and might not be able to perform certain actions.
Transaction-control statements embedded statically between
EXEC and ENDEXEC (
COMMIT , ROLLBACK ) are detected by the database interface
and any required actions performed.
Calling the function module DB_COMMIT .
This function module, which has no parameters, encapsulates the
corresponding Native SQL statement.
Executing the Open SQL statement
COMMIT CONNECTION .
Documentation extract taken from SAP system, � Copyright SAP AG. All rights reserved