UUID

Getting started ... Alles für einen gelungenen Start.
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

UUID

Beitrag von Abapanfänger (ForumUser / 59 / 16 / 1 ) »
Hallo zusammen

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.

Freundliche Grüsse,

ABAPANFÄNGER

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


Re: UUID

Beitrag von a-dead-trousers (Top Expert / 4286 / 214 / 1142 ) »
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.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Abapanfänger

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: UUID

Beitrag von DeathAndPain (Top Expert / 1799 / 214 / 396 ) »
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.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
Abapanfänger


Re: UUID

Beitrag von black_adept (Top Expert / 3947 / 105 / 886 ) »
Da waren andere schneller und dieses Posting wäre nichts neues mehr.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: UUID

Beitrag von jocoder (Specialist / 339 / 3 / 101 ) »
Wiso verwendet ihr nicht den Funktionsbaustein GUID_CREATE?

Dieser erzeugt schon eine Unique-ID aus Netzwerkadresse und Zeitstempel

Re: UUID

Beitrag von black_adept (Top Expert / 3947 / 105 / 886 ) »
Weil der nur eine 16-Byte UID zurückliefert und keine 8-stellige UID
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

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.