Blocchi per i programmi per evitare esecuzioni contemporanee
Per gestire i blocchi per i programmi, garantendo che solo un utente alla volta possa eseguire un determinato programma usare i FM ENQUEUE_ES_PROG e DEQUEUE_ES_PROG
Questo è un programma semplice di esempio:
*&---------------------------------------------------------------------*
*& Report ZTEST_BLOCCOPROGRAMMA
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ztest_bloccoprogramma.
DATA: lv_user TYPE sy-uname.
START-OF-SELECTION.
* Ottieni l'utente corrente
lv_user = sy-uname.
* Blocca il programma per l'utente corrente
CALL FUNCTION 'ENQUEUE_ES_PROG'
EXPORTING
mode_trdir = 'E'
name = sy-repid
x_name = lv_user
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc <> 0.
WRITE: 'Il programma è già in esecuzione da un altro utente.', SY-MSGV1.
EXIT.
ENDIF.
* Il programma principale inizia qui
*WRITE: 'Esecuzione del programma da parte dell''utente:', lv_user.
* Simula un'attività lunga
WAIT UP TO 30 SECONDS.
* Rilascia il blocco
CALL FUNCTION 'DEQUEUE_ES_PROG'
EXPORTING
mode_trdir = 'E'
name = sy-repid
X_NAME = lv_user.
WRITE: 'Il programma è stato completato con successo.'.
Ecco cosa otteniamo in output se eseguiamo in contemporanea lo stesso report
1. SAP EWM (Extended Warehouse Management)
3. SAP VIM (Vendor Invoice Management)
>>> RECENSIONI DEI LIBRI su Amazon Kindle <<<
Ebook: SAP MM: https://www.amazon.it/dp/B0C3MKD9BR#customerReviews
Ebook: SAP MII: https://www.amazon.it/dp/B0C4392MY9#customerReviews
Ebook: SAP VIM: https://www.amazon.it/dp/B0C6FBK8QN#customerReviews