[53209] in SAPr3-news

home help back first fref pref prev next nref lref last post

ABAP Toolprogramme / Warten auf den Verbucher

daemon@ATHENA.MIT.EDU (volker Korrmann)
Wed Feb 2 10:10:41 2005

To: sapr3-news@mit.edu
Date: 2 Feb 2005 07:10:37 -0800
From: volker_korrmann@web.de (volker Korrmann)
Message-ID: <cdd58c09.0502020710.4be89aa9@posting.google.com>

Hallo Leute,

bei mehreren hintereinanderfolgenden Batch Inputs kann es sein, daß
der Verbucher noch nicht fertig ist, und somit der nächste BI noch
nicht gestartet werden kann.

In diesem Fall muß man warten, bis der fragliche Sperreintrag wieder
aufgehoben wurde.
Hierzu ein kleines Beispiel:

Gruß Volker

*&---------------------------------------------------------------------*
*& Report  ZZZDUMM3                                                   
*
*&                                                                    
*
*&---------------------------------------------------------------------*
*&                                                                    
*
*&                                                                    
*
*&---------------------------------------------------------------------*

REPORT  zzzdumm3                                .

DATA: enq TYPE STANDARD TABLE OF seqg3 WITH HEADER LINE.
DATA: enq2 TYPE STANDARD TABLE OF seqg3 WITH HEADER LINE.
DATA: rc.


* Aktuelle Sperren ermitteln

CALL FUNCTION 'ENQUEUE_READ'
* EXPORTING
*   GCLIENT                     = SY-MANDT
*   GNAME                       = ' '
*   GARG                        = ' '
*   GUNAME                      = SY-UNAME
*   LOCAL                       = ' '
* IMPORTING
*   NUMBER                      =
*   SUBRC                       =
  TABLES
    enq                         = enq
 EXCEPTIONS
   communication_failure       = 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.




*  Gewünschtes Programm / BI Ausführen






rc = 'X'.
WHILE rc = 'X'.


* Aktuelle Sperren ermitteln

  CALL FUNCTION 'ENQUEUE_READ'
* EXPORTING
*   GCLIENT                     = SY-MANDT
*   GNAME                       = ' '
*   GARG                        = ' '
*   GUNAME                      = SY-UNAME
*   LOCAL                       = ' '
* IMPORTING
*   NUMBER                      =
*   SUBRC                       =
    TABLES
      enq                         = enq2
   EXCEPTIONS
     communication_failure       = 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.


* Alle bereits vorher vorhandenen Sperren entfernen
  LOOP AT enq.
    LOOP AT enq2.
      IF enq2 = enq. DELETE enq2. EXIT. ENDIF.
    ENDLOOP.
  ENDLOOP.

  rc = ''.
  LOOP AT enq2.


* Wurde eine relevante Sperre gefunden, dann weiter warten.
* if enq2-tabname = 'xxx'.
*rc = 'X'.
*exit.
*endif.


  ENDLOOP.

  IF rc = 'X'.
* Eine Sekunde warten!!!
    WAIT UP TO 1 SECONDS.
  ENDIF.

ENDWHILE.

home help back first fref pref prev next nref lref last post