Transactional correctness is an important database consistency requirement. If multiple programs update the same information simultaneously, data correctness can be at risk if the changes are not performed in an isolated manner. Locks control the access to data by multiple programs. In the event of a system failure, the logical unit of work principle ensures that the data affected is still consistent after recovery. The transactional correctness tool checks the transactional correctness of your ABAP programs.
The transactional correctness evaluation is based on the software principles of atomicity, consistency, isolation, and durability (ACID principles). You can find more information on the ACID principles in the Internet.
Depending on the functions you want to use, the following prerequisites apply:
Use | Prerequisite |
---|---|
Use the transactional correctness tool directly in the managed system | You have installed ST-PI 2008_1 or above |
Evaluate enqueues and dequeues | You have installed ST-PI 2008_1 SP9 |
Use the transactional correctness tool in SAP Solution Manager to evaluate transactional correctness in one of your managed systems | You have installed ST 7.10 SP12 |
The transactional correctness tool is a report that evaluates a transaction performance trace.
You can check transactional correctness either directly in the managed system or from the Data Consistency Management
tile on the Fiori launchpad.
Based on predefined rules, the report checks the following:
The number of independent changes in a logical unit of work (LUW)
Whether the database changes are bundled in a single task
The usage of enqueues and dequeues to lock the data
The following rules are checked:
Rule | Description |
---|---|
1 | There should be no COMMIT and ROLLBACK statements between changes in the main program. |
2 | There should be no COMMIT and ROLLBACK statements between changes within each tRFC/qRFC. |
3 | There should be no changes in sRFC/aRFC unless executed in an update task. |
4 | An explicit COMMIT statement is needed to trigger changes in an update task. |
5 | If some changes in the main program are executed in an update task, the others should be as well. |
E1 | A database record can be modified without an active enqueue. |
E2 | A dequeue might be set without an active enqueue. |
E3 | A dequeue is set without all parameters specified. |
E4 | Modifying DB operation on a table that is not part of an active lock object. |
E5 | The changed table entry might only be locked by a shared lock. |
E6 | Data might be committed without an active enqueue. |
Note
To ensure correct results of the transaction correctness tool, take the following measures:
Record only a single SAP logical unit of work (LUW) in a trace, that is, steps that are to be processed together from a logical point of view, to grant transactional correctness.
While recording the trace, do not use update debugging.
Process inbound queues with a user different from your own user.
To do so, fill the Destination With Logon Data
field in the QIN scheduler (transaction SMQR
). If the field is empty, the system uses your user to process inbound queue entries you created.
Transaction Correctness guide at
.In the SAP NetWeaver documentation at http://help.sap.com/netweaver, search for Performance Trace
.
SAP Note 1325677