Daten aus mehreren Tabellen auslesen

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

Daten aus mehreren Tabellen auslesen

Beitrag von phil1982 (ForumUser / 34 / 0 / 0 ) »
Hallo zusammen,
ich hab ein Selektionsbild wo ein Wert (Verbrauch) eingegeben wird. Anhand dessen soll mir dann auf dem nächsten Bild eine liste geliefert werden, wo mir verschiedene Tarife abhängig von der Eingabe des Verbrauchs geliefert werden.
Die liste soll aus Tariftyp, Sparte, Verbrauch, Text Tariftyp bestehen. Diese Felder sind aber auf mehrere Tabellen verteilt. Wie kann ich das in ABAP codieren?sorry bin blutiger Anfänger.

Danke für Eure Hilfe ,

phil

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


Beitrag von khb (Specialist / 184 / 7 / 1 ) »
Hallo phil,

zuerst ermittelst Du über den Verbrauch alle Werte, die in der gleichen Tabelle stehen: also alle Werte aus dieser Tabelle, die ausgegeben werden sollen sowie die Schlüssel-Werte, die Du zum Lesen aus anderen Tabellen brauchst. Diese Werte schreibst Du in eine intene Tabelle und liest die abhängigen Tabellen.

Falls das noch nicht so ganz klar ist, müsstest Du den Aufbau der beteiligten Tabellen kurz posten.

hth khb

Beitrag von schmitzandreas (ForumUser / 44 / 0 / 0 ) »
Hallo Phil,
vielleicht hilft dir dieser Link weiter: http://help.sap.com/saphelp_nw04/helpda ... ontent.htm

Thema: Inner join.

Grüße
Andreas

Aufbau der Tabellen

Beitrag von phil1982 (ForumUser / 34 / 0 / 0 ) »
Tabelle EASTE
MANDT(key)
LOGIKZW(key)
AB(key)
BIS
PERVERBR (=Verbrauch)

Tabelle ERTFND
MANDT(key)
TARIFART(key) Prüftabelle TE069
TARIFTYP(key) Prüftabelle ETTA
BIS(key)
LFDNR(key)
AB
TARIFNR

Tabelle TE069
MANDT(key)
TARIFART(key)
SPARTE Prüftabelle TSPA
AKLASSE Prüftabelle EAKLASSE

Als Ergebnis soll dann eine Liste mit Tariftyp, Sparte, AKlasse herauskommen.
kann ich das auch noch über mehrere Tabellen machen?

Danke und Gruß,

phil

Re: Aufbau der Tabellen

Beitrag von MarkusW (Specialist / 406 / 5 / 0 ) »
phil1982 hat geschrieben:Tabelle EASTE
MANDT(key)
LOGIKZW(key)
AB(key)
BIS
PERVERBR (=Verbrauch)

Tabelle ERTFND
MANDT(key)
TARIFART(key) Prüftabelle TE069
TARIFTYP(key) Prüftabelle ETTA
BIS(key)
LFDNR(key)
AB
TARIFNR

Tabelle TE069
MANDT(key)
TARIFART(key)
SPARTE Prüftabelle TSPA
AKLASSE Prüftabelle EAKLASSE

Als Ergebnis soll dann eine Liste mit Tariftyp, Sparte, AKlasse herauskommen.
kann ich das auch noch über mehrere Tabellen machen?

Danke und Gruß,

phil
Vllt hab ich ja was übersehen, aber wie bekommst du eine Verbindung von den unteren 2 Tabellen mit der oberen(EASTE) zustande???
Oder haste nicht alle Felder hingeschrieben, und das Keyfeld von EASTE ist in einer der anderen Tabellen mit drin?


Aber wie schonmal von einem anderen angeraten, schau dir den Select-Befehl mit JOIN an...der kann das ;) (voraussetzung ist das du immer die Werte der Schlüsselfelder ermitteln kannst)

Gruß
Markus

Schlüsselfelder

Beitrag von phil1982 (ForumUser / 34 / 0 / 0 ) »
Es gibt noch eine Tabelle EASTS da kommt das Feld Logikzw auch vor, aber ich brauch eine Tabelle in der EASTE als Prüftabelle angegeben ist,oder?
wie kann ich das rausfinden?

gruß,

phil

