Join KONV und VBRK

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Join KONV und VBRK

Beitrag von Fredi (ForumUser / 42 / 0 / 0 ) »
Hallo,
ich möchte eine kleine Liste erstellen. Normalerweise würde ich einen QuickViewer benutzen. Allerdings ist die KONV eine Clustertabelle. Hat jemand eine Idee, wie ich folgende Anforderung in einem Programm unterkriege (bei normaler bis schneller Performance - das was ich vorhabe, dauert wohl nämlich ziemlich lang):

Abgefragt werden sollen alle Fakturabelege, die eine bestimmte Preiskondition enthalten. In der VBRK ist die Rechnungsnummer (vbeln) und die Konditionsnummer (knumv) und in der KONV die Kondition (ZSCHL) und ebenfalls die Konditionsnummer (knumv). In einen Join kann ich sie nicht packen. Bleibt wohl nur der Weg, die beiden Tabellen einzeln auszulesen. Was meinen die Fachleute (ich zähle mich leider nicht dazu)?

Danke und Gruß,
Fredi

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


Beitrag von JDO ( / / 0 / 3 ) »
Hallo Fredi,

VBRK allein genügt nicht. Da die Konditionen sich nicht auf die gesamte Faktura, sondern auf die einzelnen Positionen beziehen, ist auch VBRP zu lesen.

SELECT KSCHL
INTO KONV-KSCHL
FROM KONV UP TO 1 ROWS
WHERE KNUMV = VBRK-KNUMV
AND KPOSN = VBRP-POSNR
AND KSCHL = MY_KSCHL.

'UP TO 1 ROWS' ist erforderlich, da mehrere Konditionssätze existieren können (KONV-STUNR, KONV-ZAEHK).

Evtl. ist auch noch zu prüfen, ob die Kondition aktiv oder inaktiv ist (KONV-KINAK).

MfG Juergen

Beitrag von Fredi (ForumUser / 42 / 0 / 0 ) »
Hallo Jürgen,
danke für Deine Antwort. Ist schon richtig, daß sich die Konditionen auf die einzelnen Positionen beziehen. Wenn ich allerdings nur die VBRK abfrage und dort über die KONV einen Eintrag finde, kann ich doch davon ausgehen, daß in dieser Faktura die Kondition vorkommt. Weil jede Positionskondition auch im Kopf zu sehen ist, oder?

Ich habe es jetzt so gelöst. Ist mit Sicherheit nicht sehr performant, bringt mir (als Laien) aber zumindest ein Ergebnis.

Code: Alles auswählen.

REPORT ZCO_INV_KONDI.

TABLES: KONV, VBRK.

TYPES : BEGIN OF vbrk_htab,
         vbeln LIKE vbrk-vbeln,
         fkart LIKE vbrk-fkart,
         fkdat LIKE vbrk-fkdat,
         knumv LIKE vbrk-knumv,
         kunag LIKE vbrk-kunag,
         kunrg LIKE vbrk-kunrg,
         netwr LIKE vbrk-netwr,
         waerk LIKE vbrk-waerk,
         kschl LIKE konv-kschl,
        END OF vbrk_htab.

DATA: H_ITAB TYPE STANDARD TABLE OF vbrk_htab WITH HEADER LINE.


SELECTION-SCREEN BEGIN OF BLOCK ZCO WITH FRAME TITLE text-t01.
SELECT-OPTIONS : s_vbeln for vbrk-vbeln,
                 s_fkart for vbrk-fkart,
                 s_fkdat for vbrk-fkdat.
PARAMETERS:      s_kschl LIKE konv-kschl DEFAULT 'ZHR0'.
SELECTION-SCREEN END OF BLOCK ZCO.

SELECT vbeln fkdat knumv kunag kunrg netwr waerk fkart
  into corresponding fields of H_itab
 from vbrk
 where vbeln IN s_vbeln AND
       fkdat IN s_fkdat AND
       fkart IN s_fkart.
append h_itab.
ENDSELECT.

LOOP AT h_itab.
    SELECT kschl INTO h_itab-kschl FROM konv
           WHERE kschl = s_kschl AND
                 knumv = H_itab-knumv.

    MODIFY h_itab.
    endselect.
ENDLOOP.
Für weitere Vorschläge bin ich gerne zu haben.

Danke und Gruß,
Fredi

