ich habe folgendes Problem. Aus einer Datenbanktabelle selektiere ich alle Sätze. Nach einer anschl. zeitlichen Sortierung möchte eine ID einfügen. Wie die ID angelegt ist, ist mir eigentlich egal. Bisher kenne ich es aus SQL-Servern als integer typ PK mit Standartwert 1,1.
BSP:
ID Kdnr
1 ABC
2 DEF
3 GHI
....
Die ID ist in der Datenbanktabelle nicht vorhanden.
Wie kann ich diese anlegen. Über eine LOOP Schleife könnte ich mir behelfen,
LOOP AT ITAB1 INTO ls_a.
id = ID+1.
ls_e-id = id.
ls_e-kdnr = ls_a-kdnr.
APPEND ls_e TO itab2
ENDLOOP.
Kann ich die ID mit einem Datentypen deklarieren, so dass das Ganze beim Beladen der Tabelle automatisch passiert ? Oder muss ich tatsächlich den Umweg über LOOP gehen?
grundsätzlich schon, aber gibt es tatsächlich keinen Weg direkt bei der SQL-Abfrage einen PRIMARY KEY zu befüllen? Das müsste doch laufzeittechnisch viel schneller sein, oder?
Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag: meistercoach
<:: 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.
Das mit den Triggern usw. würde ich nicht empfehlen, da man das direkt auf der DB machen muss und kaum absehbar ist wie sich SAP dabei verhält.
Besser ist es entweder mit Nummernkreisen (das SAP-Pendant zu Auto-Increment) oder mit GUIDs (CL_SYSTEM_UUID=>CREATE_UUID_*) zu arbeiten.
Vorteil bei Ersterem ist, dass die Nummer "lesbar" ist. Der Vorteil bei Zweiterem ist, dass kein Customizing notwendig ist und alles "out-of-the-box" funktioniert.
Die Nachteile sind genau vice-versa zu lesen
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.