Fehlermeldung: Es existiert bereits eine Zeile mit demselben Schlüssel

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

Fehlermeldung: Es existiert bereits eine Zeile mit demselben Schlüssel

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
Hallo,

ich bekomme folgenden Kurzdump:

Es existiert bereits eine Zeile mit demselben Schlüssel

Der relevante Code wäre folgender (es handelt sich hierbei natürlich um Fragmente):

Code: Alles auswählen.


TYPES: BEGIN OF ty_tre,
         zzrvind TYPE dimaiobpar-zzrvind,
       END OF ty_tre.

DATA: it_tre TYPE SORTED TABLE OF ty_tre WITH UNIQUE KEY zzrvind,        

  IF it_tre IS NOT INITIAL.

    SELECT insobject zzrvind FROM dimaiobpar
      INTO TABLE it_mnba
      FOR ALL ENTRIES IN it_tre
      WHERE zzrvind = it_tre-zzrvind.

    DELETE ADJACENT DUPLICATES FROM it_mnba.

  ENDIF.



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


Re: Fehlermeldung: Es existiert bereits eine Zeile mit demselben Schlüssel

Beitrag von a-dead-trousers (Top Expert / 4282 / 214 / 1141 ) »
Der UNIQUE-Key ist das Problem.
Da du DELETE ADJACENT DUPLICATES verwendest, vermute ich mal, dass in deiner DB-Tabelle mehr als ein Datensatz mit dem Schlüssel ZZRVIND vorkommt und es daher beim INSERT in die interne Tabelle zur Schlüsselverletzung kommt.
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: Fehlermeldung: Es existiert bereits eine Zeile mit demselben Schlüssel

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Nein, denn er INSERTed ja gar nicht in die Tabelle mit dem UNIQUE KEY, sondern in eine andere.

Wir haben hier wieder einmal das Problem, dass die für eine Antwort ausschlaggebenden Codeteile nicht mitgepostet worden sind, so dass sich die Frage allenfalls spekulativ beantworten lässt. Da der Dump bei einem INSERT in die Tabelle it_mnba auftritt, müssten wir wissen, wie diese definiert ist. Offensichtlich wird einer ihrer Schlüssel verletzt, aber mit dem Schlüssel der Tabelle it_tre hat das nichts zu tun.

Re: Fehlermeldung: Es existiert bereits eine Zeile mit demselben Schlüssel

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
it_mnba ist wie folgt definiert.

DATA: it_mnba TYPE SORTED TABLE OF ty_vtref WITH UNIQUE KEY vtref.

Mal eine Frage am Rande, wird eine interne Tabelle eigentlich definiert oder deklariert (rein nach der Definition und dem Sprachgebrauch ).

Vielen Dank.

Re: Fehlermeldung: Es existiert bereits eine Zeile mit demselben Schlüssel

Beitrag von a-dead-trousers (Top Expert / 4282 / 214 / 1141 ) »
Meine erste Antwort hat nach wie vor Gültigkeit 😉
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: Fehlermeldung: Es existiert bereits eine Zeile mit demselben Schlüssel

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Nein, hat sie nicht, denn für die Tabelle it_mnba ist es egal, wie oft ein Wert für das Feld ZZRVIND vorkommt. 😛

Allerdings gehe ich davon aus, dass der SELECT analog zu dem von Dir ursprünglich Geantworteten mehrere Zeilen der Datenbanktabelle dimaiobpar geliefert hat, bei denen der Wert des Feldes vtref gleich ist. Dann ist der Dump nur folgerichtig.
Mal eine Frage am Rande, wird eine interne Tabelle eigentlich definiert oder deklariert (rein nach der Definition und dem Sprachgebrauch ).
In ABAP ist eine interne Tabelle ein Spezialfall eines Datenfeldes, und Felder werden deklariert. Umgangssprachlich hört man da allerdings beides; da wird nicht drauf geachtet und stört auch keinen.

Re: Fehlermeldung: Es existiert bereits eine Zeile mit demselben Schlüssel

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
@Death-And-Pain: Ja, genau so wäre es. Aber wie ist den jetzt eine gute Lösung davon??

