Zeilen in 2 durch Schlüssel verbundenen Tabellen einfügen

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

Zeilen in 2 durch Schlüssel verbundenen Tabellen einfügen

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Hallo liebe ABAP-Experten,

ich möchte neue Informationen in eine vorhandene SAP-Tabelle einfügen. Dies hat bei einer einzigen Tabelle auch reibungslos geklappt. Nun existiert allerdings eine weitere Tabelle welche durch einen Schlüssel an die erste TAbelle angebunden ist und somit eine Abhängigkeit besitzt. Es ist für mich notwenidig auch in die 2te TAbelle neue INformationen einzufügen.
Hier der Code so wie ich es mir gedacht habe und leider nicht funktioniert:

Code: Alles auswählen.

INsert  INTO ZTE_TABLE_TEST3 values <ZTE_TABELLE>  .

<ZTE_TABELLE>-nummer = '0000000012'.
<ZTE_TABELLE>-vorname ='HAns'.
<ZTE_TABELLE>-nachname = 'Meier'.
<ZTE_TABELLE>-postleitzahl = '79188'.

<ZTE_TABELLE>-nummer = '0000000013'.
<ZTE_TABELLE>-vorname ='Amore'.
<ZTE_TABELLE>-nachname = 'Mio'.
<ZTE_TABELLE>-postleitzahl = '79393'.

<ZTE_TABELLE>-nummer = '0000000014'.
<ZTE_TABELLE>-vorname ='Peterchens'.
<ZTE_TABELLE>-nachname = 'Mondfahrt'.
<ZTE_TABELLE>-postleitzahl = '79379'.


INSERT ZTE_TABLE_TEST3 From <ZTE_TABELLE>.


INSERT INTO ZTE_TABLE_TEST4 values <ZTE_TABELLE> .


<ZTE_TABELLE>-plz = <ZTE_TABELLE>-postleitzahl.
<ZTE_TABELLE>-ort = 'Schaffhausen'.

<ZTE_TABELLE>-plz = <ZTE_TABELLE>-postleitzahl.
<ZTE_TABELLE>-ort = 'Müllheim'.
Wie unschwer zu erkennen ist, ist der gemeinsame Schlüssel die Postleitzahl wobei sie in der 2ten TAbelle plz heißt.

Ich hoffe ihr könnt mir helfen.
Viele Grüße
Patryk

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


Re: Zeilen in 2 durch Schlüssel verbundenen Tabellen einfüge

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
Da die zweite Tabelle sicher nicht genau die gleichen Felder wie die erste Tabelle hat, benötigst du eine extra Sturktur/ein extra Feldsymbol um diese Tabelle zu füllen.

Re: Zeilen in 2 durch Schlüssel verbundenen Tabellen einfüge

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Habe unter Types Die Typen beider Tabellen festgehalten, geht das nciht ?

Code: Alles auswählen.

BEGIN OF ty_ZTE,
         nummer TYPE ZTE_TABLE_TEST3-nummer,
         vorname TYPE ZTE_TABLE_TEST3-vorname,
         nachname TYPE ZTE_TABLE_TEST3-nachname,
         postleitzahl TYPE ZTE_TABLE_TEST3-postleitzahl,
         ort TYPE ZTE_TABLE_TEST4-ort,
         plz TYPE ZTE_TABLE_TEST4-plz,
        End of ty_ZTE.

Re: Zeilen in 2 durch Schlüssel verbundenen Tabellen einfüge

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Dein Coding ist ziemlich wirr und nicht komplett.

Dieses dreimalige Werte zuweisen an <ZTE_TABELLE> macht auch keinen Sinn, da die ersten beiden Eintraege ueberschrieben werden.

Wundere mich, wie das bei der ersten Tabelle reibunglos geklappt haben soll.

Re: Zeilen in 2 durch Schlüssel verbundenen Tabellen einfüge

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Kannst mir dann bitte sagen wie es richtig geht :)

Re: Zeilen in 2 durch Schlüssel verbundenen Tabellen einfüge

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
patlau hat geschrieben:Kannst mir dann bitte sagen wie es richtig geht :)
Hallo patlau,

