select mehrere tabellen

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

select mehrere tabellen

Beitrag von thr-hn (ForumUser / 11 / 3 / 0 ) »
Hallo miteinander,

wahrscheinlich ist die Lösung nicht so schwer, ich hab dran zu knabbern.

Ich möchte aus der Tabelle TIBAN eine Bankverbindung oder auslesen.
Die Kombination aus: banks, bankl, bankn und iban gibt es immer nur genau 1 Mal.
Mit dieser Kombination bzw. den drei bank* möchte ich aus Tabelle KNBK (Debitoren) alle Einträge erhalten, die genau diese Felder beinhalten.
Ausgewählte Felder aus TIBAN und KNBK möchte ich in eine iTab schreiben, die ich dann ausgebe.
Ich habe das wie folgt programmiert.

Code: Alles auswählen.

    SELECT tiban~iban tiban~banks tiban~bankl tiban~bankn
      FROM tiban
      APPENDING table gt_iban
      WHERE tiban~iban IN o_iban.
    clear wa_iban.
    LOOP AT gt_iban INTO wa_iban. " Felder aus TIBAN in ITAB schreiben
      write: wa_iban-iban  to itab-iban,
             wa_iban-banks to itab-banks,
             wa_iban-bankl to itab-bankl,
             wa_iban-bankn to itab-bankn.

* Felder aus KNBK dazu lesen
      clear wa_knbk.
      SELECT * FROM knbk INTO wa_knbk
              WHERE   banks = wa_iban-banks
              and     bankl = wa_iban-bankl
              and     bankn = wa_iban-bankn.
        WRITE: wa_knbk-kunnr to itab-kunnr.
      ENDSELECT.
Wenn in KNBK nur einmal diese Kombination vorkommt, passt es.
Wenn es aber mehrere Sätze gibt, für die das zutrifft, kommt auch nur ein Satz in meiner iTab an.
Was muss ich ändern, dass ich alle Einträge bekomme?
Danke für die Hilfe!

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


Re: select mehrere tabellen

Beitrag von Alexander D. (Expert / 682 / 30 / 84 ) »
hallo,

nach dem WRITE: wa_knbk-kunnr to itab-kunnr solltest du noch ein APPEND itab dran hängen
schöne Grüße
Alexander

ECC 6.0 EHP 7

Re: select mehrere tabellen

Beitrag von thr-hn (ForumUser / 11 / 3 / 0 ) »
Danke für den Tipp.

Wahrscheinlich liegt es daran, dass ich nicht alles eingestellt habe.
Nachdem ich die Werte aus TIBAN und KNBK geholt habe, möchte ich noch ein paar Felder aus KNA1 dazu lesen.
Das sieht also so aus:

Code: Alles auswählen.

* Felder aus KNBK dazu lesen
      clear wa_knbk.
      SELECT * FROM knbk INTO wa_knbk
              WHERE   banks = wa_iban-banks
              and     bankl = wa_iban-bankl
              and     bankn = wa_iban-bankn.
        WRITE: wa_knbk-kunnr to itab-kunnr.
      ENDSELECT.
* Felder aus KNA1 dazu lesen
      clear wa_kna1.
      SELECT * FROM kna1 INTO wa_kna1
                  WHERE   kunnr = wa_knbk-kunnr.
        write: wa_kna1-loevm to itab-loevm,
               wa_kna1-xzemp to itab-xzemp,
               wa_kna1-name1 to itab-name1,
               wa_kna1-name2 to itab-name2,
               wa_kna1-stras to itab-stras,
               wa_kna1-pstlz to itab-pstlz,
               wa_kna1-ort01 to itab-ort01.
      endselect.
      append itab. " Zeile an ITAB anhängen
      clear itab.  " Zwischenspeicher der ITAB löschen, damit keine Altdaten übertragen werden
    ENDLOOP.
Da ist der append.
und wenn ich nach dem write itab-kunnr noch einen append setze, bekomme ich doppelte Ergebnisse.

Re: select mehrere tabellen

Beitrag von Alexander D. (Expert / 682 / 30 / 84 ) »
du greifst auf die KNA1 mit dem kompletten Schlüssel zu, da reicht also ein SELECT SINGLE. Und das APPEND gehört auf jeden Fall mit in die SELECT-ENDSELECT Schleife zu KNBK rein.

so müsste es klappen:

Code: Alles auswählen.

    * Felder aus KNBK dazu lesen
          clear wa_knbk.
          SELECT * FROM knbk INTO wa_knbk
                  WHERE   banks = wa_iban-banks
                  and     bankl = wa_iban-bankl
                  and     bankn = wa_iban-bankn.
            WRITE: wa_knbk-kunnr to itab-kunnr.          
		  
    * Felder aus KNA1 dazu lesen
          clear wa_kna1.
          SELECT single * FROM kna1 INTO wa_kna1
                      WHERE   kunnr = wa_knbk-kunnr.
					  
            write: wa_kna1-loevm to itab-loevm,
                   wa_kna1-xzemp to itab-xzemp,
                   wa_kna1-name1 to itab-name1,
                   wa_kna1-name2 to itab-name2,
                   wa_kna1-stras to itab-stras,
                   wa_kna1-pstlz to itab-pstlz,
                   wa_kna1-ort01 to itab-ort01.
          
          append itab. " Zeile an ITAB anhängen
          clear itab.  " Zwischenspeicher der ITAB löschen, damit keine Altdaten übertragen werden
		  
		  endselect.