Diesen Unique Key habe ich aus Performancegründen gebraucht.

Re: Fehlermeldung: Es existiert bereits eine Zeile mit demselben Schlüssel

Beitrag von edwin (Specialist / 300 / 9 / 68 ) »
Hi,
Nein, hat sie nicht, denn für die Tabelle it_mnba ist es egal, wie oft ein Wert für das Feld ZZRVIND vorkommt.
da muss ich wiederstprechen, wir wissen immer noch nicht wie die Structur "ty_vtref" aussieht, und der select hat nicht into corresponding fields.

wenn das so aussieht,

Code: Alles auswählen.

TYPES : BEGIN OF ty_vtref,
            spaltex type c length 20,
            vtref   TYPE c LENGTH 20.
TYPES : END   OF ty_vtref.

DATA: it_mnba TYPE SORTED TABLE OF ty_vtref  WITH UNIQUE KEY vtref.

    SELECT insobject zzrvind FROM dimaiobpar
      INTO TABLE it_mnba.
dann hast du in der Tabelle it_mnba in vtref die Werte aus zzrvind stehen.

/Edwin

Re: Fehlermeldung: Es existiert bereits eine Zeile mit demselben Schlüssel

Beitrag von schick (ForumUser / 52 / 5 / 15 ) »
L0w-RiDer hat geschrieben:
10.10.2019 15:56
@Death-And-Pain: Ja, genau so wäre es. Aber wie ist den jetzt eine gute Lösung davon??

Diesen Unique Key habe ich aus Performancegründen gebraucht.
Poste doch mal bitte die Zeile in der der Shortdump auftritt, dann kann man dir evtl. auch helfen, so ist es stochern im Nebel...

Re: Fehlermeldung: Es existiert bereits eine Zeile mit demselben Schlüssel

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
2465 IF it_tre IS NOT INITIAL.
2466
>>>>> SELECT insobject zzrvind FROM dimaiobpar
2468 INTO TABLE it_mnba
2469 FOR ALL ENTRIES IN it_gwu
2470 WHERE zzrvind = it_tre-zzrvind.
2471
2472 DELETE ADJACENT DUPLICATES FROM it_mnba.


So steht es im Kurzdump

Re: Fehlermeldung: Es existiert bereits eine Zeile mit demselben Schlüssel

Beitrag von edwin (Specialist / 300 / 9 / 68 ) »
L0w-RiDer hat geschrieben:
10.10.2019 16:17
2465 IF it_tre IS NOT INITIAL.
2466
>>>>> SELECT insobject zzrvind FROM dimaiobpar
2468 INTO TABLE it_mnba
2469 FOR ALL ENTRIES IN it_gwu
2470 WHERE zzrvind = it_tre-zzrvind.
2471
2472 DELETE ADJACENT DUPLICATES FROM it_mnba.
So steht es im Kurzdump
😂

Re: Fehlermeldung: Es existiert bereits eine Zeile mit demselben Schlüssel

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
edwin hat geschrieben:
10.10.2019 16:05
Hi,
Nein, hat sie nicht, denn für die Tabelle it_mnba ist es egal, wie oft ein Wert für das Feld ZZRVIND vorkommt.
da muss ich wiederstprechen, wir wissen immer noch nicht wie die Structur "ty_vtref" aussieht, und der select hat nicht into corresponding fields.

wenn das so aussieht,

Code: Alles auswählen.

TYPES : BEGIN OF ty_vtref,
            spaltex type c length 20,
            vtref   TYPE c LENGTH 20.
TYPES : END   OF ty_vtref.

DATA: it_mnba TYPE SORTED TABLE OF ty_vtref  WITH UNIQUE KEY vtref.

    SELECT insobject zzrvind FROM dimaiobpar
      INTO TABLE it_mnba.
dann hast du in der Tabelle it_mnba in vtref die Werte aus zzrvind stehen.

/Edwin
Das wäre die Struktur von ty_vtref:

TYPES: BEGIN OF ty_vtref,
vtref TYPE dfkkop-vtref,
zzversnrt TYPE dfkkopk-zzversnrt,
augrp TYPE dimaiobpar-augrp,
rc TYPE sy-subrc,
END OF ty_vtref.

