Tabellen verbinden

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

Tabellen verbinden

Beitrag von NLengner (ForumUser / 31 / 7 / 2 ) »
Hallo Zusammen,
ich finde nach etwas suchen nichts im Internet.
Ich lade zwei CSV Datein vom Inftotyp 0 und 1 hoch. Diese bringe ich jeweils in eine Tabelle. (Infotyp1 = <fs1>, Infotyp0 = <fs0>).
Beide besitzen die selbe PERNR und jetzt möchte ich diese Tabelle miteinander verbunden werden, also Zeile von <fs2> in die selbe Zeile der passenden PERNR von <fs1>.

wie bekomme ich das Problem gelöst?

Mein bisheriges Coding:

Code: Alles auswählen.

**********************************************************************
* Erstellen der ITAB von 0er Infotyp
**********************************************************************
  struktur_typ0 ?= cl_abap_tabledescr=>describe_by_name( 'ty_inputstruc0' ).

  DATA(klasse0) = NEW zcl_fileconvert_to_sap(
  iv_path           = p_file0
  iv_seperator      = ';'
  io_type_structure = struktur_typ0
  iv_check_length   = ''
  ).

  DATA(it0) = klasse0->read_frontend( ).

  DATA(data0) = klasse0->get_data( ).

  ASSIGN data0->* TO FIELD-SYMBOL(<fs0>).

**********************************************************************
* Erstellen der ITAB von 1er Infotyp
**********************************************************************
  struktur_typ1 ?= cl_abap_tabledescr=>describe_by_name( 'ty_inputstruc1' ).

  DATA(klasse1) = NEW zcl_fileconvert_to_sap(
  iv_path           = p_file1
  iv_seperator      = ';'
  io_type_structure = struktur_typ1
  iv_check_length = ''
  ) .

  DATA(it1) = klasse1->read_frontend( ).

  DATA(data1) = klasse1->get_data( ).

  ASSIGN data1->* TO FIELD-SYMBOL(<fs1>).
**********************************************************************
* Zusammenfügen zu einer Tabelle
**********************************************************************

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


Re: Tabellen verbinden

Beitrag von M@atze! (ForumUser / 92 / 6 / 21 ) »
Hi,

Annahnme: Strukturen vom Typ PA0000 bzw. PA0001.

Neue Struktur anlegen:

Struktur ZTST_INFTYPE
Komponente | Typisierungsart | Kompnententyp | Gruppe
MANDT | 1 Type | MANDT
.INCLUDE | 1 Type | PAKEY | PAKEY
.INCLUDE | 1 Type | PSHD1 | PSHD1
.INCLUDE | 1 Type | PS0000 | PS0000
.INCLUDE | 1 Type | PS0001 | PS0001

Die einzelnen Includes können so mit dem Gruppennamen angesprochen werden.
Die ersten zwei Includes sind in den Tabellen PA0000 und PA0001 ja gleich.

Bsp.:

Code: Alles auswählen.

DATA: inftype TYPE ztst_inftype,
      ps0000  TYPE ps0000,
      ps0001  TYPE ps0001.

inftype-ps0000 = ps0000.
inftype-ps0001 = ps0001.
Ich weiß jetzt nicht, wie deine Strukturen genau aussehen, aber mit "MOVE-CORRESPONDING" sollte es dann funktionieren (evtl. sogar ohne die Gruppen).

Bsp.:

Code: Alles auswählen.

DATA: inftype TYPE ztst_inftype,
      pa0000  TYPE pa0000,
      pa0001  TYPE pa0001.

MOVE-CORRESPONDING pa0000 TO inftype-ps0000.
MOVE-CORRESPONDING pa0001 TO inftype-ps0001.

Re: Tabellen verbinden

Beitrag von NLengner (ForumUser / 31 / 7 / 2 ) »
Ich weiß jetzt nicht, wie deine Strukturen genau aussehen, aber mit "MOVE-CORRESPONDING" sollte es dann funktionieren (evtl. sogar ohne die Gruppen).
Ich habe überhaupt keine Gruppen bzw includes. Meine Typen sehen so aus:

Code: Alles auswählen.

TYPES: BEGIN OF ty_inputstruc0,
         pernr TYPE  persno,
         subty TYPE subty,
         objps TYPE objps,
         sprps TYPE sprps,
         endda TYPE endda,
         begda TYPE begda,
         seqnr TYPE seqnr,
         aedtm TYPE aedat,
         uname TYPE aenam,
         histo TYPE histo,
         itxex TYPE itxex,
         refex TYPE prfex,
         ordex TYPE ordex,
         itbld TYPE itbld,
         preas TYPE preas,
         flag1 TYPE nused,
         flag2 TYPE nused,
         flag3 TYPE nused,
         flag4 TYPE nused,
         rese1 TYPE nused2,
         rese2 TYPE nused2,
         grpvl TYPE pcce_gpval,
         massn TYPE massn,
         massg TYPE massg,
         stat1 TYPE stat1,
         stat2 TYPE stat2,
         stat3 TYPE stat3,
       END OF ty_inputstruc0,
       BEGIN OF ty_inputstruc1,
         pernr     TYPE  persno,
         subty     TYPE subty,
         objps     TYPE objps,
         sprps     TYPE sprps,
         endda     TYPE endda,
         begda     TYPE begda,
         seqnr     TYPE seqnr,
         aedtm     TYPE aedat,
         uname     TYPE aenam,
         histo     TYPE histo,
         itxex     TYPE itxex,
         refex     TYPE prfex,
         ordex     TYPE ordex,
         itbld     TYPE itbld,
         preas     TYPE preas,
         flag1     TYPE nused,
         flag2     TYPE nused,
         flag3     TYPE nused,
         flag4     TYPE nused,
         rese1     TYPE nused2,
         rese2     TYPE nused2,
         grpvl     TYPE pcce_gpval,
         bukrs     TYPE bukrs,
         werks     TYPE persa,
         persg     TYPE persg,
         persk     TYPE persk,
         vdsk1     TYPE vdsk1,
         gsber     TYPE gsber,
         btrtl     TYPE btrtl,
         juper     TYPE juper,
         abkrs     TYPE abkrs,
         ansvh     TYPE ansvh,
         kostl     TYPE kostl,
         orgeh     TYPE orgeh,
         plans     TYPE plans,
         stell     TYPE stell,
         mstbr     TYPE mstbr,
         sacha     TYPE sacha,
         sachp     TYPE sachp,
         sachz     TYPE sachz,
         sname     TYPE smnam,
         ename     TYPE emnam,
         otype     TYPE otype,
         sbmod     TYPE sbmod,
         kokrs     TYPE kokrs,
         fistl     TYPE fistl,
         geber     TYPE bp_geber,
         fkber     TYPE fkber,
         grant_nbr TYPE gm_grant_nbr,
         sgmnt     TYPE fb_segment,
         budget_pd TYPE fm_budget_period,
       END OF ty_inputstruc1.
