Erzeugung einzigartige 16-Zeichen-GUID mit Hilfe der SAP-ABAP-Funktionsbaustein oder Klassen
Bitte helfen Sie mir, die in der Generierung eine eindeutige 16-Zeichen-GUID, die ich verwenden könnte, die als Primärschlüssel in meiner eigenen Tabelle.
Ich habe versucht mit GUID_CREATE
und CL_SYSTEM_UUID~CREATE_UUID_X16
aber seine exporting-Parameter(EV_GUID_16
) zurückgekehrt sind 32 Zeichen(alphanumerische hexdecimal Wert), die kann ich nicht zuordnen, um meine 16-Zeichen-variable.
Wie konnte ich das konvertieren von 16-Länge(32 Zeichen), raw-text zu 16 Zeichen Zeichenfolge, die ich verwenden könnte, die als primary key?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Methoden, die Sie erwähnt, tun, erstellen Sie eine 16-byte-GUID. Da diese nicht angezeigt werden kann "nativ" konvertiert eine hexadezimale notation, die natürlich verwenden zwei Zeichen pro byte, also 32 Zeichen. Sie werden wahrscheinlich nicht bekommen, etwas einzigartiges mit nur 16 Zeichen (nicht bytes - es ist ein riesiger Unterschied!) - wenn möglich, vergrößern Sie Ihre Primärschlüssel zu 32 Zeichen.
Versuchen Sie, ändern der primären Schlüssel von dem transparenten Tabelle RAW16. Dies sollte Ihr problem lösen.
RAW
Felder der primary key ist in der Regel eine schlechte Idee - zum Beispiel, können Sie nicht die genaue Angabe einzelner Datensätze beim Transport von Tabelleneinträgen. (Ich wünschte, das Objekt Dienstleistungen, die Jungs hatten gedacht, wenn Sie auferlegt, IhreOS_GUID
s auf uns...)BCA_CONTRACT
im SAP Banking Services enthält eine GUID als RAW 16, die Teil der primary key dieser Tabelle. Ferner wird dieser Schlüssel verwendet, die in anderen Tabellen als primary und foreign key auch.SE37
. Dies ist der Grund, warum die BAPIs, die sich mit den Daten in den Tabellen, die ich erwähnte, haben Sie die GUID angegeben als CHAR 32. Kann nicht sagen viel über die Pflege-views als alle diese Tabellen sind Daten der Anwendung. Die generierten Selektionsbild fürSE16
allerdings scheint der Umgang mit diesem feinen Art von Daten-element mit RAW-Art (das Feld wird konvertiert zu CHAR 32).GUID_CREATE wurde bereits erwähnt. Sobald Sie haben eine GUID im RAW-format, die Sie verwenden können, GUID_CONVERT, um es in CHAR-format. Ich würde nicht empfehlen die Verwendung von RAW in der primary key und würde vorschlagen, mit nur GUID_32 (char-format) statt.
Wenn Sie möchten, eine eindeutige Id erstellen Sie eigene 'Z...' Zahl range-Objekt mit Transaktion
SNUM
.Set
Number Length Domain
zu NUM16 oder jede domain, die Ihren Bedürfnissen entspricht.Speichern Sie und gehen Sie zurück zu der Transaktion
SNUM
Hauptbildschirm. Von dort aus pflegen Sie die Intervalle : ex-01 von 1 bis 999999... und speichern. Für den transport Ihres neuen Abständen Werte, wählen Sie die transport-option aus dem Menü.In Abap , erhalten eine eindeutige ID, Anruf-Funktion
NUMBER_GET_NEXT
wie folgt:Können wir mit den FM 'CRR_GET_RANDOM_STRING' zu erzeugen, ein 16-Zeichen eindeutige id.
CL_SYSTEM_UUID~CREATE_UUID_X16
. Man könnte auch switch-CHAR 32 als vwegert vorgeschlagen, und verwenden Sie dannCL_SYSTEM_UUID~CREATE_UUID_C32
.Die Modul-Funktion "GENERAL_GET_RANDOM_STRING" kann auch verwendet werden, wenn Sie benötigen eine eindeutige 16 char id