DB-Tabelle ohne Primärschlüssel

Alle Fragen rund um Basisthemen
9 Beiträge • Seite 1 von 1
9 Beiträge Seite 1 von 1

DB-Tabelle ohne Primärschlüssel

Beitrag von janfri (ForumUser / 16 / 0 / 0 ) »
Hallo zusammen!

Ist es möglich, im R3-System eine DB-Tabelle ohne Primärschlüssel anzulegen?

Gruß,
janfri

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


Beitrag von ewx (Top Expert / 4848 / 312 / 642 ) »
Nein. Wozu auch? Mindestens MANDT. dann passt ein Eintrag in die Tabelle.

Gruß, Enno

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Doch!
Es ist MÖGLICH!

Aber dann kannst du nur genau einen Eintrag in diese Tabelle machen!

@ewx: man kann auch Tabellen ohne MANDT anlegen.

Beitrag von janfri (ForumUser / 16 / 0 / 0 ) »
ewx hat geschrieben:Wozu auch?
Weil es jedes mir bekannte DBMS unterstützt. :cry:

Ich habe folgende Herausforderung: In einer Eigenentwicklung wird eine Tabelle mit beliebig vielen Spalten gedruckt, deren Überschriften vom Berater angepasst werden können.

Also gibt es eine DB-Tabelle mit folgendem Aufbau:

Code: Alles auswählen.

+--------------------------------------------+
| MANDT | Spaltennr | Text                   |
+--------------------------------------------+
|   100 |         1 | Eine Spalte            |
+--------------------------------------------+
|   100 |         2 | Eine andere Spalte     |
+--------------------------------------------+
|   100 |         3 | Noch eine Spalte       |
+--------------------------------------------+
|   100 |       ... | ...                    |
+--------------------------------------------+
Um Sicherzustellen, dass keine Spaltennr doppelt auftritt, könnte ein Index auf (MANDT, Spaltennr) gelegt werden. Diese DB-Tabelle könnte auf einfachste Weise vom Berater mittels der SE16 gepflegt werden.

Jetzt schreibt mir SAP die Angabe eines Primärschlüssel vor. Nun gibt es zei Möglichkeiten: Alle Spalten als Primärschlüssel oder die ersten beiden Spalten als Primärschlüssel.

Im ersten Fall kann noch nicht einmal ein Text geändert werden, sondern die entsprechende Zeile muss gelöscht und eine neue dafür angelegt werden.

Im zweiten Fall ist es zwar immerhin möglich, den Text zu ändern, aber wenn die Reihenfolge der Spalten geändert werden soll, muss (mindestens) eine Zeile gelöscht und neu angelegt werden (inkl. des ganzen Textes!), da es nicht möglich ist, die Spaltennr im Datensatz zu ändern!

Deswegen hätte ich gern DB-Tabellen ohne Primärschlüssel.

Aber vielleicht habt Ihr ja noch eine ganz andere Idee zur Lösung meines Problems, wobei die Betonung auf einfach liegt. :?:
Natürlich kann ich auch die ganze Tabelle in eine interne Tabelle einlesen, diese dann mittels eines ALV-Grids editieren lassen, vorm speichern alle Datensätze aus der DB-Tabelle löschen und anschließend alle Sätze der internen Tabelle in die DB-Tabelle schreiben. Das nenne ich aber nicht einfach!

Gruß,
janfri

Beitrag von ewx (Top Expert / 4848 / 312 / 642 ) »
janfri hat geschrieben: Im zweiten Fall ist es zwar immerhin möglich, den Text zu ändern, aber wenn die Reihenfolge der Spalten geändert werden soll, muss (mindestens) eine Zeile gelöscht und neu angelegt werden (inkl. des ganzen Textes!), da es nicht möglich ist, die Spaltennr im Datensatz zu ändern!
Und wenn du den Spaltennamen/Feldnamen als Schlüssel nimmst?? Dann hast du auch nicht das Problem, dass die Reihenfolge sich ändern kann.
Wenn es hinterher als Betitelung einer ALV-Liste verwendet werden soll, ist das eh gefährlich, denn das Layout kann ja geändert werden.
Wenn du eine DDIC-Struktur zur Anzeige verwendest, kannst du ja auch einen View auf die DD03L/ DD03T als Pflegedialog anlegen, dann werden die DDIC-Namen vorgeblendet, so dass der Anwender sich gut orientieren können müsste.

Gruß, Enno.
Zuletzt geändert von ewx am 03.03.2006 11:05, insgesamt 1-mal geändert.

