Zwei Datenbanktabellen zusammenführen

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

Zwei Datenbanktabellen zusammenführen

Beitrag von dominoblau (ForumUser / 3 / 0 / 0 ) »
Hallo zusammen,

ich bin absoluter ABAP-Neuanfänger und habe folgendes Problem bzw. Ziel:

Ich möchte zwei Tabellen in eine interne Tabelle zusammenführen.
Das Problem hierbei ist aber, dass die beiden Datenbanktabellen nicht ganz die gleiche Struktur bzw. die selben Spalten besitzen.
Dennoch möchte ich die beiden Tabellen zusammenfügen, wo Sie die gleichen Spalten besitzen.

Hierbei hätte ich aber noch eine Besonderheit und zwar:
In einer Tabelle 2 befindet sich das Feld "Datum" mit Datentyp DATS (mit dem Format tt.mm.yyyy)

In der anderen Tabelle (Tabelle 1) findet man hingegen das Feld "DatumMMJJJJ" mit Datentyp NUMC (mit dem Format (mm.yyyy).

Jetzt zu meiner eigentlichen Frage:
Wie kann ich die beiden Tabellen zu einer internen Tabelle zusammenführen.
Meine Idee wäre hierbei gewesen:
1. Ich kopiere zunächst die beiden Tabelle zunächst in interne Tabellen
2. Ich ändere das Feld der beiden Tabelle von tt.mm.yyyy in mm.yyyy ab
3. Ich führe die beiden Tabelle zusammen bzw. ich füge die Tabelle 1 an Tabelle 2 an.

Könnt ihr bitte mir hierbei helfen, wie ich dies schaffen könnte.

Besten Dank und viele Grüße

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


Re: Zwei Datenbanktabellen zusammenführen

Beitrag von deejey (Specialist / 422 / 129 / 45 ) »
Was bedeutet "zusammenfügen", n Sätze in einen Satz? Dafür braucht es passende Schlüsselbegriffe um sie zuordnen zu können.

Datum YYYYMMTT in YYYYMM zu überführen bedeutet Informationsverlust, ist das gewollt? Ansonsten kannst eine Struktur bauen die die größete Tabelle enthält und die Felder der anderen hinzufügen die du zusätzlich in der ITab haben willst. Das kann per CORRESPONDING versorgt werden (also MOVE nur die Felder die einen passenden Namen haben), das Daten sammeln und verdichten kann wenn erforderlich per COLLECT geschehen, hier muss man nachlesen wie COLLECT vorgeht

Re: Zwei Datenbanktabellen zusammenführen

Beitrag von DeathAndPain (Top Expert / 1961 / 261 / 415 ) »
Im Prinzip geht das so (mindestens Release 7.40):

Code: Alles auswählen.

DATA: I1 TYPE STANDARD TABLE OF DATENBANKTABELLE1 WITH EMPTY KEY,
      I2 TYPE STANDARD TABLE OF DATENBANKTABELLE2 WITH EMPTY KEY.

  SELECT * INTO I1 FROM DATENBANKTABELLE1 WHERE whatever.
  SELECT * INTO I2 FROM DATENBANKTABELLE2 WHERE whatever.

  I1 = CORRESPONDING #( BASE ( I1 ) I2 EXCEPT DATUMSFELD ).
Dann hast Du beide Tabellen in i1 vereinigt (wobei Du von i2 nur die Spalten drin hast, die es mit dem Namen auch in i1 gibt). Das Problem ist nur das Datumsfeld. In obenstehendem Beispiel lasse ich dieses mit dem EXCEPT DATUMSFELD außen vor.

Wenn Du das auch drin haben möchtest, musst Du Dir eine Hilfstabelle basteln, in der Du das Feld vorher in das Format von i1 konvertierst, beispielsweise so:

Code: Alles auswählen.

TYPES: BEGIN OF HILFSTABELLE.
         INCLUDE STRUCTURE I2.
TYPES:   DATUM_IM_I1_FORMAT(6) TYPE N,
       END OF HILFSTABELLE.

DATA: I1 TYPE STANDARD TABLE OF DATENBANKTABELLE1 WITH EMPTY KEY,
      I2 TYPE STANDARD TABLE OF DATENBANKTABELLE2 WITH EMPTY KEY,
      HILFSTABELLE TYPE STANDARD TABLE OF HILFSTABELLE WITH EMPTY KEY.

  SELECT * INTO I1 FROM DATENBANKTABELLE1 WHERE WHATEVER.
  SELECT * INTO I2 FROM DATENBANKTABELLE2 WHERE WHATEVER.

  HILFSTABELLE = CORRESPONDING #( I2 ).

  LOOP AT HILFSTABELLE ASSIGNING FIELD-SYMBOL(<HILFSTABELLE>).
    <HILFSTABELLE>-DATUM_IM_I1_FORMAT = DATUMSFELD+4(2) && DATUMSFELD(4). " Der Tag fällt flach, den gibt es in Deiner ersten Tabelle ja nicht
  ENDLOOP.

  I1 = CORRESPONDING #( BASE ( I1 ) HILFSTABELLE MAPPING DATUMSFELD = DATUM_IM_I1_FORMAT ).

Re: Zwei Datenbanktabellen zusammenführen

Beitrag von dominoblau (ForumUser / 3 / 0 / 0 ) »
Vielen Dank für eure Hilfe.

Ich habe den vorherigen Code mal versucht.

Leider bekomme ich immer folgende Fehlermeldung:
"Feld DATUM unbekannt. Es ist weder in einer der angegebenen Tabellen enthalten...

Anbei mein Code:

TYPES: BEGIN of HILFSTABELLE.
INCLUDE STRUCTURE z9misdaten.
TYPES: DJJMM(6) TYPE N,
END OF HILFSTABELLE.

data: itab_z9aupidt TYPE STANDARD TABLE OF z9aupidt WITH EMPTY KEY.
data: itab_z9misdaten TYPE STANDARD TABLE OF z9misdaten WITH EMPTY KEY.
data: HILFSTABELLE TYPE STANDARD TABLE OF HILFSTABELLE WITH EMPTY KEY.

START-OF-SELECTION.

Select * FROM z9misdaten
INTO TABLE itab_z9misdaten.

Select * from z9aupidt
INTO TABLE itab_z9aupidt.

HILFSTABELLE = CORRESPONDING #( itab_z9misdaten ).

LOOP AT HILFSTABELLE ASSIGNING FIELD-SYMBOL(<HILFSTABELLE>).
<HILFSTABELLE>-DJJMM = DATUM+4(2) && DATUM(4).

itab_z9aupidt = CORRESPONDING #( BASE ( itab_z9aupidt ) HILFSTABELLE MAPPING DATUM = DJJMM ).

Re: Zwei Datenbanktabellen zusammenführen

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
Versuchs mal mit

Code: Alles auswählen.

<HILFSTABELLE>-DJJMM = <HILFSTABELLE>-DATUM+4(2) && <HILFSTABELLE>-DATUM(4).
Außerdem verwende bitte den CODE-Tag wenn du Quellcode hier im Forum postest. Danke.
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

10
Antw.
9054
Views
zwei interne Tabellen zusammenführen => ALV
von Mark33 » 22.08.2012 07:00 • Verfasst in ABAP® für Anfänger
2
Antw.
15396
Views
Zwei interne Tabellen zusammenführen
von _Manfred_ » 28.04.2005 13:57 • Verfasst in ABAP® für Anfänger
2
Antw.
1461
Views
Datenbanktabellen verschachteln?
von Zubasa » 10.05.2011 10:20 • Verfasst in ABAP® für Anfänger
6
Antw.
2145
Views
Frage zu Datenbanktabellen
von cyb1982 » 24.08.2011 16:29 • Verfasst in ABAP® für Anfänger
7
Antw.
5646
Views
Suchhilfe für Datenbanktabellen
von miho » 19.09.2013 15:47 • Verfasst in Dialogprogrammierung

Aktuelle Forenbeiträge

Nach MESSAGE TYPE E Felder entsperren
vor einer Woche von rob_abc gelöst 8 / 8785
ABAP - Mail so10 Text
vor einer Woche von retsch 6 / 2665

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

Nach MESSAGE TYPE E Felder entsperren
vor einer Woche von rob_abc gelöst 8 / 8785
ABAP - Mail so10 Text
vor einer Woche von retsch 6 / 2665

Unbeantwortete Forenbeiträge

SD_PRINT_TERMS_OF_PAYMENT
vor 2 Wochen von Manfred K. 1 / 3065
BUSOBJEKT zu CMIS PHIO ermitteln
vor 5 Wochen von snooga87 1 / 4879
aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 5915