Ich habe eine eigene Transaktion erstellt welche nicht gleichzeitig von mehreren Benutzter verwendet werden darf.
Um einen Eintrag in die Transaktion SM12 zu erstellen, benutzte ich den FUBA '/ISDFPS/ENQUEUE_TABLE' und übergebe die Werte is_enqtable-tabname und is_enqtable-varkey.
Das lesen der Sperre mache ich mit den FUBA 'ENQUEUE_READ'.
Nun mein Problem, wenn ein Benutzer sich sperrt und die Transaktion ein weiteres mal öffnet, funktioniert die Sperre einwandfrei. Wenn aber einen anderen Benutzter die TA öffnet, kommt es zu einem Programmabbruch.
Was mache ich hier falsch? verwende ich die richtigen Bausteine? Kann mir da jemand helfen?
Vielen Dank
ich kenne mich mit deinem Problem leider nicht aus, aber wir verwenden für gewöhnlich immer die Berechtigungen / Rollen, um eine Transaktion für Benutzer verfügbar zu machen. Dabei haben die meisten Mitarbeiter nicht die Berechtigungen, "grundsätzlich" alle Transaktionen auszuführen sondern nur die, für welche sie berechtigt sind.
Ich hoffe das ist ein anderer Ansatz, falls keine passende Lösung angeboten werden kann.
Programmabbruch = Dump in der St22 ersichtlich oder gewollt? Was sagt die ST22 dazu?
Welche Sperrmerkmale erzeugen die User? Alle das Selbe oder unterschiedliche Werte?
Wenn 2 User mit den selben Merkmalen reingehen, dann sollte es beim 2. User zum Abbruch (<>Dump) kommen, was normal wäre.
alle User übergeben dieselben Merkmale. Dann bearbeiten alle User das selbe Objekt und der erste User darf und alle anderen fliegen raus = alles OK, so soll es auch sein!
Wenn mehrere User gleichzeitig arbeiten sollen, dann müssen Sie auch unterschiedliche Objekte bearbeiten, sonst überschreiben sie sich munter gegenseitig.
Dann sind die Merkmale, die im Sperreintrag sind auch unterschiedlich.
FYI - eigentlich generiert man zu einer Tabelle einen eigenen Sperrbaustein und nimmt nicht irgendeinen. Außer bei dir geht es um die Tabelle T00L.
Auf welche Tabellen machen die User Änderungen mit der neuen Transaktion? Ich weis doch gar nicht was die Transaktion tun soll oder wie dein Prozess aussieht. Daher kann ich dir auch nicht sagen was du verwenden sollst.
Was wird wann geändert?
Wie soll sich das System bei der Bearbeitung durch mehrere User verhalten?
Man kann alles sperren was der User zur Bearbeitung selektiert hat oder erst Sperren, wenn er es in Bearbeitung nimmt oder erst beim Speichervorgang (der letzte Änderer gewinnt)
Ein Sperrkonzept ist vor der Programmerstellung zu definieren.
Auf diese Transaktion soll nur von einem Benutzter bearbeitet werden können.
Ich habe mittlerweile meinen Fehler gefunden. Die Funktionsbausteine sind in Ordnung. Ich habe den Fehler bei der Benutzternamen-Selektion gemacht.
Somit konnte der FuBa keinen Eintrag finden.
Problem gelöst... Vielen Dank für deine Unterstützung