Warten auf Sperrtabellen?

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

Warten auf Sperrtabellen?

Beitrag von alex_reloaded (ForumUser / 2 / 0 / 0 ) »
Hallo zusammen,

ich habe ein Programm entwickelt, dass Stücklistenpositionen per call transaction CS02 generiert. Danach auch commit work abgesetzt.
Beim Ausführen sperrt sich das Programm teilweise selbst, da die Einträge der Sperrtabelle nicht schnell genug entfernt werden. Ich behelfe mir mit einem wait up to 1 seconds nach dem call transaction. Das hilft. Doch leider läuft das Programm beim Generieren von 30 Stücklistenpositionen nun auch 30 Sekunden!

Frage: Wie kann ich dem Programm beibringen nach dem call transaction (nur!) solange zu warten, bis die Sperreinträge wieder entfernt wurden?
Muss ich wirklich einen loop einfügen, der die Sperrtabelle prüft? Oder gibt es etwas eleganteres?

Vielen Dank!

Alex

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Warten auf Sperrtabellen?

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin Alex.
Der funktionsbaustein ENQUE_REPORT liefert die Sperren. Einfach zyklisch abfragen, bis die Einträge verschwunden sind.
(kann man mit SE37 testen) Die Suche nach Sperrren kann über GTARG / GTNAME eingeschränkt werden.

Code: Alles auswählen.

CALL FUNCTION 'ENQUE_REPORT'
* EXPORTING
*   gclient = SY-MANDT          " seqg3-gclient  Client
*   gname = SPACE               " seqg3-gname   Group name ( -> table name )
*   gtarg = SPACE               " seqg3-gtarg   Group value ( -> values of the key
*   guname = SY-UNAME           " seqg3-guname  User ID
  IMPORTING
    number =                    " sy-tabix      Number of selected lock entries
    subrc =                     " sy-subrc      Error code of the enqueue call
  TABLES
    enq =                       " seqg3         List of the selected lock entries
    .  "  ENQUE_REPORT
lg Jens
Zuletzt geändert von Tron am 05.09.2014 11:15, insgesamt 1-mal geändert.
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Warten auf Sperrtabellen?

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Probier mal "SET UPDATE TASK LOCAL" und "COMMIT WORK AND WAIT"
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Warten auf Sperrtabellen?

Beitrag von alex_reloaded (ForumUser / 2 / 0 / 0 ) »
Vielen Dank!

Also das hier:

Code: Alles auswählen.

          call transaction 'CS02' using bdcdata_tab options from opt.
          commit work and wait.
* Warten auf Entsperren
          do.
            call function 'ENQUEUE_READ'
              exporting
                gclient               = sy-mandt
                garg                  = h_enqueue_stzu
                gname                 = 'STZU'
                guname                = '*'
              tables
                enq                   = i_enq
              exceptions
                communication_failure = 1
                system_failure        = 2
                others                = 3.
            describe table i_enq lines h_zeilen.
            if h_zeilen eq 0.
              exit.
            endif.
          enddo.
Ich hatte mir gewünscht, es gäbe einen Befehl der Art
commit work and "warte bis die Sperrtabellen wieder leer sind" :-)

Re: Warten auf Sperrtabellen?

Beitrag von a-dead-trousers (Top Expert / 4399 / 223 / 1182 ) »
Evtl. könnte man auch den Parameter _WAIT beim Sperrobjekt selbst dafür nutzen :|
Dann braucht man auch keine Schleife die einerseits laufend Last produziert und andererseits die Gefahr einer Endlosschleife birgt.

Einfach das Sperrobjekt mit Modus "Kollisionsprüfung" versorgen ('E' => 'V', 'X' => 'U', 'S' => 'W') und _WAIT entsprechend hoch ansetzen.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Warten auf Sperrtabellen?

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
alex_reloaded hat geschrieben: Ich hatte mir gewünscht, es gäbe einen Befehl der Art
commit work and "warte bis die Sperrtabellen wieder leer sind" :-)
Den Wunsch hat dir black_adept erfüllt.

Seite 1 von 1

Vergleichbare Themen

0
Antw.
774
Views
OLE - warten bis Excel geschlossen ist
von Kaiwalker » 20.01.2006 12:55 • Verfasst in ABAP® Core
11
Antw.
3110
Views
Warten bis DBtabelle aktualisiert ist
von sapnewbee » 24.11.2015 15:01 • Verfasst in ABAP® für Anfänger
2
Antw.
2086
Views
Emailversand aus BSP Mail gehen auf den Status warten
von AchimB » 04.01.2005 22:33 • Verfasst in Web-Dynpro, BSP + BHTML

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Regex in where
vor 13 Stunden von tar 8 / 305
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1595
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 243
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 481

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
vor 13 Stunden von tar 8 / 305
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1595
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 243
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 481

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 2 Tagen von snooga87 1 / 182
aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 3360
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9912