Beitrag von dimes (Specialist / 146 / 0 / 0 ) »
Wenn du performant arbeiten willst dann
würde ich bei select ... into (...) benutzen
spart paar millisecündchen :lol: anstatt corresponding fields.

Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
Nee, nee, nee...

Code: Alles auswählen.

INTO CORRESPONDING FIELDS OF TABLE h_itab
...sollte viel bringen...

Just my 0.02$...

Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Beitrag von dimes (Specialist / 146 / 0 / 0 ) »
Haubi hat geschrieben:Nee, nee, nee...

Code: Alles auswählen.

INTO CORRESPONDING FIELDS OF TABLE h_itab
...sollte viel bringen...

Just my 0.02$...

Haubi
ich glaub das correspondig fields ...
langsamerist , da das System noch einen Abgleich zwischen den selektierten Feldern und den Feldern in der internen Tabelle machen muss!!!

Es macht mehr Sinn, sich von Anfang an auf die Felder zu beschränken, die auch benötigt werden.

ABAP-DOKU: Performance:

Die Varianten ... INTO CORRESPONDING FIELDS OF wa, ... INTO CORRESPONDING FIELDS OF TABLE itab und ... APPENDING CORRESPONDING FIELDS OF TABLE itab benötigen im Vergleich zu den entsprechenden Varianten ohne CORRESPONDING FIELDS eine etwas höhere - von der Größe der Lösungsmenge aber unabhängige - Laufzeit. Sie sollten deshalb möglichst nur bei der Selektion von größeren Datenmengen benutzt werden.

Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
Das ist jetzt zwar OT, kann ich so aber nicht stehen lassen:
Zwischen SELECT und ENDSELECT steht hier nur der APPEND. In dieser Konstellation ist es weitaus besser einen INTO CORRESPONDING FIELDS OF TABLE zu machen.
Noch besser wäre INTO TABLE, dafür müsste aber die Reihenfolge der Felder geändert werden. Die paar Millisekündchen für CORRESPONDING machen den Kohl echt nicht fett.

Gruss,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo dimes,

Dein Einwand ist vollkommen richtig, ist aber für mich, wie auch wohl für Haubi, zweitrangig, da die wichtigen Performancebremsen die SELECT-Schleife und die Nachselektion im LOOP sind.
Wenn die beseitigt sind, kann man sich über die Auswirkungen von CORRESPONDING (ob beim SELECT oder MOVE ist dabei egal).

Da die KONV eine Clustertabelle ist, erscheinen mir zwei SELECT's sinnvoll, wobei der zweite SELECT mittels FOR ALL ENTRIES nur die Einträge lesen soll, zu denen es in der VBRK auch entsprechende Schlüssel gibt.
Anschließend werden die Daten in einem LOOP mit READ auf die it_konv abgemischt.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Seite 1 von 1

Vergleichbare Themen

10
Antw.
2862
Views
SQL-Verkettung vbrp vbrk Selektion nach Kundennr
von swonny » 14.07.2017 09:34 • Verfasst in ABAP® für Anfänger
1
Antw.
1224
Views
Join mit Left Outer Join
von Rude1986 » 17.01.2021 19:53 • Verfasst in ABAP® für Anfänger
17
Antw.
7353
Views
JOIN
von robin1at » 22.02.2006 17:28 • Verfasst in ABAP® für Anfänger
1
Antw.
1431
Views
Join
von Neu_Im_SAP » 19.07.2011 13:15 • Verfasst in ABAP® für Anfänger
3
Antw.
3085
Views
inner join
von dawns » 14.05.2007 15:49 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Regex in where
Gestern von tar 8 / 534
Daten an Tabelle binden
vor 2 Tagen von Bright4.5 3 / 1765
Programm anlegen mit Vorlage
vor 3 Tagen von DeathAndPain 2 / 421
IT0024 Qualifikationen CP-ID
vor 3 Tagen von DeathAndPain 2 / 659

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
Gestern von tar 8 / 534
Daten an Tabelle binden
vor 2 Tagen von Bright4.5 3 / 1765
Programm anlegen mit Vorlage
vor 3 Tagen von DeathAndPain 2 / 421
IT0024 Qualifikationen CP-ID
vor 3 Tagen von DeathAndPain 2 / 659

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 3 Tagen von snooga87 1 / 340
aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 3531
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 10074