Locking objects across RFC calls

Hi All,
I am developing a business application using SAP UI5 and the NetWeaver Service Gateway in an embedded scenario. I have RFCs build for the backend interaction. As per my knowledge, each RFC is considered as a separate transaction and the user is logged on and off as the RFC is processed. This removes the lock on the object that I need to be sustained till the next RFC call. Unlocking the object exposes it to possible editing by other users which is not desirable.
From what I have studied from this community, there are, by and large, two solutions
1. Custom Lock Table
2. Checking if the status of the object  is the same during the second RFC call, and going ahead only if it was unchanged.
However, I am looking for more credible solution to this problem and would like to know how someone who experienced this issue have handled it.
Thanks in advance,
Neelesh

Hi Jacob
S_RFC and S_SERVICE This two authorization is nedded while calling RFC module from R3.
first of all test the module in R3. create a role using PFCG assign the tcode. su53 (authorization check) and also assign the S_RFC and S_SERVICE to role.
now test the RFC function module with this role in R3.
if u give any warning/error due to authorization. imediate run tcode su53 in same session or new session
i.e /nsu53 or /osu53.
look which authorization is missing for a object.
assign the relevant object and authorization to role.
any query revert back.
regards,
kaushal

Similar Messages

  • How to handle lock object in BDC  call transcation method?

    Hi,
    how to handle lock object in BDC  call transcation method?
    Thanks In advances.

    If you are updating Z-fields then you need to create a lock entry, before you use call transaction.
    After creating lock object, please use FM Enqueue_<lockname> before CALL transaction and FM Dequeue_<lockname> after you have commited your data.
    Thanks,
    Kartavya

  • Lock object using RFC

    Hi,
    in standard transaction I lock an object in an other system using RFC lock(enqueue function) but when I exit from transaction the object in other system is automatically unlocked without using the dequeue function.
    Is It the correct behaviour?
    Thanks,
    Max Boscolo

    Hi
    Lock objects are use in SAP to avoid the inconsistancy at the time of data is being insert/change into database.
    SAP Provide three type of Lock objects.
    - Read Lock(Shared Locked)
    protects read access to an object. The read lock allows other transactions read access but not write access to
    the locked area of the table
    - Write Lock(exclusive lock)
    protects write access to an object. The write lock allows other transactions neither read nor write access to
    the locked area of the table.
    - Enhanced write lock (exclusive lock without cumulating)
    works like a write lock except that the enhanced write lock also protects from further accesses from the
    same transaction.
    You can create a lock on a object of SAP thorugh transaction SE11 and enter any meaningful name start with EZ Example EZTEST_LOCK.
    Use: you can see in almost all transaction when you are open an object in Change mode SAP could not allow to any other user to open the same object in change mode.
    Example: in HR when we are enter a personal number in master data maintainance screen SAP can't allow to any other user to use same personal number for changes.
    Technicaly:
    When you create a lock object System automatically creat two function module.
    1. ENQUEUE_<Lockobject name>. to insert the object in a queue.
    2. DEQUEUE_<Lockobject name>. To remove the object is being queued through above FM.
    You have to use these function module in your program.
    check this link for example.
    http://help.sap.com/saphelp_nw04s/helpdata/en/cf/21eea5446011d189700000e8322d00/content.htm
    tables:vbak.
    call function 'ENQUEUE_EZLOCK3'
    exporting
    mode_vbak = 'E'
    mandt = sy-mandt
    vbeln = vbak-vbeln
    X_VBELN = ' '
    _SCOPE = '2'
    _WAIT = ' '
    _COLLECT = ' '
    EXCEPTIONS
    FOREIGN_LOCK = 1
    SYSTEM_FAILURE = 2
    OTHERS = 3
    if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.
    Normally ABAPers will create the Lock objects, because we know when to lock and how to lock and where to lock the Object then after completing our updations we unlock the Objects in the Tables
    http://help.sap.com/saphelp_nw04s/helpdata/en/cf/21eea5446011d189700000e8322d00/content.htm
    purpose: If multiple user try to access a database object, inconsistency may occer. To avoid that inconsistency and to let multiple user give the accessibility of the database objects the locking mechanism is used.
    Steps: first we create a loc object in se11 . Suppose for a table mara. It will create two functional module.:
    1. enque_lockobject
    1. deque_lockobject
    before updating any table first we lock the table by calling enque_lockobject fm and then after updating we release the lock by deque_lockobject.
    http://help.sap.com/saphelp_nw04/helpdata/en/cf/21eea5446011d189700000e8322d00/content.htm
    GO TO SE11
    Select the radio button "Lock object"..
    Give the name starts with EZ or EY..
    Example: EYTEST
    Press Create button..
    Give the short description..
    Example: Lock object for table ZTABLE..
    In the tables tab..Give the table name..
    Example: ZTABLE
    Save and generate..
    Your lock object is now created..You can see the LOCK MODULES..
    In the menu ..GOTO -> LOCK MODULES..There you can see the ENQUEUE and DEQUEUE function
    Lock objects:
    http://www.sap-img.com/abap/type-and-uses-of-lock-objects-in-sap.htm
    http://help.sap.com/saphelp_nw04s/helpdata/en/cf/21eea5446011d189700000e8322d00/content.htm
    Match Code Objects:
    http://help.sap.com/saphelp_nw2004s/helpdata/en/41/f6b237fec48c67e10000009b38f8cf/content.htm
    http://searchsap.techtarget.com/tip/0,289483,sid21_gci553386,00.html
    See this link:
    http://www.sap-img.com/abap/type-and-uses-of-lock-objects-in-sap.htm
    Check these links -
    lock objects
    Lock Objects
    Lock Objects
    Regards
    Anji

  • SAP BW User getting locked by BO RFC calls

    Hi,
    we are encountering a problem with BO RFC calls locking SAP BW users that recently changed their password in BW.
    Description of the problem in the ticket we raised at the SAP support:
    SAP BO 4.1 SP2 Patch 4, linux installation
    Backend: SAP BW 7.01 EHP8
    BICS interface with SAP authentication
    One of our users gets locked again and again in SAP BW (P19). The cause is a RFC connection that the BusinessObjects server (P59) tries to establish. The user used SAP BO last Friday for the last time and had to change his password in P19 this Tuesday. We think that there is some
    process within SAP BO still trying to connect to SAP BW from time to time, using the old password. There is no open session visible for that user in the CMC. User is even getting locked when not in the office and during night time. RFC calls are established almost regualary every hour.
    We already had this behaviour in our test-system. Restarting the BO-Server solved it. However, this is not the solution we want to use
    in the productive environment. There has to be some way to kill the process that uses the old password on the BO server without restarting
    the whole server. We do not understand why BO would still try to connect to BW with the old password - this has to be some kind of a bug.
    Meanwhile the error disappeared for the first user (some days after it started, maybe the BO process ran into a timeout). However, other users started having the same behaviour after changing their password.
    Our basis team tried to check the log files for advanced information on the conversations between BO and BW, but did not find any hints on which BO process might try to establish the connections.
    The SAP support seems to be a little helpless at the moment...
    Has anyone had similar problems?
    Regards,
    Robert

    Hi again,
    additional information: after approximately one week after the error appeared for the first time BO stops trying to establish the rfc connection for this specific user. Almost as if the "old-password-BO-process" ran into a 1 week timeout or something like that.
    The problem is really strange. The SAP support is still not able to tell us how the gather the information they require.
    Regards,
    Robert

  • RFC calls with SAP table insert - lock tables

    Hi,
    I have an external server program, which is calling a rfc function many times the same time with different transaction types. There are transaction types, which are downloading information from SAP (only send data back to the caller), and there are transaction types which are uploading data to SAP (inserting/updating data on SAP).
    The function calls are synchronous as the server needs to get feedback directly. The parallel work processes for RFC calls are limited, so a system overload can´t happen.
    The problem now is, if the server is down for while and going to be restarted, it´s opening parallel threads and calls the function in SAP at nearly the same time. That means, it will call the function with upload requests (table must be locked), and download requests the same time.
    In the upload requests, the table has to be locked, that it can´t occur that we get wrong entries...
    I can only enqueue the table with just two fields... I know, that is almost like locking the whole table, but it´s not possible to lock it in a different way.
    I tried to use the enqueue function with the parameter WAIT, but it didn´t help, as there where too many parallel calls and after some seconds, they were ending up with an error (Because the table has been locked by another call).
    It seems that it´s trying to lock the table again for all parallel calls at exactly the same time....
    The calls has to be synchronous, as the server needs to get the feedback directly. Any ideas how top solve this, that it handles all incoming calls parallel and waits for the table is unlocked again?
    Thank you for your help!

    Hi,
    thank you for your answer!
    I have investigated something new yesterday:
    I thought at the beginning, that the problem just occurs, when the system work processes are reached. The system has for example set up 15 dialog processes and the external server is calling the function 20 times in parallel. Then we normally need 5 dialog processes more. The system is taking then all 15 dialog processes and the locks got stucked.
    That means, that I´ll maybe only get 4 or 5 uploads, which have really been updated the tables. All the others couldn´t get the table locked for their process.
    But if I now let the server call the function just about 13 times in parallel, nearly all uploads have been updated the table!
    From my point of view, the lock from SAP gets stucked, when the limit of dialog processes is reached. It´s not working in the right way anymore...
    The same is happening, when you set up in the system, that only 10 work proecesses can be used by RFC. If I have more than 10, it´s going to be critical with the locks....
    WEIRD!
    Can anybody help me out of trouble?
    Thank you!

  • Locking tables using a RFC Call

    Hello,
    I am trying to lock a Table in R/3 from BW by calling a Enqueue Function Module which is remote enabled in R/3. The BW Call to R/3 is successful but the table is not getting locked. I wanted to know if this is something that can be done.
    I have an assumption once the locking is done in R/3 the connection in R/3 is closed and its getting unlocked automatically.
    Please Post  your answers if you guys have faced a similar situation.
    Rajeev

    I have an assumption once the locking is done in R/3 the connection in R/3 is closed and its getting unlocked automatically.
    Your probably right, when making an RFC call, the locking done within, would only last during the execution of that call.
    Regards,
    Rich Heilman

  • Any way to lock objects in stateless app?

    Hi Guys
    Firstly: I know... I know... Once the stateless request has completed, the "session" is destroyed along with any locks etc. But how do you handle situations where you need to keep a more persistent lock on an object across stateless invocations?
    For example: Our stateless app allows you to update a customer record. I want to prevent someone from going into XD02 (or use our BSP app) to update the same record...
    Any thoughts greatly appreciated!

    I had a little bit of time so I tried my shared memory idea and unfortunetely it didn't work. I can lock from within my shared memory class, however the locks are released as soon as the detatch_commit() of the area is called.  When I look in the debugger I see something even more interesting.  If I look at references to my object while my write program is running I see that the object is of my class type: ZCL_SDN_SHARED_ROOT and that it is referenced by the running program and also referenced as the following: KERNEL=
    Now if I follow the debugger out of the execution of my program into the calling stack, I can see that my object reference still exists.  If I look at the references, I still have two of them.  One is the Kernel still, but the program's reference is gone.  Now I have the following reference as well:
    .  This must be the reference to my Root instance in my shared memory area. 
    This is the really interesting part.  If I drill into the object display of my root class instance it no longer displays as type CLASS=ZCL_SDN_SHARED_ROOT.  It is now as follows:  .  It is as though the root instance isn't actually stored in Shared memory, just some meta model description of the object instance.  This could very well explain why you can't persist locks or other ABAP Object References inside a shared memory class.

  • Lock Object: Enqueue and Dequeue

    Hi
    Im using VB.Net, SAP .Net to do data entry, updates to
    SAP R/3.
    Now, I need to lock the data during user changes on
    particular documents.
    What I done is I created a lock object in SE11. Then
    it produce 2 functions which are the ENQUEUE and
    DEQUEUE.
    Since the data reading from Non-SAP, I check for Allow
    RFC and my lock mode is Exclusive and Cumulative.
    After that, I also created a remote-enabled RFCs to be
    call from VB.Net. These RFCs is calling the ENQUEUE
    and DEQUEUE.
    When I tested in SAP itself, the locking data is
    working perfectly. I checked in SM12, it does shows
    the locking entry.
    But when I try in VB.Net and call the function
    modules, it does not shows any entry in SM12. It is
    like nothing happen at all.
    After that, I do little test. Firstly I lock the data
    from SAP then I run VB.Net, and it does shows the
    message who is currently locking the data.
    Anybody could help me on this?
    Thank you.
    Regards.

    See the following extract from documentation. Check if your lock object definition is satisfying all of them.
    <i>Reference Fields for RFC-Enabled Lock Objects
    The type of an RFC-enabled function module must be completely defined. The parameters of the generated function module therefore have the following reference fields for RFC-enabled lock objects:
    Parameters               Reference fields
    X_<field name>           DDENQ_LIKE-XPARFLAG
    _WAIT                    DDENQ_LIKE-WAITFLAG
    _SCOPE                   DDENQ_LIKE-SCOPE
    _SYNCHRON                DDENQ_LIKE-SYNCHRON
    </i>
    Here is the link to the documentation
    http://help.sap.com/saphelp_46c/helpdata/en/4f/991f82446d11d189700000e8322d00/frameset.htm
    Srinivas

  • Lock objects

    Hi experts,
    My requirement is to create lock for parent table and its child tables.Each and every child tables is having relation with the parent table.
      When iam creating the lock for parent table, in this process iam adding the child tables in the list.But here one child table is missing in the log eventhough its having the relation with parent table.
    Valuable replies will be awarded with points.........
    Regards,
    Swetha.

    Hi,
    it may help u
    1) Select object type Lock object in the initial screen of the ABAP Dictionary, enter an object name and choose Create. The name of a lock object should begin with an E (Enqueue).The maintenance screen for lock objects is displayed.
    2) Enter an explanatory short text in the field Short text. You can then use the short text to find the lock object at a later time, for example with the R/3 Repository Information System.
    3) Enter the name of the primary table of the lock object. All other tables in the lock object must be linked with the primary table using foreign keys.
    4) Select the lock mode of the primary table in the field below it The lock mode is used as the default value for the corresponding parameters of the function modules generated from the lock object.
    5) Choose Add if you want to lock records in more than one
    table with the lock object. A list of all the tables linked with the primary table using valid foreign keys is displayed. Select the appropriate table. The lock
    mode of the primary table is copied as lock mode. You can change this setting as required, for example you can assign the lock mode separately for each table.
    Similarly, you can add a table linked with the secondary table just added with foreign keys. To do this, place the cursor on the name of the secondary table and choose Add.
    If no lock mode is assigned to a table, no lock is set for the
    entries in this table when the generated function modules are
    called. You should not assign a lock mode if a secondary table
    was only used to define a path between the primary table and
    another secondary table with foreign keys.
    6) Save your entries.
    A dialog box appears in which you have to assign the lock
    object a development class.
    7) You can define whether the function modules generated from
    the lock object should be RFC-enabled on the Attributes tab
    page. If you set the Allow RFC flag, the generated function
    modules can be called from within another system with Remote
    Function Call. If you permit Remote Function Calls for an
    existing lock object, you must ensure that the generated
    function modules are called from within an ABAP program with
    parameters appropriate for the type. You should therefore check
    all programs that use the associated function modules before
    activating the lock object with the new option.
    8) Choose Activate
    Regards

  • How to create a lock object in se11

    hi all,
    Can anyone tell me the step by step procedure to lock as well as unlock a particular object in se11 trns code. with an real time example.
    thanxs in advance
    hari

    Hi,
    Lock objects are use in SAP to avoid the inconsistancy at the time of data is being insert/change into database.
    SAP Provide three type of Lock objects.
    - Read Lock(Shared Locked)
    protects read access to an object. The read lock allows other transactions read access but not write access to
    the locked area of the table
    - Write Lock(exclusive lock)
    protects write access to an object. The write lock allows other transactions neither read nor write access to
    the locked area of the table.
    - Enhanced write lock (exclusive lock without cumulating)
    works like a write lock except that the enhanced write lock also protects from further accesses from the
    same transaction.
    You can create a lock on a object of SAP thorugh transaction SE11 and enter any meaningful name start with EZ Example EZTEST_LOCK.
    Use: you can see in almost all transaction when you are open an object in Change mode SAP could not allow to any other user to open the same object in change mode.
    Example: in HR when we are enter a personal number in master data maintainance screen SAP can't allow to any other user to use same personal number for changes.
    Technicaly:
    When you create a lock object System automatically creat two function module.
    1. ENQUEUE_<Lockobject name>. to insert the object in a queue.
    2. DEQUEUE_<Lockobject name>. To remove the object is being queued through above FM.
    You have to use these function module in your program.
    Creating Lock Objects
    Procedure
    1.Select object type Lock object in the initial screen of the ABAP Dictionary, enter an object name and choose Create. The name of a lock object should begin with an E (Enqueue).
    The maintenance screen for lock objects is displayed.
    2.Enter an explanatory short text in the field Short text.
    You can then use the short text to find the lock object at a later time, for example with the R/3 Repository Information System.
    3.Enter the name of the primary table of the lock object.
    All other tables in the lock object must be linked with the primary table using foreign keys. There are also some restrictions on the valid foreign key relationships.
    4.Select the lock mode of the primary table in the field below it.
    The lock mode is used as the default value for the corresponding parameters of the function modules generated from the lock object.
    5.Choose Add if you want to lock records in more than one table with the lock object.
    A list of all the tables linked with the primary table using valid foreign keys is displayed. Select the appropriate table. The lock mode of the primary table is copied as lock mode. You can change this setting as required, for example you can assign the lock mode separately for each table.
    6.Similarly, you can add a table linked with the secondary table just added with foreign keys. To do this, place the cursor on the name of the secondary table and choose Add.
    7.If no lock mode is assigned to a table, no lock is set for the entries in this table when the generated function modules are called. You should not assign a lock mode if a secondary table was only used to define a path between the primary table and another secondary table with foreign keys.
    8.Save your entries.
    A dialog box appears in which you have to assign the lock object a development class.
    9.You can (optionally) exclude lock parameters (see lock objects) from the function module generation on the Lock parameter tab page. This makes sense for example if you always want to lock a parameter generically.
    To do this, simply deselect the Weight flag for the parameter. The parameter is not taken into consideration in the generated function modules. This parameter is then always locked generically.
    9.The name of a lock parameter is usually the name of the corresponding table field. If two fields with the same name are used as lock parameters in the lock object from different tables, you must choose a new name for one of the fields in field Lock parameter.
    10.You can define whether the function modules generated from the lock object should be RFC-enabled on the Attributes tab page.
    If you set the Allow RFC flag, the generated function modules can be called from within another system with Remote Function Call.
    11.If you permit Remote Function Calls for an existing lock object, you must ensure that the generated function modules are called from within an ABAP program with parameters appropriate for the type. You should therefore check all programs that use the associated function modules before activating the lock object with the new option.
    12 .Choose Activate .
    Result
    When you activate the lock object, the two function modules ENQUEUE_<lockobjectname> and DEQUEUE_<lockobjectname> are generated from its definition to set and release locks.
    You can find information about the activation flow in the activation log, which you can display with Utilities Activation log. If errors occurred during activation, the activation log is displayed immediately.
    Pls reward points.
    Regards,
    Ameet
    Message was edited by:
            Ameet Jassani

  • Where we use lock objects in our coding  like report

    what is the purpose of lock objects s? how we use them in real time? like in devoloping reports?

    Hi,,.
    Lock objects are use in SAP to avoid the inconsistancy at the time of data is being insert/change into database.
    SAP Provide three type of Lock objects.
    - Read Lock(Shared Locked)
    protects read access to an object. The read lock allows other transactions read access but not write access to
    the locked area of the table
    - Write Lock(exclusive lock)
    protects write access to an object. The write lock allows other transactions neither read nor write access to
    the locked area of the table.
    - Enhanced write lock (exclusive lock without cumulating)
    works like a write lock except that the enhanced write lock also protects from further accesses from the
    same transaction.
    You can create a lock on a object of SAP thorugh transaction SE11 and enter any meaningful name start with EZ Example EZTEST_LOCK.
    Use: you can see in almost all transaction when you are open an object in Change mode SAP could not allow to any other user to open the same object in change mode.
    Example: in HR when we are enter a personal number in master data maintainance screen SAP can't allow to any other user to use same personal number for changes.
    Technicaly:
    When you create a lock object System automatically creat two function module.
    1. ENQUEUE_<Lockobject name>. to insert the object in a queue.
    2. DEQUEUE_<Lockobject name>. To remove the object is being queued through above FM.
    Check these links
    Re: Lock Objects
    http://help.sap.com/saphelp_47x200/helpdata/en/ce/931bb5c79911d5993e00508b6b8b11/frameset.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/e1/8e51341a06084de10000009b38f83b/frameset.htm
    http://www.sapdevelopment.co.uk/dictionary/lock_enqueue.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/a2/3547360f2ea61fe10000009b38f839/frameset.htm
    http://help.sap.com/saphelp_nw04s/helpdata/en/cf/21eea5446011d189700000e8322d00/content.htm
    http://www.sap-img.com/abap/type-and-uses-of-lock-objects-in-sap.htm
    http://help.sap.com/saphelp_nw04s/helpdata/en/cf/21eea5446011d189700000e8322d00/content.htm
    Lock objects are use in SAP to avoid the inconsistancy at the time of data is being insert/change into database.
    SAP Provide three type of Lock objects.
    - Read Lock(Shared Locked)
    protects read access to an object. The read lock allows other transactions read access but not write access to
    the locked area of the table
    - Write Lock(exclusive lock)
    protects write access to an object. The write lock allows other transactions neither read nor write access to
    the locked area of the table.
    - Enhanced write lock (exclusive lock without cumulating)
    works like a write lock except that the enhanced write lock also protects from further accesses from the
    same transaction.
    You can create a lock on a object of SAP thorugh transaction SE11 and enter any meaningful name start with EZ Example EZTEST_LOCK.
    Use: you can see in almost all transaction when you are open an object in Change mode SAP could not allow to any other user to open the same object in change mode.
    Example: in HR when we are enter a personal number in master data maintainance screen SAP can't allow to any other user to use same personal number for changes.
    Technicaly:
    When you create a lock object System automatically creat two function module.
    1. ENQUEUE_<Lockobject name>. to insert the object in a queue.
    2. DEQUEUE_<Lockobject name>. To remove the object is being queued through above FM.
    Lock objects are use in SAP to avoid the inconsistancy at the time of data is being insert/change into database.
    SAP Provide three type of Lock objects.
    - Read Lock(Shared Locked)
    protects read access to an object. The read lock allows other transactions read access but not write access to
    the locked area of the table
    - Write Lock(exclusive lock)
    protects write access to an object. The write lock allows other transactions neither read nor write access to
    the locked area of the table.
    - Enhanced write lock (exclusive lock without cumulating)
    works like a write lock except that the enhanced write lock also protects from further accesses from the
    same transaction.
    You can create a lock on a object of SAP thorugh transaction SE11 and enter any meaningful name start with EZ Example EZTEST_LOCK.
    Use: you can see in almost all transaction when you are open an object in Change mode SAP could not allow to any other user to open the same object in change mode.
    Example: in HR when we are enter a personal number in master data maintainance screen SAP can't allow to any other user to use same personal number for changes.
    Technicaly:
    When you create a lock object System automatically creat two function module.
    1. ENQUEUE_<Lockobject name>. to insert the object in a queue.
    2. DEQUEUE_<Lockobject name>. To remove the object is being queued through above FM.
    http://help.sap.com/saphelp_nw04/helpdata/en/cf/21eea5446011d189700000e8322d00/content.htm
    GO TO SE11
    Select the radio button "Lock object"..
    Give the name starts with EZ or EY..
    Example: EYTEST
    Press Create button..
    Give the short description..
    Example: Lock object for table ZTABLE..
    In the tables tab..Give the table name..
    Example: ZTABLE
    Save and generate..
    Your lock object is now created..You can see the LOCK MODULES..
    In the menu ..GOTO -> LOCK MODULES..There you can see the ENQUEUE and DEQUEUE function
    Lock objects:
    http://www.sap-img.com/abap/type-and-uses-of-lock-objects-in-sap.htm
    http://help.sap.com/saphelp_nw04s/helpdata/en/cf/21eea5446011d189700000e8322d00/content.htm
    Match Code Objects:
    http://help.sap.com/saphelp_nw2004s/helpdata/en/41/f6b237fec48c67e10000009b38f8cf/content.htm
    http://searchsap.techtarget.com/tip/0,289483,sid21_gci553386,00.html
    See this link:
    http://www.sap-img.com/abap/type-and-uses-of-lock-objects-in-sap.htm
    Lock objects are used to synchronize access to the same data by more than one program.
    General information about the lock mechanism.
    You can synchronize access by several programs to the same data with a logical lock mechanism. This lock mechanism fulfills two main functions:
    A program can tell other programs which data records it is just reading or changing.
    A program can prevent itself from reading data that is just being changed by another program.
    When accessing data records, the records just being edited by other programs can be identified by the entry in the lock table. Such an entry for the lock must define a number of fully specified key fields, that is either a value is passed for the key field or this field is locked generically.
    To set locks, a lock object must be defined in the ABAP Dictionary. When this lock object is activated, two function modules (see Function Modules for Lock Requests) are generated with the names ENQUEUE_<lockobjectname> and DEQUEUE_<lockobjectname>.
    If data records are to be locked, you must call function module ENQUEUE_<lockobjectname>. The values of the key fields that specify the records to be locked are passed for all the tables contained in the lock object when the function module is called. There is a generic lock if a value is not passed for all the key fields. The function module writes the appropriate lock entry (see Example for Lock Objects). If another program also requests a lock, it will be accepted or rejected depending on the lock mode (see Lock Collisions). The program can then react to this situation.
    Locked data records can be unlocked by calling function module DEQUEUE_<lockobjectname>. The key values and the lock mode used to set the lock must be passed to the function module.
    Creating Lock Objects
    Procedure
    Select object type Lock object in the initial screen of the ABAP Dictionary, enter an object name and choose Create. The name of a lock object should begin with an E (Enqueue).
    The maintenance screen for lock objects is displayed.
    Enter an explanatory short text in the field Short text.
    You can then use the short text to find the lock object at a later time, for example with the R/3 Repository Information System.
    Enter the name of the primary table of the lock object.
    All other tables in the lock object must be linked with the primary table using foreign keys. There are also some restrictions on the valid foreign key relationships.
    Select the lock mode of the primary table in the field below it.
    The lock mode is used as the default value for the corresponding parameters of the function modules generated from the lock object.
    Choose Add if you want to lock records in more than one table with the lock object.
    A list of all the tables linked with the primary table using valid foreign keys is displayed. Select the appropriate table. The lock mode of the primary table is copied as lock mode. You can change this setting as required, for example you can assign the lock mode separately for each table.
    Similarly, you can add a table linked with the secondary table just added with foreign keys. To do this, place the cursor on the name of the secondary table and choose Add.
    If no lock mode is assigned to a table, no lock is set for the entries in this table when the generated function modules are called. You should not assign a lock mode if a secondary table was only used to define a path between the primary table and another secondary table with foreign keys.
    Save your entries.
    A dialog box appears in which you have to assign the lock object a development class.
    You can (optionally) exclude lock parameters (see lock objects) from the function module generation on the Lock parameter tab page. This makes sense for example if you always want to lock a parameter generically.
    To do this, simply deselect the Weight flag for the parameter. The parameter is not taken into consideration in the generated function modules. This parameter is then always locked generically.
    The name of a lock parameter is usually the name of the corresponding table field. If two fields with the same name are used as lock parameters in the lock object from different tables, you must choose a new name for one of the fields in field Lock parameter.
    You can define whether the function modules generated from the lock object should be RFC-enabled on the Attributes tab page.
    If you set the Allow RFC flag, the generated function modules can be called from within another system with Remote Function Call.
    If you permit Remote Function Calls for an existing lock object, you must ensure that the generated function modules are called from within an ABAP program with parameters appropriate for the type. You should therefore check all programs that use the associated function modules before activating the lock object with the new option.
    Choose .
    Result
    When you activate the lock object, the two function modules ENQUEUE_<lockobjectname> and DEQUEUE_<lockobjectname> are generated from its definition to set and release locks.
    Regards
    Vasu

  • Finding caller program in a RFC call

    Hi experts,
    We are having lots of CALL_FUNCTION_NOT_FOUND short dumps in one of our systems. The errors are caused because other systems call a function that does not exist, so the dumps are created.
    What we would like to know is what program is doing these calls, since all we can see in the short dump is the caller system and the function it is trying to access, but not the exact program where the call is performed so we can fix the code.
    Thanks in advance for your support.

    Sorry if this is too much of a wall of text, I can't find an "attach file" type feature.
    ABAP runtime errors    CALL_FUNCTION_NOT_FOUND
           Occurred on     11.12.2006 at 10:04:34
    Function module "Y_EF_DETERMINE_PICTURE" not found.
    What happened?
    The function module "Y_EF_DETERMINE_PICTURE" was called, but cannot be
    found in the Function Library.
    The current ABAP/4 program "SAPMSSY1 " had to be terminated because
    one of the statements could not be executed.
    This is probably due to an error in the ABAP/4 program.
    What can you do?
    Note the actions and input that caused the error.
    Inform your SAP system administrator.
    You can print out this message by choosing "Print". Transaction ST22
    allows you to display and manage termination messages, including keeping
    them beyond their normal deletion date.
    Error analysis
    The program "SAPMSSY1 " contains a CALL FUNCTION statement. The name
    of the function module to be called is "Y_EF_DETERMINE_PICTURE".
    No function module exists with the name "Y_EF_DETERMINE_PICTURE".
    All function modules are stored in the Function Builder (SE37).
    Possible reasons:
    a) Wrong name specified. Particular attention should be paid
       to upper/lower case and underscores ("_").
    or
    b) Transport error
    c) In the case of an enqueue/dequeue module, the lock object
       may not have been activated (ABAP Dictionary).
    How to correct the error
    Check the last transports to the R/3 System.
    Is the program "SAPMSSY1 " currently being changed?
    If an enqueue/dequeue module is involved, is the activation
    of the lock object missing in the ABAP/4 Dictionary?
    If the error occurred in a non-modified SAP program, you may be
    able to find a solution in the SAP note system.
    If you have access to the note system yourself, use the following
    search criteria:
    "CALL_FUNCTION_NOT_FOUND"
    "SAPMSSY1 " or "SAPMSSY1 "
    "REMOTE_FUNCTION_CALL"
    Function modules with names similar to "Y_EF_DETERMINE_PICTURE":
    Y_EF_USEX_DETERMINE_TAX
    Y_GF1_DETERMINE_RECTYPE
    Y_GK_DETERMINE_PRCTR
    Y_EF_USEX_PICTURE_SUBMIT
    Y_EF_USEX_SHOW_PICTURE
    Y_EF_RFC_PICTURE_POST
    Y_GF1_DETERMINE_SBU
    Y_GF_DETERMINE_VERSION
    Y_GF_DETERMINE_DATE_PREVMON
    Y_GF1_DETERMINE_CURRENT_PERIOD
    If you cannot solve the problem yourself, please send the
    following documents to SAP:
    1. A hard copy print describing the problem.
       To obtain this, select the "Print" function on the current screen.
    2. A suitable hardcopy prinout of the system log.
       To obtain this, call the system log with Transaction SM21
       and select the "Print" function to print out the relevant
       part.
    3. If the programs are your own programs or modified SAP programs,
       supply the source code.
       To do this, you can either use the "PRINT" command in the editor or
       print the programs using the report RSINCL00.
    4. Details regarding the conditions under which the error occurred
       or which actions and input led to the error.
    System environment
    SAP Release.............. "46C"
    Application server....... "sapgp1s"
    Network address.......... "52.99.71.21"
    Operating system......... "AIX"
    Release.................. "5.3"
    Hardware type............ "00C4449E4C00"
    Database server.......... "sapgp1s"
    Database type............ "DB6"
    Database name............ "GP1"
    Database owner........... "SAPR3"
    Character set............ "en_US.ISO8859-1"
    SAP kernel............... "46D"
    Created on............... "Aug 26 2005 22:40:31"
    Created in............... "AIX 1 5 0056AA8A4C00"
    Database version......... "DB6_71 "
    Patch level.............. "2113"
    Patch text............... " "
    Supported environment....
    Database................. "DB6 06., DB6 07., DB6 08.*"
    SAP database version..... "46D"
    Operating system......... "AIX 1 4, AIX 2 4, AIX 3 4, AIX 1 5, AIX 2 5, AIX 3
    5, , System build information:, -
    , LCHN :
    User, transaction...
    Client.............. 000
    User................ "SAPSYS"
    Language............ "E"
    Transaction......... " "
    Program. ........... "SAPMSSY1 "
    Screen. ............ "SAPMSSY1 3004"
    Line of screen...... 2
    Information about Remote Function Call (RFC) Caller:
    System.............. "WP1 "
    Database release.... "46C "
    Kernel release. .... "46D "
    Connection type. ... "3 " (2 = R/2, 3 = R/3, E = Extern, R = Reg.
    Call type........... "S-" (S = synch., a/A = asynch., T = transactional
    Client.............. 510
    User................ "PC1706 "
    Transaction......... "/COCKPIT/1 "
    Function module..... "Y_EF_DETERMINE_PICTURE"
    Call destination.... "GP1590"
    Source server....... "wsdux44_WP1_10"
    Source IP address... "52.99.71.124"
    Additional information about RFC logon:
    Trusted relationship " "
    Logon return code... " "
    Trusted return code. " "
    Note: In Releases earlier than 4.0, some of the above information about
    RFC calls may not be available.
    Information on where termination occurred
    The termination occurred in the ABAP/4 program "SAPMSSY1 " in
    "REMOTE_FUNCTION_CALL".
    The main program was "SAPMSSY1 ".
    The termination occurred in line 67
    of the source code of program "SAPMSSY1 " (when calling the editor 670).
    Source code extract
    000370   ENDMODULE.
    000380
    000390   MODULE %_RFCDIA_CALL OUTPUT.
    000400       "Do not display screen !
    000410       CALL 'DY_INVISIBLE_SCREEN'.
    000420       PERFORM REMOTE_FUNCTION_DIACALL.
    000430   ENDMODULE.
    000440
    000450   MODULE %_CPIC_START.
    000460     IF SY-XPROG(4) = '%RFC'.
    000470       PERFORM REMOTE_FUNCTION_CALL USING RFCTYPE_EXTERNAL_CPIC.
    000480     ELSE.
    000490       CALL 'APPC_HD' ID 'HEADER' FIELD HEADER ID 'CONVID' FIELD CONVID.
    000500       PERFORM CPIC_CALL USING CONVID.
    000510     ENDIF.
    000520   ENDMODULE.
    000530
    000540
    000550   FORM CPIC_CALL USING CONVID.
    000560     COMMUNICATION SEND ID CONVID BUFFER HEADER.
    000570     IF SY-SUBRC EQ 0.
    000580       PERFORM (SY-XFORM) IN PROGRAM (SY-XPROG).
    000590     ELSE.
    000600       MESSAGE A800.
    000610     ENDIF.
    000620   ENDFORM.
    000630
    000640
    000650   FORM REMOTE_FUNCTION_CALL USING VALUE(TYPE).
    000660     DO.
          CALL 'RfcImport' ID 'Type' FIELD TYPE.
    000680       PERFORM (SY-XFORM) IN PROGRAM (SY-XPROG).
    000690       RSYN >SCONT SYSC 00011111 0.
    000700     ENDDO.
    000710   ENDFORM.
    000720
    000730   FORM REMOTE_FUNCTION_DIASTART.
    000740     DO.
    000750       CALL 'RfcImport' ID 'Type' FIELD RFCTYPE_RFCDIA.
    000760       PERFORM (SY-XFORM) IN PROGRAM (SY-XPROG).
    000770       "Parking position for next request
    000780       RSYN >SCONT SYSC 00011111 10.
    000790       "ALternativ : Free mode
    000800       "COMMIT WORK.
    000810       "SYSTEM-CALL FREE MODE 0.
    000820     ENDDO.
    000830   ENDFORM.
    000840
    000850   FORM REMOTE_FUNCTION_DIACALL.
    000860       SY-XCODE = '%_@no@'.
    Contents of system fields
    SY field contents..................... SY field contents.....................
    SY-SUBRC 0                             SY-INDEX 1
    SY-TABIX 0                             SY-DBCNT 0
    SY-FDPOS 0                             SY-LSIND 0
    SY-PAGNO 0                             SY-LINNO 1
    SY-COLNO 1
    Chosen variables
    Name.......................... Contents.1........2........3....+....4
    SY-XPROG
                                   2222222222222222222222222222222222222222
                                   0000000000000000000000000000000000000000
    SY-XFORM                       Y_EF_DETERMINE_PICTURE
                                   554454454544445544555422222222
                                   9F56F45452D9E5F093452500000000
    %_SPACE
                                   0
                                   0
    SY-MSGID
                                   22222222222222222222
                                   00000000000000000000
    EBC_TO_ASC-X05                 P&QéRêSëTèUíVîWïXìY~ZÜ[$*])^;_^
                                   525E5E5E5E5E5E5E5E575D5252525355
                                   06192A3B485D6E7F8C9EACB4CAD9EBFE
    RFCTYPE_QUEUE                  6
                                   0000
                                   0006
    %_PRINT                            000
                                   2222333222222222222222222222222222222222
                                   0000000000000000000000000000000000000000
    ... +  40
                                   2222222222222222222222222222222222222222
                                   0000000000000000000000000000000000000000
    ... +  80                                0 ########
                                   2222222222320000000022222222222222222222
                                   0000000000000000000000000000000000000000
    ... + 120
                                   22222222
                                   0000000
    SY-MSGNO                       000
                                   333
                                   000
    EBC_TO_ASC-X04                 @ A BâC{DàEáFãGåHçIñJÄK.L<M(N+O!
                                   424A4E474E4E4E4E4E4F4C4243424242
                                   0010223B405163758791A4BECCD8EBF1
    SY-MSGV1
                                   2222222222222222222222222222222222222222
                                   0000000000000000000000000000000000000000
    ... +  40
                                   2222222222
                                   0000000000
    SY-MSGV2
                                   2222222222222222222222222222222222222222
                                   0000000000000000000000000000000000000000
    ... +  40
                                   2222222222
                                   0000000000
    SY-MSGV3
                                   2222222222222222222222222222222222222222
                                   0000000000000000000000000000000000000000
    ... +  40
                                   2222222222
                                   0000000000
    SY-MSGV4
                                   2222222222222222222222222222222222222222
                                   0000000000000000000000000000000000000000
    ... +  40
                                   2222222222
                                   0000000000
    %_?NOT_ASSIGNED?
                                   2222
                                   0000
    SPACE
                                   2
                                   0
    SY-REPID                       SAPMSSY1
                                   5454555322222222222222222222222222222222
                                   310D339100000000000000000000000000000000
    TYPE                           3
                                   0000
                                   0003
    SYST                           ########################################
                                   0000000000000000000000000000000000000000
                                   0001000000000000000000000000000000000000
    ... +  40                      ########################################
                                   0000000000000000000000000000000000000000
                                   0000000000010000000100000000000000000000
    ... +  80                      ########################################
                                   0000000000000000000000000000000000000000
                                   0000000000000000000000000000000000000000
    ... + 120                      #######################################T
                                   00000000
                                   0000000
    Active calls / events
    No.... Type........ Name..........................
           Programm
           Include                                  Line
         1 FORM         REMOTE_FUNCTION_CALL
           SAPMSSY1
           SAPMSSY1                                    67
         2 MODULE (PBO) %_RFC_START
           SAPMSSY1
           SAPMSSY1                                    31
    Internal notes
    The termination occurred in the function "link_rfdir" of the SAP
    Basis System, specifically in line 165 of the module
    "//bas/46D/src/krn/runt/ablink.c#3".
    The internal operation just processed is "CALY".
    The internal session was started at 20061211100434.
    Active calls in SAP kernel
    => 64 bit R/3 Kernel
    => 64 bit AIX Kernel
    => Heap limit      = unlimited
    => Stack limit     = unlimited
    => Core limit      = 51200000
    => File size limit = unlimited
    => Heap address  = 0x118dba360
    => Stack address = 0xfffffffffff5d50
    => Stack low     =  0xfffffffffff5d50
    => Stack high    =  0xffffffffffff600
    => Stack Trace:
         AixStack() at 0x100059364
         CTrcStack2() at 0x10005945c
         rabax_CStackSave() at 0x10003959c
         ab_rabax() at 0x1000425b4
         link_rfdir() at 0x100540418
         ab_link() at 0x100540a18
         ab_rfcimport() at 0x1005f49f0
         ab_jcaly() at 0x100024560
         ab_extri() at 0x100487474
         ab_xevent() at 0x10059c804
         ab_dstep() at 0x10043bd98
         dynpmcal() at 0x100942f94
         dynppbo0() at 0x100941320
         dynprctl() at 0x100948f40
         dynpen00() at 0x1008f7818
         Thdynpen00() at 0x1001429f4
         TskhLoop() at 0x100146368
         tskhstart() at 0x1001576ac
         DpMain() at 0x100e06e38
         main() at 0x100de72f4
    List of ABAP programs affected
    Type
    Program
    Gen. date  time
    LoadSize
    Prg
    SAPMSSY1
    04.01.2000 19:06:59
    20480
    List of internal tables
    No dump information available
    Directory of application tables (contents)
    Program
      Name..........  Contents.1........2........3....+....
    Directory of data areas (administration information)
    Program
      No.. Name..........  Lgth  Ofsg Type Next Gen date   Gen time
      SYST
           L not assigned -15         0 IN
           M /%_LISTTABLE -14         1 CO 0
           T global stack -13  1      2 GL 0
      SAPMSSY1
           A global data    0         3 DA
           L constant dat   1         4 LI        .0 .0216
           L constant dat   2         5 LI SSY    .0 .018B
           L not assigned   3         6 IN
           L SYST           4         7 TA 0
           L SY             5         8 TA
           L RSJOBINFO      6         9 TA
           M /%_SYS%%       7         0 CO
           M field symbol   8         1 FS
           L TCPIC          9         2 TA
           M field symbol  10         3 FS
           L text pool     11         4 TP
    Directory of data areas (contents)
    Program
      No.. Name.......... Contents..1........2........3....+....
      SYST
           L not assigned   0
           L text pool    102 |SAPMSSY1
    ABAP control blocks CONT
    Include                                 Line source code
    Index Name F1 Co Par01 Par2. Par3. Par4. Tabl
    SAPMSSY1                                   60 MESSAGE A800.
      215 CLEA 00     84
      216 CLEA 00     85
      217 MESS 00     27
    SAPMSSY1                                   62 ENDFORM.
      218 ENDF 00
      219 -
      223 -
    SAPMSSY1                                   65 FORM REMOTE_FUNCTION_CALL USIN
      227 PERP 00     1
      228 PERP 02
    SAPMSSY1                                   66 DO.
      229 WHIL 00  2
      233 WHIL 00  3
      237 BRAN 05 Branch to  251
    SAPMSSY1                                   67 CALL 'RfcImport' ID 'Type' FIE
      238 CALY 00  3  86     70    71     71
    >>>>> CALY 02     87    P0
    SAPMSSY1                                   68 PERFORM (SY-XFORM) IN PROGRAM
      246 xper 02     12     13
      248 PERP 80
    SAPMSSY1                                   69 RSYN >SCONT SYSC 00011111 0.
      249 SYSC 1F
    SAPMSSY1                                   70 ENDDO.
      250 BRAX 00 Branch to  233
      251 WHIL 00  4
    SAPMSSY1                                   71 ENDFORM.
      255 ENDF 00
      256 -
    End of runtime analysis

  • RFC calls are taking too many work process -- system knock out

    Hi,
    I have an interface remote function, which is going to be called by a java program.
    Data is going to be sent to the system, processed and sent back syncronous to the caller.
    The calls are working on SAP tables, so I needed to lock and unlock the tables. The java program
    is opening many parallell threads and starts them the same time.
    That means, that the sap system is getting attacked by many rfc calls on the same function, with the
    same user at the same time.
    The system has in development 15 dialog work processes set up. If I run that with up to 15 parallell rfc calls, all is working ok!
    Let me now explain the problem:
    I have programmed the table lock, that it´s trying to lock the table at the beginning of the function.
    If it´s not possible it tries it again. At first I have just inserted a one second wait and let that run maximum 3 times. If the table is still locked, it breaks down with an error.
    But because the calls come nearly to exactly the same time to the system, the first call locks all others out, and the rest ran out of the 3 seconds and ended up with an error.
    So I tried to build an endless loop, which is just ending, when the table could be locked again, or when the runtime of 5 seconds has reached. That means, it´s not waiting for a second, if the table is locked, but it´s trying again and again up to 5 seconds.
    That is all ok, because sometime the table is free again and all calls are then processed alright.
    BUT if I now run that with MORE than 15 rfc calls from the java program (15 dialog processes are set up), the system got knocked out! It is using all free work processes for the RFC calls and get stucked. I think, the first call is locking the table, and the got stopped by the system. And then all the others are running in the endless loop....
    So, shouldn´t be there a limit for dialog processes taken by RFC calls? For example here for this user? In this case it should f.e. be set to 10 free processes with 5, which are reserved for other users...
    Any advices?
    The second is, how can I change the lock mechanism, that I don´t use an endless loop? Waiting for one second and doing that 3 times, is not good enough... Because all the rfc calls wait then for one second, up to 3 times, and end with an error....
    Is it possible to wait for half seconds, or defined milli seconds?
    Thank you for all advices!

    Hi,
    What I have understood is you are trying to lock the table in a loop and just checking the duration by explicitly putting wait statement.
    Hope you are NOT locking the entire table rather a particular record in each lock.
    No need to use explicit wait statement rather its better to let SAP thinks when to lock the table T1 when its already locked by another work process. So just set the wait parameter for the Enqueue function module as 'X' and check how it behaves. Until the table is not unlocked the process will wait.
    If you see the wait parameter for the Enqueue function module is not available then create your own lock object for the table and use that. Make sure its getting dequeued else you can understand better
    Cheers
    Somnath

  • Let me know creation of lock object

    let me know creation of lock object

    Hi
    <b>Lock Objects</b>
    Lock object concept
    Lock modes
    Creating a lock object (example)
    Lock object sample code
    SAP data dictionary provides you with a locking mechanism to synchronize simultaneous data access by different users.
    Lock objects are created in SE11.
    Customer lock objects must begin with EY or EZ .
    Three possible lock modes exist for lock objects.
    <b>Lock Mode</b>
    Lock mode E: This sets a lock for changing data for single user. This lock can be accumulated.
    Lock mode X: This mode is used like mode E for changing data. The only technical difference from mode E is that the respective lock does not allow accumulation.
    Lock mode S: This mode ensures that data displayed in your program cannot be changed by other users during the entire display time. Here you do not want to change the data yourself (allows read only access for data).
    <b>Creating Lock object</b>
    SE11
    1)Enter lock object name beginning with EY or EZ
    and hit create.
    2)Enter table names containing data records that should be locked and the lock mode.
    Enter short text /tbale/lockmode.
    3) The primary keys of the specified tables are automatically selected as lock parameters.
    It automatically selects the primary key for the selected table.
    To set a lock in the application program
    call a function module ENQUEUE_<LOCK_OBJECT>.
    For our example, it would be ENQUEUE_EZMARA.
    To release the lock in the application program
    call a function module DEQUEUE_<LOCK_OBJECT>.
    For our example, it would be DEQUEUE_EZMARA.
    Refer the code executed by user (say abap1) for
    matnr = ’000000000000000012’.
    Lock Objects are used to synchronize access to the same data by more than one user. Function modules that can be used in application programs are generated from the definition of a lock object in the ABAP Dictionary.
    The R/3 System synchronizes simultaneous access of several users to the same data records with a lock mechanism. When interactive transactions are programmed, locks are set and released by calling function modules .These function modules are automatically generated from the definition of lock objects in the ABAP Dictionary.
    Structure of a Lock Object
    The tables in which data records should be locked with a lock request are defined in a lock object together with their key fields.
    When tables are selected, one table (the primary table) is first selected. Further tables (secondary tables) can also be added using foreign key relationships.
    Lock Arguments
    The lock argument of a table in the lock object consists of the key fields of the table.
    The lock argument fields of a lock object are used as input parameters in the function modules for setting and removing locks generated from the lock object definition. When these function modules are called, the table rows to be locked or
    unlocked are specified by defining certain values in these fields.These values can also be generic. The lock argument fields therefore define which subset of the table rows should be locked
    Data Dictionary/ Lock Objects
    The simplest case of a lock object consists of exactly one table and the lock argument of the table is the primary key of this table. Several tables can also be included in a lock object. A lock request therefore can lock an entire logical
    object, and not only a record of a table. Such a logical object can be for example a document comprising an entry in a header table and N entries in a positiontable.
    Lock Mode
    The lock mode controls whether several users can access data records at the same time. The lock mode can be assigned separately for each table in the lock object. When the lock is set, the corresponding lock entry is stored in the
    lock table of the system for each table. Access by more than one user can be synchronized in the
    following ways:
    Exclusive lock: The locked data can only be displayed or
    edited by a single user. A request for another exclusive lock
    or for a
    shared lock is rejected.
    Shared lock: More than one user can access the locked data
    at the same time in display mode. A request for another
    shared lock is accepted, even if it comes from another user. An exclusive lock
    is rejected. Exclusive but not cumulative: Exclusive locks can be requested
    several times from the same transaction and are processed
    successively. In contrast, exclusive but not cumulative locks
    can be called only once from the same transaction. All other
    lock requests are rejected.
    1) Select object type Lock object in the initial screen of the ABAP Dictionary, enter an object name and choose Create. The name of a lock object should begin with an E (Enqueue).The maintenance screen for lock objects is displayed.
    2) Enter an explanatory short text in the field Short text. You can then use the short text to find the lock object at a later time, for example with the R/3 Repository Information System.
    3) Enter the name of the primary table of the lock object. All other tables in the lock object must be linked with the primary table using foreign keys.
    4) Select the lock mode of the primary table in the field below it The lock mode is used as the default value for the corresponding parameters of the function modules generated from the lock object.
    5) Choose Add if you want to lock records in more than one
    table with the lock object. A list of all the tables linked with the primary table using valid foreign keys is displayed. Select the appropriate table. The lock
    mode of the primary table is copied as lock mode. You can change this setting as required, for example you can assign the lock mode separately for each table.
    Similarly, you can add a table linked with the secondary table just added with foreign keys. To do this, place the cursor on the name of the secondary table and choose Add.
    If no lock mode is assigned to a table, no lock is set for the
    entries in this table when the generated function modules are
    called. You should not assign a lock mode if a secondary table
    was only used to define a path between the primary table and
    another secondary table with foreign keys.
    6) Save your entries.
    A dialog box appears in which you have to assign the lock
    object a development class.
    7) You can define whether the function modules generated from
    the lock object should be RFC-enabled on the Attributes tab
    page. If you set the Allow RFC flag, the generated function
    modules can be called from within another system with Remote
    Function Call. If you permit Remote Function Calls for an
    existing lock object, you must ensure that the generated
    function modules are called from within an ABAP program with
    parameters appropriate for the type. You should therefore check
    all programs that use the associated function modules before
    activating the lock object with the new option.
    8) Choose Activate
    <b>Reward if u sefull</b>

  • Implementing lock object

    I've a TCode to modify a report. That TCode picks a doc no. from a table & opens up an editable ALV based on that doc. no .That doc. no. is the only primary key.
    I want that if someone is already opened that report, & if someoen else is trying to open that report, it shouldn't open & should show that -"its locked by User  XXX". I've made a lock object for that table. Please advise what to do next. How to populate the User name who has locked the report.

    used ENQUEUE function  and DEQUEUE function
    Function Modules for Lock Requests
    Activating a lock object in the ABAP Dictionary automatically creates function modules for setting (ENQUEUE_<lock object name>) and releasing (DEQUEUE_<lock object name>) locks.
    The generated function modules are automatically assigned to function groups. You should not change these function modules and their assignment to function groups since the function modules are generated again each time the lock object is activated.
    Never transport the function groups, which contain the automatically generated function modules. The generated function modules of a lock object could reside in a different function group in the target system. Always transport the lock objects. When a lock object is activated in the target system, the function modules are generated again and correctly assigned to function groups.
    Parameters of the Function Modules
    Field Names of the Lock Object
    The keys to be locked must be passed here.
    A further parameter X_<field> that defines the lock behavior when the initial value is passed exists for every lock field <field>. If the initial value is assigned to <field> and X_<field>, then a generic lock is initialized with respect to <field>. If <field> is assigned the initial value and X_<field> is defined as X, the lock is set with exactly the initial value of <field>.
    Parameters for Passing Locks to the Update Program
    A lock is generally removed at the end of the transaction or when the corresponding DEQUEUE function module is called. However, this is not the case if the transaction has called update routines. In this case, a parameter must check that the lock has been removed.
    Parameter _SCOPE controls how the lock or lock release is passed to the update program (see The Owner Concept for Locks). You have the following options:
    &#65399;        _SCOPE = 1: Locks or lock releases are not passed to the update program. The lock is removed when the transaction is ended.
    &#65399;        _SCOPE = 2: The lock or lock release is passed to the update program. The update program is responsible for removing the lock. The interactive program with which the lock was requested no longer has an influence on the lock behavior. This is the standard setting for the ENQUEUE function module.
    &#65399;        _SCOPE = 3: The lock or lock release is also passed to the update program. The lock must be removed in both the interactive program and in the update program. This is the standard setting for the DEQUEUE function module.
    Parameters for Lock Mode
    A parameter MODE_<TAB> exists for each base table TAB of the lock object. The lock mode for this base table can be set dynamically with this parameter. The values allowed for this parameter are S (read lock), E (write lock), X (extended write lock), and O (optimistic lock).
    The lock mode specified when the lock object for the table is created is the default value for this parameter. This default value can, however, be overridden as required when the function module is called.
    If a lock set with a lock mode is to be removed by calling the DEQUEUE function module, this call must have the same value for the parameter MODE_<TAB>.
    Controlling Lock Transmission
    Parameter _COLLECT controls whether the lock request or lock release should be performed directly or whether it should first be written to the local lock container. This parameter can have the following values:
    &#65399;        Initial Value: The lock request or lock release is sent directly to the lock server.
    &#65399;        X: The lock request or lock release is placed in the local lock container. The lock requests and lock releases collected in this lock container can then be sent to the lock server at a later time as a group by calling the function module FLUSH_ENQUEUE.
    Whenever you have lock mode X (extended write lock), locks should not be written to the local lock container if very many locks refer to the same lock table. In this case, there will be a considerable loss in performance in comparison with direct transmission of locks.
    Behavior for Lock Conflicts (ENQUEUE only)
    The ENQUEUE function module also has the parameter _WAIT. This parameter determines the lock behavior when there is a lock conflict.
    You have the following options:
    &#65399;        Initial Value: If a lock attempt fails because there is a competing lock, the exception FOREIGN_LOCK is triggered.
    &#65399;        X: If a lock attempt fails because there is a competing lock, the lock attempt is repeated after waiting for a certain time. The exception FOREIGN_LOCK is triggered only if a certain time limit has elapsed since the first lock attempt. The waiting time and the time limit are defined by profile parameters.
    Controlling Deletion of the Lock Entry (DEQUEUE only)
    The DEQUEUE function module also has the parameter _SYNCHRON.
    If X is passed, the DEQUEUE function waits until the entry has been removed from the lock table. Otherwise it is deleted asynchronously, that is, if the lock table of the system is read directly after the lock is removed, the entry in the lock table may still exist.
    Exceptions of the ENQUEUE Function Module
    &#65399;        FOREIGN_LOCK’: A competing lock already exists. You can find out the name of the user holding the lock by looking at system variable SY-MSGV1.
    &#65399;        SYSTEM_FAILURE: This exception is triggered when the lock server reports that a problem occurred while setting the lock. In this case, the lock could not be set.
    If the exceptions are not processed by the calling program itself, appropriate messages are issued for all exceptions.
    Reference Fields for RFC-Enabled Lock Objects
    The type of an RFC-enabled function module must be completely defined. The parameters of the generated function module therefore have the following reference fields for RFC-enabled lock objects:
    Parameters
    Reference fields
    X_<field name>
    DDENQ_LIKE-XPARFLAG
    _WAIT
    DDENQ_LIKE-WAITFLAG
    _SCOPE
    DDENQ_LIKE-SCOPE
    _SYNCHRON
    DDENQ_LIKE-SYNCHRON
    See also:
    Example for Lock Objects
    http://help.sap.com/saphelp_nw04/helpdata/en/cf/21eebf446011d189700000e8322d00/content.htm

Maybe you are looking for

  • Is this a problem? Or is it normal?

    Just a quick question, does your iPhone 4/4S make a rattling sound near the camera? and if you tap it near the bottom right hand corner (see picture) does it make a faint humming sound (much like the vibrating sound).

  • Black and white with a touch of colour

    Hey Folks, I need your help again please. I need to amend a shot in my film so that most of it is in black and white and only a part of it is in colour. This is the shot: Five guys walk into a room. The shot so far is in full colour. What I need to d

  • Combo box slider

    I have successfully created a combo box, however, none of the tutorials I have found discuss the inclusion of a scroll bar within a combo box.  I want the data list to revert back to the original start state when the user clicks on an item in the lis

  • Importing RAW images from Canon 450D SLR

    I run iPhoto 6 and I have recently updated my digital SLR from a Canon 300D to a 450D. I was able to import CRW Raw files from the 300D but iPhoto will not import Raw images from the 450D (jpegs are ok), which are now coded CR2 instead of CRW. I note

  • Where can I find iCal

    Where can I find the app iCal ?