Bedeutet, ich habe alles außer die Includes in den Typen rein geschrieben.

Re: Tabellen verbinden

Beitrag von M@atze! (ForumUser / 92 / 6 / 21 ) »
Hm, ich frage mich zwar warum du nicht die vorhandenen Standard-Strukturen verwendest, für die Lösung ist es aber egal, funktioniert genauso.
Du brauchst halt eine dritte Struktur mit allen Feldern aus den ersten beiden.
Und die ist mit den vorhandenen Standard-Includes ja sehr schnell gebaut.

Re: Tabellen verbinden

Beitrag von NLengner (ForumUser / 31 / 7 / 2 ) »
Lösung gefunden.

Habe dein MOVE-CORRESPONDING genutzt. aber um beide zusammen zu fügen habe ich noch PROVIDE nutzen müssen.
Danke dennoch für deine Hilfe.

Code: Alles auswählen.

  DATA: t_table   TYPE TABLE OF ty_tab,
        bedingung TYPE string,
        flag1     TYPE flag1,
        flag2     TYPE flag1.

  t_table1 = <fs1>.
  t_table0 = <fs0>.


  PROVIDE FIELDS * FROM t_table0
                                INTO ls_table0
                                VALID flag1
                                BOUNDS begda AND endda
          FIELDS * FROM t_table1
                                INTO ls_table1
                                VALID flag2
                                BOUNDS begda AND endda
                                BETWEEN '20180101' AND '20181231'.

  MOVE-CORRESPONDING t_table0 TO t_table.
  MOVE-CORRESPONDING t_table1 TO t_table.

  ENDPROVIDE.

Re: Tabellen verbinden

Beitrag von M@atze! (ForumUser / 92 / 6 / 21 ) »
Uff, hätte jetzt eher in Richtung so etwas erwartet:

Code: Alles auswählen.

LOOP AT t_table0 ASSIGNING FIELD-SYMBOL(<s_table0>) WHERE begda BETWEEN '20180101' AND '20181231'. "evtl. weitere Bedingungen
  LOOP AT t_table1 ASSIGNING FIELD-SYMBOL(<s_table1>) WHERE pernr EQ <s_table0>-pernr. "evtl. weitere Bedingungen
    MOVE-CORRESPONDING <s_table0> TO s_table.
    MOVE-CORRESPONDING <s_table1> TO s_table.
    APPEND s_table TO t_table.
  ENDLOOP.
ENDLOOP.
oder so etwas:

Code: Alles auswählen.

LOOP AT t_table0 ASSIGNING FIELD-SYMBOL(<s_table0>) WHERE begda BETWEEN '20180101' AND '20181231'. "evtl. weitere Bedingungen
  ASSIGN t_table1[ pernr = <s_table0>-pernr ] TO FIELD-SYMBOL(<s_table1>). "evtl. weitere Bedingungen
  MOVE-CORRESPONDING <s_table0> TO s_table.
  MOVE-CORRESPONDING <s_table1> TO s_table.
  APPEND s_table TO t_table.
ENDLOOP.
Aber wenns funktioniert, alles gut :)

Gruß
Matze

Re: Tabellen verbinden

Beitrag von DeathAndPain (Top Expert / 1797 / 214 / 396 ) »
So hätte ich es auch gemacht, aber der PROVIDE-Befehl ist hier deutlich eleganter. Den sieht man aber so selten, dass man gar nicht an ihn denkt, wenn man ihn wirklich mal gebrauchen könnte. ;-)

Re: Tabellen verbinden

Beitrag von M@atze! (ForumUser / 92 / 6 / 21 ) »
Ja, da hast du wohl recht :-D

Seite 1 von 1

Vergleichbare Themen

6
Antw.
2629
Views
Tabellen verbinden
von ferox » 15.02.2006 09:31 • Verfasst in SAP - Allgemeines
9
Antw.
6505
Views
mehrere Tabellen 'verbinden'
von MarkusW » 09.05.2007 14:36 • Verfasst in ABAP® Core
13
Antw.
4633
Views
wie kan man zwei interen tabellen verbinden?
von autohandel7 » 14.07.2014 10:59 • Verfasst in ABAP® für Anfänger
2
Antw.
4893
Views
OPEN SQL JOIN / Eine Tabelle mit >1 Tabellen verbinden
von Michael71 » 30.01.2012 13:02 • Verfasst in ABAP® Core
6
Antw.
3256
Views
verbinden unterschiedlicher SAP Systeme
von jig » 05.05.2004 19:49 • Verfasst in SAP - Allgemeines

Über diesen Beitrag


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.