Posted: Tue Dec 25, 2007 4:38 pm Post subject: Как определить, что транзакция запущена?
Добрый день!
Нужно заблокировать повторый запуск z-транзакции.
На ум приходит создать объект блокировки и использовать его в программе. А что произойдет, если программа будет закрыта аварийно, объект блокироки не исчезнет?
Может существуют способы проще?
Спасибо.
Age: 46 Joined: 05 Nov 2007 Posts: 725 Location: КраснАдар
Posted: Tue Dec 25, 2007 5:08 pm Post subject:
Правильно на ум приходит. При дампе блокировка сама снимется (типа ролбэк происходит), а если система упадет - при повторном логоне "выйти из всех приложений" тоже пропадет.
DATA: usr_tabl TYPE TABLE OF UINFO WITH HEADER LINE.
PARAMETER p_tcode LIKE usr_tabl-tcode DEFAULT 'SE38'.
CALL FUNCTION 'THUSRINFO'
TABLES
usr_tabl = usr_tabl.
WRITE: / p_tcode.
READ TABLE usr_tabl WITH KEY mandt = sy-mandt
tcode = p_tcode.
IF sy-subrc IS INITIAL.
WRITE: 'is running by', usr_tabl-bname.
ELSE.
WRITE: 'is''not running'.
ENDIF.
PS: на скорую руку проверил, была проблема, если от одного пользователя открыты две сессии, например в первой sm38, в другой migo, первая определяется, вторая нет. Нужно посмотреть алгоритм в SM04, попозже разберусь в чем дело.
I have a requirement to find out whether a program is being executed in background. If the same program is executed manually then it should not execute, the time when the same program is being executed in background.
You can put a lock on the program inside the program, so that when it is run it puts a lock entry in SM12, then anyone trying to run it will get a message saying that the program is locked. USe the TRDIR lock object.
Code:
report zrich_0001 .
data: repid type sy-repid.
repid = sy-repid
call function 'ENQUEUE_E_TRDIR'
EXPORTING
* MODE_TRDIR = 'X'
NAME = repid
* X_NAME = ' '
* _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.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.