2008 Apr 09 8:10 AM
Hi,
May I know how do i lock WHOLE Table, without letting anyone to write data?
I have created lock entries called EZZVPAFINAL, but the same transaction still allow data to write into the table, as long as none records are same. How can I prevent totally none records are able to update the table, as long as there is one connection to the table.
CALL FUNCTION 'ENQUEUE_EZZVPAFINAL'
EXPORTING
MODE_ZVPAFINAL = 'E'
MANDT = SY-MANDT
ZVBELN = IT_ZVPA-ZVBELN
ZVKORG = IT_ZVPA-ZVKORG
ZVTWEG = IT_ZVPA-ZVTWEG
ZPOSNR = IT_ZVPA-ZPOSNR
ZMATNR = IT_ZVPA-ZMATNR
ZPLANT = IT_ZVPA-ZPLANT
X_ZVBELN = ' '
X_ZVKORG = ' '
X_ZVTWEG = ' '
X_ZPOSNR = ' '
X_ZMATNR = ' '
X_ZPLANT = ' '
_SCOPE = '2'
_WAIT = ' '
_COLLECT = ' '
EXCEPTIONS
FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
OTHERS = 3
.
CASE sy-subrc.
WHEN 0.
MESSAGE i888 WITH 'Enqueue successful'(001).
WHEN 1.
CALL TRANSACTION 'SM12'.
WHEN 2 OR 3.
ENDCASE.
Hi,
May I know how do i lock WHOLE Table, without letting anyone to write data?
I have created lock entries called EZZVPAFINAL, but the same transaction still allow data to write into the table, as long as none records are same. How can I prevent totally none records are able to update the table, as long as there is one connection to the table.
CALL FUNCTION 'ENQUEUE_EZZVPAFINAL'
EXPORTING
MODE_ZVPAFINAL = 'E'
MANDT = SY-MANDT
ZVBELN = IT_ZVPA-ZVBELN
ZVKORG = IT_ZVPA-ZVKORG
ZVTWEG = IT_ZVPA-ZVTWEG
ZPOSNR = IT_ZVPA-ZPOSNR
ZMATNR = IT_ZVPA-ZMATNR
ZPLANT = IT_ZVPA-ZPLANT
X_ZVBELN = ' '
X_ZVKORG = ' '
X_ZVTWEG = ' '
X_ZPOSNR = ' '
X_ZMATNR = ' '
X_ZPLANT = ' '
_SCOPE = '2'
_WAIT = ' '
_COLLECT = ' '
EXCEPTIONS
FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
OTHERS = 3
.
CASE sy-subrc.
WHEN 0.
MESSAGE i888 WITH 'Enqueue successful'(001).
WHEN 1.
CALL TRANSACTION 'SM12'.
WHEN 2 OR 3.
ENDCASE.
2008 Apr 09 8:20 AM
Hi Hui,
I guess SAP locks are created at application server level and not at database level.
Even though you create locks on the table, the other program should also try create a lock then only SAP throws an error, else it allows other program to update the data.
For Example:
1. prog1 locks data1
2. prog2 tries to lock data and update
3. prog3 tries to update data without lock.
In this scenarai, prog2 will get a error and prog3 will update the table.
So Ensure that whatever program tries to update the data should first acquire the lock.
Hope this helps you.
Thanks,
Arun
2008 Apr 09 8:34 AM
Hi,
Do you mean check if there is lock on the table first before processing?
2008 Apr 09 8:37 AM
Hi Hui,
Yes that is a must.
Whenever you update a database table, you check whether it is locked or not.
Thanks,
Arun
2008 Apr 09 10:53 AM
JUST A QUESTION,
may i know how do i check in abap code whether there is a lock on the table?
is there any specific table to read?
2008 Apr 09 11:03 AM
LOCK OBJECTS
1)Go to se11 transaction.
2)Click on lock object radio button and give a lock object name starting with 'E'.For example 'ESAMPLE'.Click CREATE.
3)In the TABLE tab, you can give the table name for which you require a lock.In the LOCK PARAMETERS tab,you can give the table fields based on which the table should be locked.
4)Call a function module in your program ENQUEUE_lockobjectname to obtain a lock on the required table.In our example the FM will be ENQUEUE_ESAMPLE.
5)To release the lock on the table,call the function module DEQUEUE_lockobjectname.In our example the FM will be DEQUEUE_ESAMPLE.
Regards
Sreeni
| User | Count |
|---|---|
| 5 | |
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |