Falscher Insert?

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Falscher Insert?

Beitrag von Beginner014 (ForumUser / 46 / 4 / 0 ) »
Hallo zusammen,

ich hätte mal wieder eine Frage... Und zwar soll eine vorhandene Tabelle über eine Selektionseingabe um Einträge erweitert werden. In der Selektion gebe ich quasi Materialnummer(n) und eine Verkaufsorganisation an, 4 weitere Felder werden fest gesetzt.

Nun klappt der Insert zwar, allerdings nicht so wie ich mir das vorgestellt hatte.

1. Kann ich jeweils nur einen neuen Datensatz in die Tabelle schreiben, gebe ich mehrere Materialnummern an nimmt er immer nur die erste (was eigentlich auch logisch ist, da fehlt wohl ein Loop... aber irgendwie steh ich gerade auf der Leitung wie und wo der Loop sein muss).

2. Er schreibt mir in der Datenbank vor meine Materialnummer immer "IEQ"... ich nehme an das hängt mit meinen Select Options zusammen aber....??

Ich hoffe mir kann jemand helfen :(

Code: Alles auswählen.

DATA: it_test TYPE HASHED TABLE OF test WITH UNIQUE KEY mandt,
      wa_satz LIKE LINE OF it_test.


SELECTION-SCREEN BEGIN OF BLOCK selektion WITH FRAME TITLE TEXT-001.
  SELECT-OPTIONS :  so_matnr FOR wa_satz-matnr.
  PARAMETERS     : p_vkorg LIKE wa_satz-vkorg.
SELECTION-SCREEN END OF BLOCK selektion.

wa_satz-mandt = sy-mandt.
wa_satz-matnr = so_matnr.
wa_satz-vkorg = p_vkorg.
wa_tumlm-vtweg = '01'.
.......

INSERT wa_satz INTO TABLE it_test.
INSERT test FROM TABLE it_test ACCEPTING DUPLICATE KEYS.
Vielen Dank für eure Hilfe!

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


Re: Falscher Insert?

Beitrag von Beginner014 (ForumUser / 46 / 4 / 0 ) »
Ok, also das mit dem IEQ hat sich gerade geklärt. Ich hätte einfach noch ein 'LOW' bei der Matnr. anhängen müssen....

Das mit dem Loop haut trotzdem irgendwie nicht hin...

Re: Falscher Insert?

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »

Code: Alles auswählen.

wa_satz-mandt = sy-mandt.
wa_satz-vkorg = p_vkorg.
wa_tumlm-vtweg = '01'.
LOOP AT so_matnr.
  wa_satz-matnr = so_matnr-low.
  INSERT wa_satz INTO TABLE it_test.
ENDLOOP.
Wobei ich aber die Verwendung einer SELECT-OPTION für die Eingabe von Werten nicht empfehlen würde.
Was ist, wenn ein User VON - BIS eingibt? Oder ein ausschließendes Kriterium?
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: Falscher Insert?

Beitrag von Beginner014 (ForumUser / 46 / 4 / 0 ) »
Danke für deine Antwort :)

Ich hatte meinen Code auch bis gerade eben schon so erweitert, er loopt mir auch 2x (bei z.B. 2 Datensätzen) drüber, aber in die Datenbank schreibt er trotzdem nur einen Satz... woran kann das liegen? :(

Code: Alles auswählen.

LOOP AT so_matnr.

wa_satz-mandt = sy-mandt.
wa_satz-matnr = so_matnr-LOW.
wa_satz-vkorg = p_vkorg.
wa_satz-vtweg = '01'.
...

INSERT wa_satz INTO TABLE it_test.
INSERT test FROM TABLE it_test ACCEPTING DUPLICATE KEYS.
ENDLOOP.
Ja du hast Recht mit den Select Options, aber die Vorgabe ist so und wie könnte man es denn anders realisieren? Ich nehme an eine Excel Spalte soll zum Schluss in die Einzelwerte reinkopiert werden.

Danke dir :)

Re: Falscher Insert?

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Das

Code: Alles auswählen.

INSERT test FROM TABLE it_test ACCEPTING DUPLICATE KEYS.
bitte außerhalb der Schleife machen! :wink:
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: Falscher Insert?

Beitrag von Lucyalison (Specialist / 262 / 51 / 26 ) »
Hallo,

was mich ein wenig an Deinem Coding verwirrt ist der Key. Ein Schlüssel nur auf dem Mandant für die Tabelle it_test macht ja eigentlich keinen Sinn? Du willst doch sicher keine doppelte Material - Vkorg Zuordnungen in Deiner Tabelle haben? Dazu müsste man wissen wie Du die Schlüssel in der Datenbanktabelle definiert hast. Wenn ich jetzt mal davon ausgehe dass Matnr und Vkorg Schlüssel sind, dann würde ich das so programmieren:

Code: Alles auswählen.

wa_satz-vkorg = p_vkorg.
wa_tumlm-vtweg = '01'.
LOOP AT so_matnr.
  wa_satz-matnr = so_matnr-low.
  append wa_satz TO TABLE it_test.
ENDLOOP.

modify test FROM TABLE it_test. 
Das Modify steuert selbst ob es ein Update oder einen Insert auf der Datenbank macht. Wenn Du Dir nicht sicher bist wie viele doppelte Angaben bei dem Loop rauskommen, kann man noch einen sort und ein delete adjacent duplicates vor dem Modify Befehl einfügen.

Wie ADT schon geschrieben hat, sind Select-Options gefährlich wenn man nur das low verwendet. Ich würde dann aber auch für den Anwender das High auf dem Selektions-Bildschirm deaktivieren, damit sicher keine Eingabe dort gemacht wird.

Viele Grüsse
Nicola

Re: Falscher Insert?

Beitrag von Beginner014 (ForumUser / 46 / 4 / 0 ) »
Super,

ich danke euch, ihr habt mir sehr geholfen!

Viele Grüße!

Seite 1 von 1

Vergleichbare Themen

0
Antw.
1360
Views
Textelement in falscher Sprache
von sappla » 13.09.2012 10:39 • Verfasst in ABAP® für Anfänger
3
Antw.
2213
Views
Falscher Lieferant bei Anlieferungen
von dimes » 15.10.2007 09:23 • Verfasst in Material Management & Produktionsplanung
0
Antw.
1115
Views
falscher returncode bei ws_upload
von dennsen » 06.06.2007 13:45 • Verfasst in ABAP® Core
1
Antw.
1885
Views
Falscher Mandant bei BSP Applukation
von chaos2oo2 » 11.07.2006 16:21 • Verfasst in Web-Dynpro, BSP + BHTML
16
Antw.
7748
Views
Abfangen falscher Usereingaben
von Franky » 02.05.2005 13:26 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 603
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2233
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8826