我曾尝试使用 FM ENQUE_DELETE,但我一直没有得到预期的结果来删除某些表条目的锁定。
我注意到有不同类型的锁,并且锁定这些表条目的程序正在使用锁类型“E”。
我可以将锁定类型设置为“S”(共享),以便第一个程序可以“锁定”表条目,但是一旦第二个程序运行,它就可以删除表锁定?
我曾尝试使用 FM ENQUE_DELETE,但我一直没有得到预期的结果来删除某些表条目的锁定。
我注意到有不同类型的锁,并且锁定这些表条目的程序正在使用锁类型“E”。
我可以将锁定类型设置为“S”(共享),以便第一个程序可以“锁定”表条目,但是一旦第二个程序运行,它就可以删除表锁定?
首先锁定表的程序通常具有设置的类型。如果它不是您的程序,您肯定不能也不允许修改在运行时设置的标准锁类型。我所知道的。
如果是你的程序,那么你可以自定义,你可以使用哪种锁类型。
http://www.sapdev.co.uk/dictionary/lock_enqueue.htm
将告诉您有关类型的信息,链接中的代码示例应提供您可能需要的所有信息。
永远不需要手动显式删除特定的表锁定条目。始终只使用生成的 FMenqueue_...
并dequeue_...
锁定/解锁数据库记录!
这将删除先前创建的锁定条目。
您正在使用哪些表,检查 SE11 中的锁定对象,例如:ENQUEUE_ 和 DEQUEUE_,如果可用,则在 OPEN SQL 语句之前和之后调用它们,如果没有创建锁定对象。
参考: http: //www.sapnuts.com/courses/core-abap/open-sql/using-lock-objects.html
好的。我应该推动我的调查。
我找到了一种方法。通过调试FM的ENQUE_REPORT/READ/DELETE,我找到了一种获取外锁并删除它们的方法,使程序假设当前用户是锁定外锁的用户。=]