Joins

Getting started ... Alles für einen gelungenen Start.
20 Beiträge • Seite 1 von 2 (current) Nächste
20 Beiträge Seite 1 von 2 (current) Nächste

Joins

Beitrag von Neu_Im_SAP (ForumUser / 17 / 0 / 0 ) »
Leute ich muss jetzt eine Abfrage programmieren die sich über mehrere
Tabellen erstreckt, welche durch Beziehungen in einer Verbindung stehen.

Sagen wir ich habe 2 Tabellen. Einmal Auftragskopf und einmal Auftragspositionen.

Auftragskopf = Stammdaten, wie Auftraggeber, Datum, etc.
Auftragpositionen = Daten, die in einem Auftrag sind. Welche Ware wurde wie
oft bestellt und so weiter.

Zwischen diesen Tabellen herrscht 1: CN Beziehung.

Wie kann ich ein Selektionsbildschirm programmieren, wo man Daten
eingibt, die dann in die jeweilige Tabelle übernommen werden?

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


Re: Joins

Beitrag von black_adept (Top Expert / 3946 / 105 / 886 ) »
Hallo Neu_im_SAP,

Überschrift und Fragestellung stimmen nicht überein.
Da du angegeben hast Student/In zu sein kann ich dir in dem hier vorliegenden Fall nur raten noch einmal die Studienunterlagen zu beiden Themen einfach durchzugehen oder die F1-Hilfe zu bemühen. Dies sind Basics und spätestens in einer Prüfung solltest du das hier sowieso aus dem FF beherrschen
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Joins

Beitrag von Neu_Im_SAP (ForumUser / 17 / 0 / 0 ) »
Noch bin ich kein Student aber beworben haeb ich mich.

Momentan bringe ich mir SAP selbst bei und sitze bei ner IT Firma
für ein Praktikum.

Re: Joins

Beitrag von Neu_Im_SAP (ForumUser / 17 / 0 / 0 ) »
Jetzt mal ein Beispiel:

Ich habe 2 Tabellen:

ZKunden
K_ID | K_Name | T_ID
1 | MusterA | 2
2 | MusterB | 1
3 | MusterC | 1


ZTarife
T_ID | T_Preis
1 | 25- €
2 | 30,- €



Mit Join möchte ich folgendes erreichen:

K_ID | T_ID | K_Name | Tarif_Preis
1 | 2 | MusterA | 30,-€
2 | 1 | MusterB | 25,-€
3 | 1 | MusterC | 25,-€


Wie macht man das? Ich möchte mich Schritt für Schritt an das Thema herantasten.

Re: Joins

Beitrag von black_adept (Top Expert / 3946 / 105 / 886 ) »
Bild

Re: Joins

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
<:: XING-Gruppe Tricktresor::>

Re: Joins

Beitrag von Neu_Im_SAP (ForumUser / 17 / 0 / 0 ) »
Folgendes Problem:
Wenn ich ein Selektionsbildschirm gestalte kann man folgende Kriterien eingeben:

Kundennummer
Tarifnummer
Kundenname
Geschlecht

Nun ist es so wenn der anwender tarifnummer eingibt dann zeigt ABAP alle Kunden an, die
auch die eingegebene Tarifnummer nutzen. ABER wenn ich noch dazu das Geschlecht filtern will.
Zeigt er mir trotzdem noch die an, die ausgefiltert sein sollten. Zum Beispiel ich wähle männlich aber
es werden immer noch die weiblichen angezeigt, die die eingegebene Tarifnummer haben. Mein code:
report ztestjoin.
*-------------------------------------------------------------------*
initialization.
data: kundenname like zfitnessag02-vorname,
tarifid like zfitnessag02-tarif_id,
kundenid like zfitnessag02-k_id,
tarifpreis like ztarife-tarif_preis,
geschlecht like zfitnessag02-geschlecht.
*-------------------------------------------------------------------*
*-------------------------------------------------------------------*
selection-screen begin of block b1 with frame title text-001.
Parameters ku_id like zfitnessag02-k_id.
parameters ku_na like zfitnessag02-vorname.
parameters tarif_id like zfitnessag02-tarif_id.
parameters geschl like zfitnessag02-geschlecht VALUE CHECK.
selection-screen end of block b1.
*-------------------------------------------------------------------*
*-------------------------------------------------------------------*
start-of-selection.

if ku_id > 0 OR tarif_id > 0 OR ku_na is not initial OR geschl is not initial.
select a~k_id a~vorname a~tarif_id a~geschlecht b~tarif_preis
into (kundenid, kundenname, tarifid, geschlecht, tarifpreis)
from zfitnessag02 as a inner join ztarife as b
on a~tarif_id = b~tarif_id
where a~tarif_id = tarif_id
or a~k_id = ku_id
or a~vorname = ku_na
or a~geschlecht = geschl.
write: / 'K-ID:', kundenid, '|', 'Tarif-ID:',tarifid,'|', 'Kundenname:',kundenname,'|', 'Geschlecht:', geschl,'|','Tarifpreis', tarifpreis.
uline.
endselect.
endif.

Re: Joins