wonach du hier fragst ist doch absolutes Basiswissen ohne irgendwelche Schnörkel oder sonstige Schmankerl.
Du bist Student. Da du dich mit ABAP beschäftigst solltest du Scripte oder sonstige Vorlesungsunterlagen haben. Und eine ganze Unibücherei, wo es sicherlich ein Buch über die Grundlagen der ABAP-Programmierung gibt welches du ausleihen kannst.
Und zur Not gibt es auch noch die F1-Hilfe.
Was nützt es dir, wenn dir jemand die Lösung hier postet? Den Lerneffekt erzielst du viel besser, wenn du dich da durchbeißt und dir selber eine (funktionierende) Lösung erarbeitest.
Die meisten hier sind sicher bereit diese von dir selbst gefundene Lösung zu kommentieren - aber wenn wir für dich die Arbeit machen bringt dir das überhaupt nix.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Zeilen in 2 durch Schlüssel verbundenen Tabellen einfüge

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Sorry, habe es versucht, leider bekomme ich es nicht hin, da fehlt mir wohl die Logik dahinter. Ich studiere dual und bin momentan in der praxisphase. Mache dies als "Aufwärmübungen" für die AUfgabe die ich tatsächlich erst noch bekommen werde. Wäre schonmal super , wenn ein BEispiel-Coding aufgezeigt werden könnte.

Danke schonmal

Re: Zeilen in 2 durch Schlüssel verbundenen Tabellen einfüge

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
patlau hat geschrieben:Wäre schonmal super , wenn ein BEispiel-Coding aufgezeigt werden könnte.
Dazu solltest du die Aufgabe verständlich darstellen. Mir erschließt sich die Problemstellung nicht (oder sie ist so trivial und ich denke zu kompliziert).
Dein PseudoCode aus dem ersten Posting zeigt dev. eine falsche Reihenfolge. Bevor man Werte in eine Tabelle einfügt, muss man diese aufbauen. Sind bei dir mit Tabellen DB-Tabellen gemeint oder interne Tabellen? Die Schreibweise <ZTE_TABELLE> lässt auf ein Field-Symbole schliesen, dann fehlt aber die Zuweisung des Field-Symbole zu einem Datenbereich.

In etwa:

Code: Alles auswählen.

* Typdefinition
TYPES: BEGIN OF ts_adr,
      n_name TYPE c LENTH 40,
      v_name TYPE c LENTH 40,
      strasse  TYPE c LENTH 40,
      plz        TYPE c LENTH 5,
     END OF ts_adr.

TYPES: BEGIN OF ts_plz,
      plz        TYPE c LENTH 5,
      ort        TYPE c LENTH 5.
     END OF ts_plz.

* Datendeklaration
DATA: gs_adr TYPE ts_adr,
     gs_plz TYPE ts_adr.

* 1. Satz aufbauen
gs_adr-n_name = 'Mustermann'.
gs_adr-v_name = 'Max'.
gs_adr-strasse  = 'Hierschweg 7'.
gs_adr-plz       = '12345'.

* 1. abhängingen Satz aufbauen
gs_plz-plz = gs_adr-plz. "Schlüssel übernehmen.
gs_plz-ort = "Hierschhausen".

* Daten in DB übernehmen
* was ist gefordert: INSERT, UPDATE, MODIFY mehr dazu in der F1-Hilfe

IF sy-subrc <> 0.
*  Fehlerhandling nicht vergessen.  
ENDIF.
Gruß Hendrik

