Tab enum strict lock

Hello,
I have two questions/problems.
The attachment is a very simple and limited version of the program I'm making.
So removing or changing functionality is not possible or should take weeks.
The program is based on FSM with Enum as Strict type control, event-case structure for event handling and finishing.
Showing/Hiding settings, indicators, screens is mostly done by Tabs, in some cases aditionally with enable/grayed out. 
To give you an idea: The real program has 100+ Buttons, a load of indicators and some displays,
9 Rs232 communications to temp controllers and PLC, nozzles, TCP communication with a servo and cameras,
.net methods functionality for the cameras, and works with 10+ csv files for settings, log and initialisations.
1) In the second program, main2, I clicked on "Tab Control 3", and locked it.
Now it's impossible to unlock it !
First also locking the bigger Tab "Tab Control 1" doesn't help...
2) Situation: The machine is working, with some previous version of the big program. The program can't be run on another (developing) PC,
Making this possible would make me to simulate all the controllers, Modbus signal states, com and .net... so would complicate it too much.
Problem: They asked to make a very big addition, so I made a separate program of only this addition with his own enum/event/case (40 steps/case-pages/events)
Merging both programs is impossible, the events aren't compatible. Even not with both event structures in separate cases, with timeout etc...
How is it possible to merge both programs?  So that te strict type def containt the states of both, the event structure contains all events, the case contains all. Please don't say to drag and drop. As I don't like local variables, most process variables are wired between all loops.
Tip: Don't use "Use default if unwired" in cases, when that default passes the wire.
It will pass data from the previous time that the default page was run, maybe days before.
Sounds normal, but isn't intiutive.
Solved!
Go to Solution.
Attachments:
FSM states.zip ‏55 KB