Beitrag von a-dead-trousers (Top Expert / 4285 / 214 / 1141 ) »
hi!
Du hast einen typischen Logik-Fehler begangen: Schau dir nochmal dein Select-Statement an und überleg dir GENAU was durch den Where-Teil eigentlich alles selektiert werden soll und in welcher Beziehung die einzelnen Filter-Kriterien zueinander stehen sollten. :o

Und wenn du den Fehler immer noch nicht gefunden hast, würde ich vor einem SAP-Studium eines in Algebra oder Programmierung im Allgemeinen empfehlen :P

lg ADT
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

Re: Joins

Beitrag von Neu_Im_SAP (ForumUser / 17 / 0 / 0 ) »
Mir fehlt einfach das Wissen was ich aneignen muss. An Logikschwäche liegt das nicht.

Ich brauche eine Lösung. Wäre sehr nett, wenn du eine hättest.

Re: Joins

Beitrag von a-dead-trousers (Top Expert / 4285 / 214 / 1141 ) »
tausch die OR in AND aus und schon passts :oops:

Wenn du einzelne Werte in der Selektionsmaske leer lassen möchtest, sodass sie in der Abfrage ignoriert werden, musst du anstatt PARAMETERS die SELECT-OPTIONS verwenden.

EDIT: Aber Achtung die SELECT-OPTIONS haben eine etwas andere Syntax, da es sich eigentlich um intern um Tabellen handelt. Genaueres findest du in der Hilfe. :twisted:
Zuletzt geändert von a-dead-trousers am 26.07.2011 15:14, insgesamt 1-mal geändert.
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

Re: Joins

Beitrag von Neu_Im_SAP (ForumUser / 17 / 0 / 0 ) »
Siehst du.. statt OR hatte ich schon AND geschrieben. Da wurde nicht ausgegeben. Mein Fehler lag daran, dass ich keine
SELECT OPTIONS benutzt habe.
Merci dir.

Re: Joins

Beitrag von Neu_Im_SAP (ForumUser / 17 / 0 / 0 ) »
Weiteres Problem.
SAP erkennt nicht, wenn ich folgendes eingebe;

SELECT-OPTIONS k_id for zfitnessag02-K_ID NO INTERVALS NO-EXTENSION.

Der sagt, dass es unbekannt ist. Aber laut einem Buch müsste das System
es kennen.

Re: Joins

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
F1 hilft:
<:: XING-Gruppe Tricktresor::>

Re: Joins

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Neu_Im_SAP hat geschrieben:Weiteres Problem.
SAP erkennt nicht, wenn ich folgendes eingebe;

SELECT-OPTIONS k_id for zfitnessag02-K_ID NO INTERVALS NO-EXTENSION.

Der sagt, dass es unbekannt ist. Aber laut einem Buch müsste das System
es kennen.
WAS unbekannt ist? Lerne Fehlermeldungen exakt so wieder zu geben, wie Du sie auf dem Bildschirm/Popup/Logs etc. siehst.

Ich vermute, daß es das "zfitnessag02-K_ID" nicht kennt.

Re: Joins

Beitrag von a-dead-trousers (Top Expert / 4285 / 214 / 1141 ) »
Hallo Leutz!
Unit605 hat geschrieben:WAS unbekannt ist? Lerne Fehlermeldungen exakt so wieder zu geben, wie Du sie auf dem Bildschirm/Popup/Logs etc. siehst.
Ich vermute, daß es das "zfitnessag02-K_ID" nicht kennt.
Genau! Denn wie ich schon sagte muss man bei den SELECT-OPTIONS eine andere Syntax verwenden. Und wie ich es mir gedacht hab ist Neu_Im_SAP gleich darauf hereingefallen. SELECT-OPTIONS hat nicht so wie die Parameter die Syntax mit TYPE/LIKE die auch Datentypen akzeptiert sondern FOR die eine tatsächliche Variable benötigt.

Richtig müsste es lauten: SELECT-OPTIONS k_id FOR kundenid NO INTERVALS NO-EXTENSION.

So ist nämlich die Variable KUNDENID vom Typ ZFITNESSAG02-K_ID innerhalb des Reports definiert worden.
Aber wie von meinen Vorpostern bereits mehrfach erwähnt: DAS STEHT AUCH ALLES IN DER HILFE :x

@all: Ich weiß, dass es solche Poster hin und wieder gibt, aber wenn man etwas Geduld aufbringt und sich das Coding durchließt, braucht man nicht zu vermuten, sondern kann mit Gewissheit sagen wo der Fehler liegt und etwas unterstützend unter die Arme greifen.

ADT
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

Vergleichbare Themen

13
Antw.
921
Views
SQL JOINS
von ABAPlerv » 18.05.2022 14:11 • Verfasst in ABAP® für Anfänger
10
Antw.
6980
Views
Inner Joins - Performance
von c0lt.seavers » 08.02.2006 10:10 • Verfasst in ABAP® für Anfänger
2
Antw.
1586
Views
SQ02 joins
von slim » 24.01.2007 13:25 • Verfasst in SAP - Allgemeines
3
Antw.
1229
Views
Tabellen Joins
von ek53 » 07.12.2016 10:19 • Verfasst in ABAP® für Anfänger
1
Antw.
2216
Views
Equi Joins in ABAP
von SeZo » 19.10.2011 11:02 • Verfasst in ABAP® für Anfänger

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.