Beitrag von khb (Specialist / 184 / 7 / 1 ) »
stimmt, join wäre natürlich eleganter, aber als Anfänger wäre vielleicht der andere Weg verständlicher. Und wenn keine Daten gefunden werden, kann man so einfacher nachvollziehen, wieso es nicht klappt. Zu einem join kann man es ja danach immer noch umbauen.

Aber die 3 Tabellen müssen schon über gemeinsame Felder verbunden sein.

Beitrag von khb (Specialist / 184 / 7 / 1 ) »
Es gibt noch eine Tabelle EASTS da kommt das Feld Logikzw auch vor, aber ich brauch eine Tabelle in der EASTE als Prüftabelle angegeben ist,oder)
Gegen die Prüftabelle werden die eingegebenen Werte geprüft. D.h. Werte, die nicht in der Prüftabelle sind, können nicht eingegeben werden.

Also noch einmal die Tabellen auf gemeinsame Felder untersuchen.

Verknüpfungen der Tabellen

Beitrag von phil1982 (ForumUser / 34 / 0 / 0 ) »
Sorry aber ich bin echt blutiger Anfänger und ich weiss grad echt nicht wie ich das hinbekommen soll. JOIN ist mir schon ein Begriff,aber wie bekomm ich die Verbindung zur Tabelle EASTE hin?
Kann ich irgendwo die Verbindungen sehen ausser im Object Navigator ich finde nämlich keine Tabelle die mit EASTE verknüpft ist.
Ich brauche aber das Feld PERVERBR welches in der Tabelle EASTE ist, da ich ja im Selektionsbild auch den Verbrauch eingebe.

danke und Gruß,

phil

Beitrag von khb (Specialist / 184 / 7 / 1 ) »
Über den Verbrauch ermittelst Du die Werte in der Tabelle EASTE:
Tabelle EASTE
MANDT(key)
LOGIKZW(key)
AB(key)
BIS
PERVERBR (=Verbrauch)
Nun schaust Du, welche Felder in der EASTE und in den anderen benötigten Tabellen gemeinsam vorhanden sind:
Es gibt noch eine Tabelle EASTS da kommt das Feld Logikzw
Stehen in dieser Tabelle Schlüsselfelder für die anderen Tabellen?

Schlüsselfelder

Beitrag von phil1982 (ForumUser / 34 / 0 / 0 ) »
Danke für die schnelle Antwort khb


TABELLE EASTS
MANDT(key) Prüftabelle T000
ANLAGE(key)
LOGIKZW(key)
BIS(key)
AB
ZWNABR
GVERRECH
TARIFART Prüftabelle TE069
KONDIGR
RABZUS Prüftabelle EDSC
PREISKLA Prüftabelle TE431