Thanks Norbert, it only was a problem getting it selected. It works and the Kudo is sent.
ThiCop, in attachment you can find a Zip with 2 programs I want to merge.
Finally, I have 1 program, a result of a merge of the existing (and running) program and the new one.
1 is the main program, already working
2 is the subprogram, I want to put into, developed on anther PC.
I put more explication into the blockdiagram about how & why.
In the ideal world, it would be possible to:
-Merge both enum typedefs (putting all states of both in one). There are no duplicate states.
-Merge the events, because 2 event structures in one program (sometimes) doesn't work and blocks.
-As addition, merging the cases would also be possible. This is less important because I can put them side-by side.
Also a big problem is that, besides the one typedef enum indicator, I have many (100+) typedef constants.
It is possible to disconnect such a constant from the typedef, but how to reconnect to another (new or expanded) typedef?
Now I have to delete it, then create -> constant and choose the state. (100's of times)
Message Edited by ST5 on 01-15-2010 03:50 AM
Attachments:
FSM states merge.zip ‏34 KB

Similar Messages

  • How to strictly lock screen in landscape mode by Agentry editor?

    Hi
    I am using SSM 3.0, Agentry client v6.0.38.1.
    How can I lock Android device screen in strictly landscape mode for our customized Agentry app through Agentry editor?
    If I lock device screen in landscape mode then it will affect other applications too.
    So is there any way to just lock the screen for particular Agentry application?
    Regards
    Prit

    Prit,
    There is no setting in the Agentry to force the application to only landscape or only portrait.
    However, you can through the Android branding process force the orientation.
    After you unzip the SMPAgentryClientFramework-Android-6.0.38.x.zip, in the AgentryAndroidClientSolution folder there is a file AndroidManifest.xml
    You will need to edit this file to add the following directive to the activity tags (12) in the file where the android:name starts with ".ui."
    android:screenOrientation="landscape"
    Here is one example from my file.
    <activity android:name=".ui.screensets.OverlayScreenSetActivity"
                   android:configChanges="orientation|keyboardHidden"
                   android:theme="@style/AgentryActivityDialog"
                   android:screenOrientation="landscape"/>
    After editing and saving the file simply build the branded client and when you launch the new client on the device it should automatically go into landscape mode no matter what orientation the device is in.
    --Bill

  • Firefox loses my open tabs whenever it locks up

    Firefox often locks up. When I restart it, it always loses my open tabs. I am able to restore them from a backup, but this is somewhat tedious. Can anything be done, so that my tabs come up when I restart Firefox (which seems to make a backup of the sessionstore.js file)?

    Hello,
    Did you try set Firefox to always start with the last session?
    Go to '''Tools''' >> '''Options''' >> '''General''' > in the option '''When Firefox starts:''' change to '''Show my windows and tabs from the last time'''
    *[https://support.mozilla.org/en-US/kb/restore-previous-session#w_configuring-session-restore Configuring session restore]
    Also:
    *[https://support.mozilla.org/en-US/kb/how-do-i-restore-my-tabs-last-time How do I restore my tabs from last time?]

  • All Firefox tabs and windows lock up when a single tab can't download a file (video, pdf, etc.)

    If I am trying to load a webpage that contains a video, pdf file, or other large file, sometimes the webpage locks up, and then ALL other Firefox windows and tabs lock up as well (the entire program is frozen). This doesn't happen with IE or Chrome (in Internet Explorer, even though a tab may lock up from loading a large file, the other tabs and windows are still useable). Is there some kind of pluggin I can install to prevent this from happening?

    Hi - yes I can! I hadn't noticed that little arrow before, thanks.
    However I would really like to stop it hiding the first tab all the time.... Even when I navigate to the first tab using that "list all tabs" arrow, it still remains 'hidden' (i.e. I can't see a tab up the top, even when that tab is active. And when I navigate away from it to another tab, it is invisible again).
    Any ideas?
    Thanks

  • Tab control strict typedef hides controls

    "Has the issue of no typedef tabs been resolved in LV7? I am modifying a LV61 vi and severely broke the panel trying to convert a tab to a typedef. I was able to customize, however there was a compile/save error and all the embedded controls on the tab pages became hidden and un retrievable."
    Jim Henderson"

    I just add one control into this table, then immediately turn this typedef into error.
    My question is why can not add any control into the table?
    Attachments:
    tab61.ctl ‏5 KB

  • Alumminium keyboard with imac. tab, space, caps lock, delete,left opt and down arrow stop working.

    Well is this. i already?
    a)reset pram with the p+r+opt+cmd
    b) restart the imac several times
    c) disconect every usb devices and reboot
    d) on/off bluetotth serveral times
    e) try to reinstall the keyboard via "change keyboard"
    f) restore defaults configurations
    - noted something interesting. The other keys work ok. But when i try to configure bluetooth keyboard - he cannot find the same.
    if i try to update de firmware again - i take a msg  "no alluminiun keyboard was found˜.
    All this after i install a time capsule that take me 3 days to wonder that the anti-virus (sophos) was slowing down and frezzing my imac.
    When the back up complete my keyboard just stop working.
    Now i'm with a microsoft keyboard in a USB in my 1 year imac 27.
    Reinstall the OS it's not a really good option, once i just end to organized my photos, movies etc..etc.. my domestic network etc.etc.
    Anyone?
    PS - i think that apple propaganda its innacurate, at least, my older PC issues i was able to resolve without digging the internet for days with no result. My nearest apple store it[s 110 km from where i live.  bad business....

    Would like to update.
    my alluminium keyboard was able to pair with my macbook white, but the keys still not working.
    i succesful reset the BT and repair with the imac with no luck
    try to SCM - hard reset the keyboard withdrawing the batteries and pressing the starting butoon. still the same problem
    nobody has a domestic solution for this?
    tks

  • Tab rulers are not locked to text blocks

    I have a brand new (2 weeks old) iMac working with CS4. I work in Prepress so my typesetting skills are a bit rusty...
    I am trying to work with the tab ruler. If I am viewing as a full page and have my text block selected, my tab rulers open up to the correct size on my text block. However since my document is quite large and my text block is tiny when viewed as full page, I am zooming into my text block to be able to see it correctly. My Tab rulers stay locked to the size and space of my full page viewer, even if I close my ruler and zoom in, then re-open it. What am I doing wrong?

    P Spier wrote:
    The tab panel can be automatically sized and positioned over a column by by clcikinb the little magnet inthe lower right corner, but ONLY if there is enough space on the screen to put it above the column.
    To clarify: That is, only if the entire width of the column is on screen, and only if your left sock is inside out (right sock during daylight savings time).

  • Record lock error occurs randomly, when same task opened in 2 browser tabs

    I am having an ADF UI taskflow with two flows(paths):
    Flow1 - Edit DFF
    ProcessParameters ----> router---> IFEDIT---->SetEditedStatusAttribute MethodCall --> editDFFpage
    Flow2 - Manage DFF Accross All Modules
    ProcessParameters ----> router---> IFSEARCH---->SearchQuerypanel editbutton>SetEditedStatusAttribute MethodCall --> editDFFpage
    These two flows can be triggered from links in a task panel. Screenshot [http://act.us.oracle.com/~vmeka/lockerror/lockerror.JPG]
    the method call setEditedStatusAttribute, calls an EOImpl method to set an attribute.
    This in turn triggers lock() for all the associated EOs.
    In following scenario failure occurs:
    ->1. Click Edit DFF task and keep the web browser tab/window open - lock is acquired.
    ->2. Open http://localhost7101/ManageFlex-WebApp_Test-context-root/faces/ManageFlex in another tab/window and open the Edit DFF task. lock is acquired again.
    ->3. In the same tab re-run the page by removing session details suffix.
    Eg. http://dadvml0082.us.oracle.com:7108/ManageFlex-WebApp_Test-context-root/faces/ManageFlex?_afrLoop=19870268404083601&_afrWindowMode=0&_adf.ctrl-state=sbc4nhzgh_116
    Remove the end part that starts with ?_afrLoop= and press enter in the Address bar of browser. lock is acquired third time.
    ->5. This re-runs the page, open Edit task again
    ->6. Without pressing cancel , open Manage DFF task
    ->7. Do not perform any search operation and open Edit FF task again. lock is acquired fourth time.
    ->8. Repeat steps 5-7 a few number of times
    In step 5 or 7 I am hitting an exception with following message
    JBO-26030: Failed to lock the record, another user holds the lock.
    stack: (complete stack at [http://act.us.oracle.com/~vmeka/lockerror/stack1.txt] )
    oracle.jbo.AlreadyLockedException: JBO-26030: Failed to lock the record, another user holds the lock.
    at oracle.jbo.server.OracleSQLBuilderImpl.doEntitySelectForAltKey(OracleSQLBuilderImpl.java:1085)
    at oracle.jbo.server.BaseSQLBuilderImpl.doEntitySelect(BaseSQLBuilderImpl.java:546)
    at oracle.jbo.server.EntityImpl.setAttribute(EntityImpl.java:1485)
    at oracle.apps.fnd.applcore.flex.dff.model.entity.DescriptiveFlexfieldEOImpl.updateDeploymentStatus(DescriptiveFlexfieldEOImpl.java:1804)
    at oracle.apps.fnd.applcore.flex.dff.model.entity.DescriptiveFlexfieldEOImpl.setEditedStatus(DescriptiveFlexfieldEOImpl.java:1753)
    at oracle.apps.fnd.applcore.flex.dff.uiModel.applicationModule.DFFSetupUIAMImpl.editDescriptiveFlexfield(DFFSetupUIAMImpl.java:770)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    Any Idea why the lock error occurs after a few iterations, and not immediately after Edit DFF is opened in a second tab?
    Thanks,
    vikranth
    Edited by: user10124649 on Nov 25, 2009 8:04 AM

    Hi,
    on the ApplicationModule, did you set the locking behavior to optimistic ? For web applications it should be optimistic and not pessimistic, which is the default setting. Select the AM and choose "Configurations" from the context menu. Click edit and select the property tabs. Look for the locking setting, which should be set to "pessimistic if you did not change it before. Just replace the current value with optimistic
    Frank

  • Recent items tab is locked

    I changed users on my ibook. I imported the appleworks preferences and user data from the old user to the new.
    Now when I open Appleworks the Recent Items tab in Starting points has a paddle lock icon. I assume that I cannot add or delete items to this Tab. Any way to unlock it?
    The other problem I'm having in the new user account is that I cannot save a document anyplace in the new user window. When I try to save a new document to the desktop, I get an error message that says volume not found.
    I can save just fine in my administrator account and its recent items tab has no lock icon.
    All suggestions appreciated.
    Waring

    Hi Waring,
    Welcome to Apple Discussions and the AppleWorks forum.
    This is probably a permissions issue—your current User account doesn't have read-write permission for the folder holding Recent Items.
    In the Finder, go to HD > username > Documents > Appleworks User Data > Starting Points > Recent Items.
    Click on the folder, then press command-I to Get Info.
    Show Details in the Owner and Permissions section of the Get Info window, then set all three menus to Read and Write. This may require an admin password, or may need to be done from your Admin account.
    Regards,
    Barry

  • [Solved] xmodmap bug? Remapping Caps Lock doesn't work

    When I program I like to swap these keys:
    Esc <-> Tab
    Ctrl <-> Caps Lock
    In ~/.xmodmap, I have specified these re-mappings:
    keycode 66 = Control_L
    keycode 37 = Caps_Lock
    keycode 23 = Escape
    keycode 9 = Tab
    The Escape and Tab keys swaps, no problem, but instead of Caps_Lock and Control_L swapping, both those keys becomes Caps_Lock.
    Whatever I try to do, the Control keys doesn't get assigned to Caps_Lock(keycode 66). If I leave the keycode 66 = , the key is un-assigned, but when I assign Control_L or Control_R, it just doesn't work. But, if I assign some other key, for example, keycode 66 = Tab, it gets assigned, no problem.
    Its like xmodmap just doesn't want Caps Lock and Control keys to be swapped. Really frustrating. Any help/pointers would be really helpful.
    Last edited by Gits (2012-04-12 07:09:37)

    Solved: http://unix.stackexchange.com/questions … oesnt-work

  • [ADF-11.1.2] Locking issue with SQL 92

    I see one Locking issue with SQL92 Oracle ADF Application.
    ADF Version: [ADF-11.1.2]
    Database: Oracle 10g Express Edition
    Situation 1:
    With Following setting:
    File: Application Resource > Description > ADF META-INF > adf-config.xml
        <startup>
          <amconfig-overrides>
            <config:Database jbo.SQLBuilder="SQL92" jbo.locking.mode="optimistic"/>
          </amconfig-overrides>
        </startup>I have a page showing record 'x' of view object. I open same record on another page. Now I have same record showing on two different tabs of browser.
    1. I modify first record and save it. It worked... Got commited to database.
    2. I goto second tab and modify same record and tried to same it. It throws me an error - Another user has changed the row with primary key oracle.jbo.Key[38 ] . As expected...
    3. I then, reopen the same record on 3rd tab of browser. Modify it and tried to save it. It just hang... as if it is processing the record endlessly.
    If I see the Log:
    <BaseSQLBuilderImpl> <doEntitySelectForAltKey> [312] BaseSQLBuilderImpl Executing doEntitySelect ... (true)
    <BaseSQLBuilderImpl> <doEntitySelectForAltKey> [313] Generating new LOCK statement
    <BaseSQLBuilderImpl> <buildSelectString> [314] Built select: 'SELECT ID, CI_ID, COLUMN_NAME, DISPLAY_COLUMN_NAME, COLUMN_VALUE, CREATE_DATE, CREATE_BY FROM ESUSER.CI_AUDIT'
    <BaseSQLBuilderImpl> <doEntitySelectForAltKey> [315] Executing LOCK "SELECT ID, CI_ID, COLUMN_NAME, DISPLAY_COLUMN_NAME, COLUMN_VALUE, CREATE_DATE, CREATE_BY FROM ESUSER.CI_AUDIT WHERE ID=? FOR UPDATE"
    <BaseSQLBuilderImpl> <bindWhereAttrValue> [316] Where binding param 1: 38
    That's it.. nothing happens further.. If I execute above query on SQL Worksheet, it doesn't come up with the result. Just hang for something...
    SELECT ID, CI_ID, COLUMN_NAME, DISPLAY_COLUMN_NAME, COLUMN_VALUE, CREATE_DATE, CREATE_BY FROM ESUSER.CI_AUDIT WHERE ID='38' FOR UPDATE I can execute above query for other record of same table but not '38'. Even if I fire commit command to database, it is not working.
    I have to restart the database services to bring everything to normal state.
    Situation 2:
    With Oracle as Database :
        <startup>
          <amconfig-overrides>
            <config:Database jbo.SQLBuilder="Oracle" jbo.locking.mode="optimistic"/>
          </amconfig-overrides>
        </startup>Everything is working file. i.e. at step 3, record is getting modified successfully with following log:
    <OracleSQLBuilderImpl> <doEntitySelectForAltKey> [27] OracleSQLBuilder Executing doEntitySelect on: ESUSER.CI_AUDIT (true)
    <ADFLogger> <begin> Entity read all attributes
    <OracleSQLBuilderImpl> <buildSelectString> [28] Built select: 'SELECT ID, CI_ID, COLUMN_NAME, DISPLAY_COLUMN_NAME, COLUMN_VALUE, CREATE_DATE, CREATE_BY FROM ESUSER.CI_AUDIT CIAudit'
    <OracleSQLBuilderImpl> <doEntitySelectForAltKey> [29] Executing LOCK...SELECT ID, CI_ID, COLUMN_NAME, DISPLAY_COLUMN_NAME, COLUMN_VALUE, CREATE_DATE, CREATE_BY FROM ESUSER.CI_AUDIT CIAudit WHERE ID=? FOR UPDATE NOWAIT
    <ADFLogger> <addContextData> Entity read all attributes
    <OracleSQLBuilderImpl> <bindWhereAttrValue> [30] Where binding param 1: 38
    <ADFLogger> <addContextData> Entity read all attributes
    <ADFLogger> <end> Entity read all attributes
    <ADFLogger> <end> Lock Entity
    <ADFLogger> <begin> Before posting the entity's changes
    <ADFLogger> <begin> Updating audit columns
    <ADFLogger> <end> Updating audit columns
    <ADFLogger> <end> Before posting the entity's changes
    <OracleSQLBuilderImpl> <doEntityDML> [31] OracleSQLBuilder Executing, Lock 2 DML on: ESUSER.CI_AUDIT (Update)
    <OracleSQLBuilderImpl> <buildUpdateStatement> [32] UPDATE buf CIAudit>#u SQLStmtBufLen: 210, actual=60
    <OracleSQLBuilderImpl> <doEntityDML> [33] UPDATE ESUSER.CI_AUDIT CIAudit SET COLUMN_VALUE=? WHERE ID=?
    <ADFLogger> <begin> Entity DML
    <OracleSQLBuilderImpl> <bindUpdateStatement> [34] Update binding param 1: cip7ri1
    <OracleSQLBuilderImpl> <bindWhereAttrValue> [35] Where binding param 2: 38
    <ADFLogger> <addContextData> Entity DML
    <ADFLogger> <end> Entity DML
    Can any one please tell me, what is the issue with SQL92 setting ?
    Edited by: Anandsagar Sah on Mar 11, 2012 8:10 AM

    The framework works correctly in the Situation #1. Please, note that the locking statement in this case is "SELECT ... FOR UPDATE", but not "SELECT ... FOR UPDATE NOWAIT" (as it is in the Situation #2). When you entered the 2nd tab and tried to update the row, then the framework executed the locking statement and the row was locked (and it remained locked because the framework detected that another user had modified the row, so it stopped the processing and no COMMIT operation was executed). When you entered the 3rd tab and tried to update the row, then the framework tried to lock the row againg, but the locking statement was blocked by the existign lock and it started waiting on the lock from the 2nd tab. So this is expected behaviour.
    The interesting question is why you do not get any error in the Situation #2. In my opinion you should get an error because the locking statement from the 3rd tab should fail immediately (because the row should have been locked from the 2nd tab and the locking statement is with NOWAIT option). I suspect that when the DB is Oracle and you use Oracle SQLBuilder, then the ADF issues a DB savepoint at the beginning of the DML operation and rolls back to the savepoint is a case of some failure, so the 2nd tab has not left any lock. You can check this by setting on SQL trace on the DB server.
    Dimitar

  • [iPod Touch 3G 32 GB] Auto-Rotate Funktion is not working anymore [Auto-Rotate Lock is not activated]

    Aloha, apple-community
    It seems like i have a very big problem. A few months ago, i noticed first, my iPod wont rotate properly if i tilt it to the left or right sometimes. i had to tilt it twice and than it worked. But after a week, it completly stopped working. Whenever i turned my iPod to the right or left side, nothing happened.
    So i had the idea to restart it, which fixed it for a short time. After the restart was done, i was able to tilt for about 2-5 mins, later the problem appeared again
    Today, nothing is working. Even in Games my iPod wont tilt or even react to any motion i do...
    Well, kinda novel, i know, but i want to be as precise as possible...
    so here are the things i already tried:
    - Updated iTunes to 10.5.2
    - Restored to a Backup
    - Restored to the factory settings
    - Jailbreaked my iPod to downgrade to an earlier Firmware (from 5.0.1)
    - updated again to 5.0.1
    - i made sure, the rotation lock is off, so please don´t give me the advice to double tab the homebutton, swipe left and tab on the lock
    - started crying and thinking about throwing the iPod out of the window
    by the way, my warranty is not active anymore...
    so please guys, do you have a solution or even an advice for me?
    Greatly appreciated,
    Elias

    I just searched the board and it´s funny to see, what i found out:
    This Error ONLY appears with : iPod Touch 3Gen 32GB 2009 Models
    and here´s the proove:
    https://discussions.apple.com/thread/3624353
    https://discussions.apple.com/message/11701607#11701607
    https://discussions.apple.com/message/15434838#15434838
    https://discussions.apple.com/message/12208783#12208783
    https://discussions.apple.com/message/15289257#15289257
    https://discussions.apple.com/message/5638997#5638997
    https://discussions.apple.com/thread/3540043
    https://discussions.apple.com/message/17047827#17047827
    https://discussions.apple.com/message/15242814#15242814
    https://discussions.apple.com/message/15521517#15521517
    https://discussions.apple.com/message/15280916#15280916
    https://discussions.apple.com/message/15277669#15277669
    All those guys and girls have the same problem i also do
    Please guys, give me an idea what to do or even reply if there is no chance :/
    Message was edited by: e1i@zzz

  • Problem with period lock OKP1

    Hi all,
    I locked period in Tcode OKP1 for all transaction
    However, transaction in 9KE0 is not locked yet
    I don't know why. Can anybody help me?
    Thanks and regards

    Hi,
    thathere is no possibility to lock periods / posting transactions in PCA (including distributions), because PCA should be always open for postings. It is designed to be the receiving application of data delivered by the preliminary applications like FI, MM and CO. Therefore period locks must be handled / maintained in those applications. In PCA, there are only two possibilities to prevent postings to profit centers:
    1. is to completely lock profit centers in the master data via    transaction KE52 (tab 'Indicators' -> activate 'Lock indicator'.
       Please read also the F1-help here for the field 'Lock indicator')
    2. to lock one complete fiscal year in the entire Profit-Center Accounting via transaction 1KEF.
    There are two exceptions for that which are provided for transactions 1KEL and 9KE0 by SAP notes 836218 & 436384. As in these notes described, you can block periods via using FI-SL periode-block, but only for manual posting.
    Regards,
    Greta

  • Tabbed with Server Side Include

    Has anyone had any problems adding Server Side Include to the Spry Tabbed Pannels, everytime the I add a SSI to the tabbed content is locks up the tabs.
    Where the hell are to get support is this an interAKT, ADOBE or your on your own.

    Hello,
    I don't have an answer to your problem, because I've never tried this approach.
    However, I can tell you that this is an USER-TO-USER forum. If you need to request technical support from Adobe, you need to go here:
    http://www.adobe.com/go/support/
    regards,
    Ionut

  • How to implement locking in ABAP

    Hello everyone,
        I am doing dialog programming and I have a screen that creates some template. When the user opens up the screen it defualts to next available template number to be created (for example if template No 1 exists then it will default to template no 2 so template 2 will be created). But if multiple users open up the screen then it will show template 2 for both of them and I want to avoid this, i.e. I like to implement some locking mechanism so one user opens up the screen that template is locked and the other cannot create the same template. Please share any ideas and suggestions, how I can imeplement this!
    Thanks.
    Mithun

    Hai  Mithun Dha
    Lock Objects
    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 (see Function Modules for Lock Requests). 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 (see also Conditions for Foreign Keys).
    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.
    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 position table.
    Locks can also be set from programs in other systems with the corresponding interfaces if the lock object was defined with RFC authorization.
    A lock mode can be assigned for each table in the lock object. This mode defines how other users can access a locked record of the table.
    Table SFLIGHT in the  flight model contains all the scheduled flights of a carrier. Field SEATSMAX contains the number of seats available. Field SEATSOCC contains the number of seats already booked. If a booking is made for a customer (by a travel agency or sales desk), you must check whether there are enough seats available. The number of seats booked is incremented when the booking is made.
    This mechanism must ensure that two sales desks do not make the same booking at the same time and that the flight is not overbooked.
    This can be done by creating lock object ESFLIGHT. Only the table SFLIGHT must be included in this lock object. The flight can then be locked (with the function modules generated from the lock object) when booking. If another sales desk also wants to book seats for this flight, the lock will prevent the flight from being overbooked.
    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:
    _SCOPE = 1: Locks and lock releases are not passed to the update program. The lock is removed when the transaction is ended.
    _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.
    _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. Valid values for this parameter are S (shared), E (exclusive) and X (exclusive but not cumulative).
    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:
    Initial value: The lock request or lock release is sent directly to the lock server.
    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.
    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:
    Initial value: If a lock attempt fails because there is a competing lock, the exception FOREIGN_LOCK is triggered.
    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
    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.
    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
    All the tables that can be included in a lock object must be linked with  foreign keys. There are a number of restrictions to the valid relationships.
    The foreign key relationships of the tables of the lock object must form a tree. The tables are the nodes of the tree. The links of the tree mean is the check table of.
    The foreign key fields must be key fields of the foreign key table.
    The foreign key relationships defined between the base tables of the lock objects may not have any field that is checked against more than one other field. A field therefore may not occur twice as foreign key field in a relationship and may not be checked against two different fields in two different foreign key relationships.
    You must keep one restriction in mind for  multi-structured foreign keys. If a field is assigned to a field that is outside the check table, the table containing this field must be in a sub-tree that contains the check table of this foreign key relationship as a root.
    These conditions are always satisfied if the key of the foreign key table is an extension of the key of the check table.
    Conditions 2, 3 and 4 are meaningless if the particular foreign key field was excluded from the assignment to the key fields of the check table by  marking it as generic or setting it to a constant. This is also true for multi-structured foreign keys if the foreign key field refers to a table that is not contained in the lock object.
    Regards.
    Eshwar.

Maybe you are looking for