Ich habe eine Methode geschrieben um mir ein UUID zu generieren. Mein UUID sollte nur 8 Zeichen enthalten und deshalb habe ich eine eigene Methode geschrieben.
Ich benutze beim erstellen stelle ich meinen Code aus Zeit und Datum zusammen um es Unique zu halten. Jedoch stelle ich mir die Frage was passieren würde wenn 2 User das Programm gleichzeitig ausführen.
Es müsste theoretisch auch den gleichen Code beiden zurückgeben. Natürlich ist die Wahrscheinlichkeit eher gering, dass dieser Use-Case eintreten kann aber ich möchte es trotzdem vermeiden.
Wie kann ich die Methode "blockieren", damit jeweils nur User ein UUID generieren kann? Falls tatsächlich mehrere User eine gleichzeitig einen Code generieren würden, sollte es bei den übrigen die Sanduhr oder etwas ähnliches anzeigen.
Ich würde mich über Vorschläge für die Umsetzung freuen.
Sorry, aber bei 8 Zeichen kann man nicht von einer UUID sprechen. "Echte" UUID oder GUID haben min. 32 Stellen. https://de.wikipedia.org/wiki/Globally_ ... Identifier
Eine zuverlässige und vorallem unkomplizierte "Sperre" für die Nummernvergabe die dir vorschwebt, fällt mit auf die schnelle nicht ein. Du müsstest eine ausgefasste Nummer mit einem Sperrobjekt solange "sperren" bis sie mit einem DB-Commit auf die Datenbank persistiert wurde.
Ich würde dir daher eher empfehlen, wenn dir die UUIDs oder GUIDs nicht lesbar genug sind, die sogenannten Nummernkreise von SAP zu verwenden.
lg ADT
EDIT: GUIDs in SAP erzeugt man über den Funktionsbaustein GUID_CREATE bzw. die Klasse CL_SYSTEM_UUID.
Zuletzt geändert von a-dead-trousers am 04.09.2017 10:21, insgesamt 1-mal geändert.
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.
Ja, Nummernkreisobjekte sind der Weg. Die entsprechende Funktionalität ist im SAP-Standard enthalten und in meinen Augen der einzig professionelle Ansatz das umzusetzen.
Mit der Transaktion SNUM legst Du ein solches Objekt an (in der SPRO oder bei Google findest Du auch Doku zu SAP Nummernkreisobjekten). In ABAP kannst Du Dir dann mit dem Funktionsbaustein NUMBER_GET_NEXT die jeweils nächste Nummer geben lassen. Dabei garantiert Dir der SAP-Standard, dass Du keine Nummer doppelt zurückerhältst (intern arbeitet SAP da mit Sperren, die das sicherstellen). Auf diese Weise generiert SAP auch Belegnummern, Materialnummern usw. Die dürfen ja auch nicht doppelt vergeben werden.