Re: Zeilen in 2 durch Schlüssel verbundenen Tabellen einfüge

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Habe nun probiert dies direkt auf meinen COde anzuwenden. In der ersten tabelle mit nummer, vorname, nachname und postleitzahl wurden meine hinzugefügten werte übernommen, und in der zweiten tabelle mit plz und ort wurde anstelle des ortes die plz eingetragen und anstelle der plz der ort. Habe im debugger gescheaut und finde den fehler leider nicht :(.
Hier mal der vollständige code:

Code: Alles auswählen.

TYPES:  BEGIN OF ty_ZTE3,
         nummer TYPE ZTE_TABLE_TEST3-nummer,
         vorname TYPE ZTE_TABLE_TEST3-vorname,
         nachname TYPE ZTE_TABLE_TEST3-nachname,
         postleitzahl TYPE ZTE_TABLE_TEST3-postleitzahl,
         ort TYPE ZTE_TABLE_TEST4-ort,
         plz TYPE ZTE_TABLE_TEST4-plz,
        End of ty_ZTE3,

        Begin of ty_ZTE4,
          ort TYPE ZTE_TABLE_TEST4-ort,
         plz TYPE ZTE_TABLE_TEST4-plz,
        END OF ty_ZTE4.

DATA:

      l_t_tab3 TYPE STANDARD TABLE OF  ty_ZTE3,
      l_t_tab4 TYPE STANDARD TABLE OF ty_ZTE4.


FIELD-SYMBOLS:
           <ZTE_TABELLE3> TYPE ty_ZTE3,
           <ZTE_TABELLE4> TYPE ty_ZTE4.


SELECT nummer vorname nachname postleitzahl FROM ZTE_TABLE_TEST3 INTO CORRESPONDING FIELDS OF TABLE l_t_tab3.
SELECT plz ort FROM ZTE_TABLE_TEST4 INTO CORRESPONDING FIELDS OF TABLE l_t_tab4.

LOOP AT l_t_tab3 ASSIGNING <ZTE_TABELLE3>  .

ENDLOOP.


LOOP AT l_t_tab4 ASSIGNING <ZTE_TABELLE4>  .

ENDLOOP.



<ZTE_TABELLE3>-nummer = '0000000015'.
<ZTE_TABELLE3>-vorname ='Thomas'.
<ZTE_TABELLE3>-nachname = 'Baier'.
<ZTE_TABELLE3>-postleitzahl = '79441'.


<ZTE_TABELLE4>-plz = <ZTE_TABELLE3>-postleitzahl.
<ZTE_TABELLE4>-ort = 'Karlsdorf'.


INSERT ZTE_TABLE_TEST3 FROM TABLE l_t_tab3 ACCEPTING DUPLICATE KEYS.
INSERT ZTE_TABLE_TEST4 FROM TABLE l_t_tab4 ACCEPTING DUPLICATE KEYS.



Sort l_t_tab3 by nummer .
Loop at l_t_tab3 ASSIGNING <ZTE_TABELLE3>.
  SELECT SINGLE ort  FROM ZTE_TABLE_TEST4
      INTO <ZTE_TABELLE3>-ort
      WHERE plz = <ZTE_TABELLE3>-postleitzahl.
       WRITE: / <ZTE_TABELLE3>-nummer, <ZTE_TABELLE3>-vorname,<ZTE_TABELLE3>-nachname,<ZTE_TABELLE3>-postleitzahl,
       <ZTE_TABELLE3>-ort, <ZTE_TABELLE3>-plz .
ENDLOOP.

Re: Zeilen in 2 durch Schlüssel verbundenen Tabellen einfüge

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
patlau hat geschrieben:Habe nun probiert dies direkt auf meinen COde anzuwenden.
Da hatte black_adept wohl recht. Du brauchst jemanden vor Ort der dir das beibringt.
Dein Coding hat mehrere Schwachstellen:

1. Wieso selektierst du die Daten in eine interne Tabelle? Die vorhandenen Daten intressieren dich doch garnicht.
2. Was sollen die beiden leeren Loops?
3. Mit der Zuweisung der Daten an das Field-Symbole übershreibst du die Daten des letzten Eintrags in der ITAB. Den Fehlerfall eines nicht zugewiesenen FieldSymbols berücksichtigst du gar nicht (Wenn dein Select/Loop z.B. nicht durchluafen wird bzw. keine Daten in der Itab stehen). Field-Symboles machen bei deiner Anforderung eigentlich keinen Sinn. Hier sollte mit Strukturen gearbeitet werden.
4. kein Fehlerhandling nach dem INSERT. Was wenn einer der beiden Inserts auf einen Fehler laufen.
5. Wieso arbeitest du mit ACCEPTING DUPPLICATE KEYS? Macht es nicht mehr Sinn zu prüfen was genau in die DB-Tabelle zu schreiben ist, anstatt unnötige Schreibvorgänge zu verursachen?
6. Vertauschung der Felder kann an der Typisierung der ITAB liegen. Wenn du in eine DB-Tabelle schreibst, sollten die ITAB und die DB-Tabelle gleich aufgebaut sein, am besten gleichen Typs sein.
Gruß Hendrik

Re: Zeilen in 2 durch Schlüssel verbundenen Tabellen einfüge

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
1, Doch nmöchte die vorhandenen sowie die hinzugefügten ausgeben
2. Die loops habe ich verwendet da sonst der fehler kam, das die feldsymbole erst initialisiert werden müsse.

Zu den restlichen Punkten hast du wohl recht dass mir das Verständnis fehlt. Soll ich also die Feldsymbole durch Strukturen ersetzten ?
kein Fehlerhandling nach dem INSERT. Was wenn einer der beiden Inserts auf einen Fehler laufen.
Und wie funktioniert die Fehlerbehandlung nach dem insert?
5. Wieso arbeitest du mit ACCEPTING DUPPLICATE KEYS? Macht es nicht mehr Sinn zu prüfen was genau in die DB-Tabelle zu schreiben ist, anstatt unnötige Schreibvorgänge zu verursachen?
Dies verstehe ich leider nicht:(
. Vertauschung der Felder kann an der Typisierung der ITAB liegen. Wenn du in eine DB-Tabelle schreibst, sollten die ITAB und die DB-Tabelle gleich aufgebaut sein, am besten gleichen Typs sein.
Dies habe ich doch anhand meiner TYPES anweisung so zugeordnet oder nicht?

Code: Alles auswählen.

BEGIN OF ty_ZTE3,
         nummer TYPE ZTE_TABLE_TEST3-nummer,
         vorname TYPE ZTE_TABLE_TEST3-vorname,
         nachname TYPE ZTE_TABLE_TEST3-nachname,
         postleitzahl TYPE ZTE_TABLE_TEST3-postleitzahl,
         ort TYPE ZTE_TABLE_TEST4-ort,
         plz TYPE ZTE_TABLE_TEST4-plz,
        End of ty_ZTE3,

        Begin of ty_ZTE4,
          ort TYPE ZTE_TABLE_TEST4-ort,
         plz TYPE ZTE_TABLE_TEST4-plz,
        END OF ty_ZTE4.

DATA:

      l_t_tab3 TYPE STANDARD TABLE OF  ty_ZTE3,
      l_t_tab4 TYPE STANDARD TABLE OF ty_ZTE4,
Ist vielleicht ein bisschen viel aber habe hier in diesem Forum wirklich sehr gute Hilfe erhalten auch meines Erachtens auch schon einiges gelernt ...will keinem auf die Nerven gehen:(

Re: Zeilen in 2 durch Schlüssel verbundenen Tabellen einfüge

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
patlau hat geschrieben:Ich studiere dual und bin momentan in der praxisphase. Mache dies als "Aufwärmübungen" für die AUfgabe die ich tatsächlich erst noch bekommen werde.
Hallo patlau,

gibt es denn in der Firma in der du arbeitest Niemanden, der irgendetwas mit ABAP zu tun hat und der sich mal ein halbes Stündchen neben dich setzt und dir ein oder zwei Worte zu deinem Coding sagt?
Und auch wenn alle Programmierer in deiner Umgebung Kellernerds sein sollten- Irgendeiner wird sich bestimmt Zeit für dich nehmen. Schlimmstenfalls musst du 2 Euro für ein paar Tässchen Kaffee investieren.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

6
Antw.
24347
Views
READ und Schlüssel von internen Tabellen
von Gino » 28.02.2005 17:35 • Verfasst in ABAP® Core
4
Antw.
7615
Views
BW - Zeilen einfügen in Transformations-Endroutine
von Andre1986 » 12.12.2010 20:44 • Verfasst in ABAP® für Anfänger
5
Antw.
4188
Views
Editierbarer ALV - Zeilen einfügen verbieten
von Legxis » 22.06.2018 13:17 • Verfasst in ABAP® Core
6
Antw.
4649
Views
ALV Drucktaste zum Zeilen einfügen/löschen
von Ibiza90 » 27.08.2013 08:24 • Verfasst in ABAP® für Anfänger
1
Antw.
2812
Views
Schlüssel > 120, generischer Schlüssel vergrößern
von zer0 » 27.01.2014 09:20 • Verfasst in ABAP® Core

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Regex in where
vor 8 Stunden von edwin 7 / 166
Daten an Tabelle binden
vor 22 Stunden von Bright4.5 3 / 1487

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

Regex in where
vor 8 Stunden von edwin 7 / 166
Daten an Tabelle binden
vor 22 Stunden von Bright4.5 3 / 1487

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822