Beitrag von Charadin (Specialist / 148 / 0 / 0 ) »
Hallo janfri,

wie wäre es hiermit:

Code: Alles auswählen.

+------------------------------------------------+
| MANDT | ID |Spaltennr | Text                   |
+------------------------------------------------+
|   100 |  1 |        1 | Eine Spalte            |
+------------------------------------------------+
|   100 |  2 |        3 | Eine andere Spalte     |
+------------------------------------------------+
|   100 |  3 |        2 | Noch eine Spalte       |
+------------------------------------------------+
|   100 |... |      ... | ...                    |
+------------------------------------------------+
Du fügst eine weitere Spalte (ID) hinzu. Diese wird zusammen mit dem Mandanten zum Primärschlüssel und muss daher eindeutig sein. Dann hast Du aber noch das Feld "Spaltennr", das nicht zum Schlüssel gehört, d.h. Du kannst die Reihenfolge der Spalten auch noch nachträglich ändern...
Gruß,
Charadin

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
füg doch einfach ne Key-Spalte ein wo ne fortlaufende Nummer hat die ansonsten keinen zusammenhang zum rest hat.

Beitrag von janfri (ForumUser / 16 / 0 / 0 ) »
DeathGuardian hat geschrieben:füg doch einfach ne Key-Spalte ein wo ne fortlaufende Nummer hat die ansonsten keinen zusammenhang zum rest hat.
OK, das wäre eine Möglichkeit an die ich auch schon gedacht hatte.

Unschön ist daran nur, dass es bei SAP keinen Autoinkrement gibt, so dass bei neuen Einträgen entweder der Benutzer die Nummer von Hand vergeben muss (im Falle von SE16) oder doch eine Pflegeoberfläche drumherumgestrickt werden muss, die mit einem Nummernkreis arbeitet.

Gruß,
janfri

Beitrag von janfri (ForumUser / 16 / 0 / 0 ) »
ewx hat geschrieben:Und wenn du den Spaltennamen/Feldnamen als Schlüssel nimmst??
Die stehen ja gerade nicht fest. Es sollen pro Mandant (Kunde) unterschiedliche Spalten(anzahlen) einstellbar sein.

Es geht sogar noch einen Schritt weiter: Pro Mandant sollen mehrere Varianten mit unterschiedlichen Spaltennamen und -anzahlen gepflegt werden. (Das lässt sich aber mittels einer weiteren Variantenspalte problemslos lösen.)

Mit anderen Worten, es handelt sich um eine Art Meta-Tabelle, die den Aufbau einer Ausgabetabelle beschreibt.
ewx hat geschrieben:Wenn es hinterher als Betitelung einer ALV-Liste verwendet werden soll, ist das eh gefährlich, denn das Layout kann ja geändert werden.
Als Ausgabe wird eine XML-Datei erzeugt, insofern stellt das kein Problem dar.

Momentan sehe ich als einzige Lösung eine zusätzliche ID-Spalte.

Gruß,
janfri

Seite 1 von 1

Vergleichbare Themen

4
Antw.
2326
Views
Nicht eindeutiger Primärschlüssel in DB-Tabelle ?
von Bernhard Unglaub » 10.07.2007 11:58 • Verfasst in ABAP® Core
4
Antw.
2752
Views
Primärschlüssel bei Tabellen
von rambozola » 06.12.2006 09:24 • Verfasst in Basis
2
Antw.
3863
Views
Primärschlüssel/Fremdschlüssel
von frany*89* » 25.07.2012 14:40 • Verfasst in ABAP® für Anfänger
3
Antw.
4000
Views
Primärschlüssel herausfinden
von m.schwertle » 31.10.2007 15:49 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

User Exit EXIT_RQCPRM10_001
vor 3 Stunden von Manfred K. 1 / 75
Trennen Strasse und Hausnummer
vor 4 Stunden von payten 13 / 10355
Dialog-Container mit Toolbar/Status
vor 19 Stunden von DeathAndPain gelöst 22 / 3346
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1140

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.

Aktuelle Forenbeiträge

User Exit EXIT_RQCPRM10_001
vor 3 Stunden von Manfred K. 1 / 75
Trennen Strasse und Hausnummer
vor 4 Stunden von payten 13 / 10355
Dialog-Container mit Toolbar/Status
vor 19 Stunden von DeathAndPain gelöst 22 / 3346
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1140

Unbeantwortete Forenbeiträge

User Exit EXIT_RQCPRM10_001
vor 3 Stunden von Manfred K. 1 / 75
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2701
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9283