Re: Fehlermeldung: Es existiert bereits eine Zeile mit demselben Schlüssel

Beitrag von schick (ForumUser / 52 / 5 / 15 ) »
L0w-RiDer hat geschrieben:
10.10.2019 16:17
2465 IF it_tre IS NOT INITIAL.
2466
>>>>> SELECT insobject zzrvind FROM dimaiobpar
2468 INTO TABLE it_mnba
2469 FOR ALL ENTRIES IN it_gwu
2470 WHERE zzrvind = it_tre-zzrvind.
2471
2472 DELETE ADJACENT DUPLICATES FROM it_mnba.


So steht es im Kurzdump
Wir wissen weder wie it_mnba definiert ist, noch it_gwu noch wissen wir wie dein Z-Feld in der dimaiobpar aussieht...

Re: Fehlermeldung: Es existiert bereits eine Zeile mit demselben Schlüssel

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
schick hat geschrieben:Wir wissen weder wie it_mnba definiert ist
Doch, wissen wir:

Code: Alles auswählen.

TYPES: BEGIN OF ty_vtref,
vtref TYPE dfkkop-vtref,
zzversnrt TYPE dfkkopk-zzversnrt,
augrp TYPE dimaiobpar-augrp,
rc TYPE sy-subrc,
END OF ty_vtref.

DATA: it_mnba TYPE SORTED TABLE OF ty_vtref WITH UNIQUE KEY vtref.
Nur: Bei einem SELECT insobject zzrvind FROM dimaiobpar INTO TABLE it_mnba werden die Felder insobject und zzrvind in eine Tabelle gefüllt, die die Spalten vtref, zzversnrt, augrp und rc hat. Dass das mit an Sicherheit grenzender Wahrscheinlichkeit zu Grütze in diesen Spalten führt, überrascht nicht. Und sobald sich dabei in zwei Zeilen derselbe Wert für vtref ergibt, ist der UNIQUE KEY der internen Tabelle verletzt.

@Lowrider: Schau doch bitte, dass Dein SELECT in eine Tabelle geht, deren Deklaration die Spalten enthält, die Du da reinfüllst.

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


Re: Fehlermeldung: Es existiert bereits eine Zeile mit demselben Schlüssel

Beitrag von a-dead-trousers (Top Expert / 4282 / 214 / 1141 ) »
Dass die Felder nicht übereingestimmt haben, hab ich völlig übersehen. 😕
Eigentlich hätte der im SELECT gar nicht vorkommende Schlüssel VTREF der internen Tabelle schon als Anhaltspunkt gereicht.
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

Seite 1 von 1

Vergleichbare Themen

4
Antw.
2790
Views
Klasse existiert bereits und dann doch nicht
von sapnup » 18.08.2017 12:02 • Verfasst in ABAP® für Anfänger
8
Antw.
6829
Views
Eingabe IBAN Fehlermeldung "Schlüssel hat keinen ISO-Co
von Martin4711 » 20.06.2005 16:29 • Verfasst in Financials
1
Antw.
1583
Views
Bearbeiten / Löschen einer bereits geschriebenen Zeile
von JanMeier » 11.08.2007 23:09 • Verfasst in Dialogprogrammierung
1
Antw.
2728
Views
Schlüssel > 120, generischer Schlüssel vergrößern
von zer0 » 27.01.2014 09:20 • Verfasst in ABAP® Core
2
Antw.
1558
Views
Feld Anstellungsverhältnis im IT1 mit Schlüssel zeigen
von Kerstin » 04.10.2007 10:41 • Verfasst in Human Resources

Aktuelle Forenbeiträge

SELECT CHAR16 in CHAR12-Feld
vor einer Stunde von Patrick1982 gelöst 5 / 57
alv_grid aktualisieren
vor 6 Stunden von Egzon gelöst 4 / 82

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

SELECT CHAR16 in CHAR12-Feld
vor einer Stunde von Patrick1982 gelöst 5 / 57
alv_grid aktualisieren
vor 6 Stunden von Egzon gelöst 4 / 82

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 134
Group Items auf einer Filterbar
vor 5 Wochen von Bright4.5 1 / 170