Ich versteh nicht wie ich da den Bezug herbekomme
:(

Vielleicht kann mir ja jemand dabei helfen.

Danke schon mal und Gruß,

phil

Beitrag von khb (Specialist / 184 / 7 / 1 ) »
hallo phil,

das ist halb so wild:
TABELLE EASTS
MANDT(key) Prüftabelle T000
ANLAGE(key)
LOGIKZW(key) BIS(key)
AB
ZWNABR
GVERRECH
TARIFART Prüftabelle TE069
KONDIGR
RABZUS Prüftabelle EDSC
PREISKLA Prüftabelle TE431


Tabelle EASTE
MANDT(key)
LOGIKZW(key)
AB(key)
BIS
PERVERBR (=Verbrauch)
Mit diesem Wert kannst Du die beiden Tabellen verknüpfen:

select * into corresponding fields of table xxx
from EASTE
inner join EASTS on EASTE~logikzw = EASTS~logikzw
where EASTE~perverbr = eingegebener_Verbrauch

Die interne Tabelle musst Du natürlich erst noch anlegen.
An den inner-join kannst du weitere inner-joins anschließen, Syntax genau wie oben.

Viel Erfolg. :wink:

lg khb

Danke

Beitrag von phil1982 (ForumUser / 34 / 0 / 0 ) »
Danke khb,
das werde ich gleich mal ausprobieren.
Falls es nicht klappt, melde ich mich morgen noch mal. Aber jetzt probier ich erst mal selbst :D
will ja auch voran kommen und mir nicht alles diktieren lassen.
Learning by doing.
Trotzdem danke schon mal und noch einen schönen abend.

gruß, phil

Code

Beitrag von phil1982 (ForumUser / 34 / 0 / 0 ) »
REPORT ypag_tarif_da .

DATA: wa_easte LIKE easte,
wa_ertfnd LIKE ertfnd,
wa_te069 LIKE te069,
wa_easts LIKE easts.
DATA: it_tarife LIKE TABLE OF easte,
wa_tarife LIKE easte.

PARAMETERS: jvb LIKE easte-perverbr OBLIGATORY.

START-OF-SELECTION.
CLEAR wa_tarife.
REFRESH it_tarife.

WRITE: / 'Tariftyp', 12'Tarifart', 28'Sparte', 40'Abrechnungsklasse'.



SELECT * INTO CORRESPONDING FIELDS OF TABLE it_tarife
FROM ( easte INNER JOIN easts ON easte~logikzw = easts~logikzw )
INNER JOIN te069 ON te069~tarifart = easts~tarifart
INNER JOIN ertfnd ON ertfnd~tarifart = te069~tarifart
WHERE easte~perverbr = jvb.


WRITE: / wa_ertfnd-tariftyp, wa_ertfnd-tarifart, wa_te069-sparte,
wa_te069-aklasse.

Das ist jetzt mein Coding, aber mir wird da nichts ausgegeben.
Könnte mir vielleicht jemand sagen, ob meine Joins stimmen?

Danke und Gruß,

phil

Beitrag von schmitzandreas (ForumUser / 44 / 0 / 0 ) »
Hallo,
also das grundsätzliche Problem an deinem Code ist, dass du die Ergebnisse in eine Tabelle schreibst, diese aber nicht durchläufst. Probiere es mal hiermit (ist allerdings ungetestet):

REPORT ypag_tarif_da .

Structure: begin of my_struc,
tariftyp like ertfnd-tariftyp,
tarifart like ertfnd-tarifart,
sparte like te069-sparte,
aklasse like te069-aklasse,
end of my_struc.

DATA: it_tarife type TABLE OF my_struc,
wa_tarife type my_struc.

PARAMETERS: jvb LIKE easte-perverbr OBLIGATORY.

START-OF-SELECTION.
CLEAR wa_tarife.
REFRESH it_tarife.

WRITE: / 'Tariftyp', 12'Tarifart', 28'Sparte', 40'Abrechnungsklasse'.

SELECT ertfnd~tariftyp ertfnd~tarifart te069~sparte te069~aklasse INTO CORRESPONDING FIELDS OF TABLE it_tarife
FROM ( easte INNER JOIN easts ON easte~logikzw = easts~logikzw )
INNER JOIN te069 ON te069~tarifart = easts~tarifart
INNER JOIN ertfnd ON ertfnd~tarifart = te069~tarifart
WHERE easte~perverbr = jvb.

loop at it_tarife into wa_tarife.

WRITE: / wa_tarife-tariftyp, wa_tarife-tarifart, wa_tarife-sparte,
wa_tarife-aklasse.

endloop.

Vergleichbare Themen

6
Antw.
2647
Views
Daten aus mehreren Tabellen ausgeben
von thr-hn » 25.03.2014 09:14 • Verfasst in ABAP® für Anfänger
41
Antw.
10805
Views
Selektion aus mehreren Tabellen
von Nadine_2706 » 23.09.2011 07:20 • Verfasst in ABAP® für Anfänger
2
Antw.
1591
Views
Verwendung von mehreren Tabellen in DB-Views
von ST22 » 17.04.2008 10:34 • Verfasst in ABAP® Core
3
Antw.
2264
Views
Web-Dynpro: Struktur mit mehreren Daten in UI-Tabelle
von Trulchen » 24.01.2013 09:42 • Verfasst in ABAP® für Anfänger
9
Antw.
5141
Views
Daten aus 2 Tabellen + Vergleich von Daten
von dv88 » 06.10.2009 12:26 • 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
vor 8 Stunden von edwin 7 / 166
Daten an Tabelle binden
vor 22 Stunden von Bright4.5 3 / 1487

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
vor 8 Stunden von edwin 7 / 166
Daten an Tabelle binden
vor 22 Stunden von Bright4.5 3 / 1487

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822