schöne Grüße
Alexander

ECC 6.0 EHP 7

Re: select mehrere tabellen

Beitrag von thr-hn (ForumUser / 11 / 3 / 0 ) »
Leider funktioniert das nicht.
Mit dem SELECT SINGLE darf ich keinen ENDSELECT bringen. Sonst sagt das System:
"Schachtelung nicht korrekt. Zu ENDSELECT existiert keine offene, mit SELECT begonnene Kontrollstruktur"

Hat jemand noch eine Idee?

Grüße und schönes Wochenende

Thomas

Re: select mehrere tabellen

Beitrag von Alexander D. (Expert / 682 / 30 / 84 ) »
hallo Thomas,

in dem von mir vorgeschlagenen Beispielcode gibt es nur ein ENDSELECT, und das bezieht sich auf "SELECT * FROM knbk". Wenn bei dir die Schachtelung angemeckert wird, so muss es an dem restlichen Code liegen. Wenn du den Fehler nicht selbst findest, so poste hier bitte den vollständigen Code mit dem du Daten selektierst

aus dem was du bis jetzt gepostet hast müsste der Code nun so aussehen:

Code: Alles auswählen.

        SELECT tiban~iban tiban~banks tiban~bankl tiban~bankn
          FROM tiban
          APPENDING table gt_iban
          WHERE tiban~iban IN o_iban.
		  
        clear wa_iban.		
        LOOP AT gt_iban INTO wa_iban. " Felder aus TIBAN in ITAB schreiben
          write: wa_iban-iban  to itab-iban,
                 wa_iban-banks to itab-banks,
                 wa_iban-bankl to itab-bankl,
                 wa_iban-bankn to itab-bankn.

    * Felder aus KNBK dazu lesen
          clear wa_knbk.
          SELECT * FROM knbk INTO wa_knbk
                  WHERE   banks = wa_iban-banks
                  and     bankl = wa_iban-bankl
                  and     bankn = wa_iban-bankn.
            WRITE: wa_knbk-kunnr to itab-kunnr.
			
* Felder aus KNA1 dazu lesen
          clear wa_kna1.
          SELECT single * FROM kna1 INTO wa_kna1
                      WHERE   kunnr = wa_knbk-kunnr.
                                         
            write: wa_kna1-loevm to itab-loevm,
                   wa_kna1-xzemp to itab-xzemp,
                   wa_kna1-name1 to itab-name1,
                   wa_kna1-name2 to itab-name2,
                   wa_kna1-stras to itab-stras,
                   wa_kna1-pstlz to itab-pstlz,
                   wa_kna1-ort01 to itab-ort01.
         
          append itab. " Zeile an ITAB anhängen
          clear itab.  " Zwischenspeicher der ITAB löschen, damit keine Altdaten übertragen werden
                 
          ENDSELECT.
     
	 endloop.

Folgende Benutzer bedankten sich beim Autor Alexander D. für den Beitrag:
thr-hn

schöne Grüße
Alexander

ECC 6.0 EHP 7

Re: select mehrere tabellen

Beitrag von thr-hn (ForumUser / 11 / 3 / 0 ) »
Hallo Alexander,

vielen Dank! Jetzt funktioniert es wie gewünscht.
Der Vollständigkeit halber möchte ich noch anfügen, dass ich die WRITE-Befehle, die seither gesplittet waren, jetzt alle am Ende vor APPEND itab schreibe, da sonst die bank* Felder aus der Tabelle TIBAN beim wiederholten Durchlauf nicht gefüllt werden.

Grüße

Thomas

Seite 1 von 1

Vergleichbare Themen

7
Antw.
8564
Views
Select auf zwei Tabellen
von mip » 27.03.2008 16:05 • Verfasst in ABAP® für Anfänger
2
Antw.
2417
Views
SELECT über 6 DB-Tabellen
von Mavrix » 14.06.2007 07:48 • Verfasst in ABAP® für Anfänger
9
Antw.
4245
Views
Select über 3 Tabellen
von Papst BenR » 08.09.2014 21:36 • Verfasst in ABAP® für Anfänger
13
Antw.
7947
Views
Select auf 2 große Tabellen
von ann_bine » 01.06.2012 14:56 • Verfasst in ABAP® für Anfänger
7
Antw.
7714
Views
Select Options und Range Tabellen
von gs3rr4 » 29.12.2016 14:12 • 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 / 618
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2244
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8835