Einfacher Subquery wirft Fehlermeldung

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

Einfacher Subquery wirft Fehlermeldung

Beitrag von stefanb (ForumUser / 5 / 0 / 0 ) »
Hallo ABAP-Foren-Mitglieder,

als ABAP-Anfänger bin ich leider an einer vermeintlich leichten Aufgabe gescheitert.
Ich wollte einen Sub-Query erstellen, so wie ich es aus anderen Datenbanksystemen gewohnt bin.

So sieht das ABAP Programm (bzw. der SQL-Teil des Programmes) dafür aus (die Namen der Spalten habe ich verändert):

Code: Alles auswählen.

select distinct MARA~SPALTE1
  into wa_MARA
  from MARA
  where MARA~SPALTE1 not in
  (select SP1 from T2502).
endselect.
Beim Ausführen bekomme ich folgende Fehlermeldung:
Auf den IN-Operator folgt mit "(SELECT Sp1 FROM T2502)" weder eine
interne Tabelle noch eine Werteliste.

Mein nächster Versuch war dann das Ergebnis aus select SP1 from T2502 in eine interne Tabelle mit Namen itab zu speichern und folgenden Code auszuführen:

Code: Alles auswählen.

select distinct MARA~PRDHA
  into wa_MARA
  from MARA
  where MARA~PRDHA not in
  (select WWPH6 from itab).
endselect.
Leider bekomme ich dann aber die gleiche Fehlermeldung. Da ich leider ein absoluter ABAP-Anfänger bin, würde es mich sehr freuen, wenn mir jemand bei diesem sicherlich sehr einfachen Problem helfen kann.

Vielen Dank schon mal und
viele Grüsse

Stefan

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


Re: Einfacher Subquery wirft Fehlermeldung

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Waere interessant zu wissen, was Du, mit was, vorhast.

Ich nehme an:

Du willst alle Produkthierarchien MARA~PRDHA aus der MARA finden, die nicht in ....??? sind.

Der zweite Subquery

Code: Alles auswählen.

 (select WWPH6 from itab).
sieht aus wie eine SELECT auf eine interne Table ("itab")??? DAS funktioniert nicht.

Bei Deinem ersten Subquery

Code: Alles auswählen.

(select SP1 from T2502).
ist T2502 anscheinend eine DB-Tabelle?!?!?

Solchen Abfragen mit "selektiere alles aus Tabelle1 was nicht in Tabelle2 ist" kann man in mehreren Schritten loesen
oder es geht aber wohl auch mit einem JOIN (Left outer) oder "AND NOT EXISTS ( SELECT * FROM DB-table)..."

Aber erst einmal sollte klar sein, was die Quelle Deines SELECT sein soll... interne Tabelle oder DB-Tabelle?

Re: Einfacher Subquery wirft Fehlermeldung

Beitrag von stefanb (ForumUser / 5 / 0 / 0 ) »
Hallo Unit605,

deine Annahme, dass ich alle Produkthierarchien (MARA~PRDHA) aus der MARA finden will, die nicht in Tabelle T2502 sind, ist richtig.
T2502 ist evtl. eine View (bin mir aber nicht sicher), da ich in der Transaktion se16n den Hinweis bekomme, dass zur Tabelle T2502 eine Pflegeview existiert.

Mit einem Left Join habe ich auch schon versucht mein Problem zu lösen, aber auch hier bin ich gescheitert, da man anscheinend im WHERE-Teil eines SQL nicht auf die Spalten der rechten Tabelle des Left Join zugreifen darf (warum das so ist, verstehe ich übrigens auch nicht, aber das will ich hier gar nicht diskutieren).

Auch deine zweite Annahme, dass die Tabelle "itab" einen interne Tabelle ist, ist richtig.

Exists habe ich noch nicht versucht. Das ist sicherlich noch eine Möglichkeit.

Mich würde es an dieser Stelle aber primär interessieren, wie ich einen Subselect nutzen kann. Falls das nicht geht, dann würden mich natürlich auch andere Lösungen interessieren.

Vielen Dank für die Hilfe
und viele Grüße

Stefan

Re: Einfacher Subquery wirft Fehlermeldung

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
stefanb hat geschrieben:deine Annahme, dass ich alle Produkthierarchien (MARA~PRDHA) aus der MARA finden will, die nicht in Tabelle T2502 sind, ist richtig.
T2502 ist evtl. eine View (bin mir aber nicht sicher), da ich in der Transaktion se16n den Hinweis bekomme, dass zur Tabelle T2502 eine Pflegeview existiert.
In der T2502 ist doch nur die Produktlinie enthalten und keine PRODH.

Ansich ist aber der SubSelect der richtige weg:

Code: Alles auswählen.

SELECT DISTINCT prodh
  INTO irgendwas
  FROM mara
  WHERE NOT EXISISTS ( SELECT * FROM t2502 WHERE t2502~sp1 = mara~spalte1 ).
Gruß Hendrik

Re: Einfacher Subquery wirft Fehlermeldung

Beitrag von stefanb (ForumUser / 5 / 0 / 0 ) »
Hallo zusammen,

leider funktioniert der Subselect nicht. Weder mit dem IN-Operator noch mit dem EXISTS-Operator.

Beim Einsatz vom Exists-Operator bekomme ich diese Fehlermeldung:
"*" ist kein gültiger Vergleichsoperator.

Kann es sein, dass die Tabelle T2502 Probleme macht? Gibt es verschiedene Arten von Tabellen und nicht alle Arten sind für Subselects geeignet?

Vielen Dank für euer Hilfen

Gruss Stefan

Re: Einfacher Subquery wirft Fehlermeldung

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Du koenntest die ganze Sache abkuerzen, indem Du mal etwas Coding, was nicht funktioniert, posten wuerdest UND die genaue Fehlermeldung (Copy and Paste).


Vergiss nicht die Datadeklarationen etc. und fuege es hier mit " [ code ] ... CODING ... [ / code ] " ein. Innerhalb der Klammern KEINE Leerzeichen.

Nachtrag: Setzt Deinen Cursor mal auf "SELECT" im ABAP-Editor und dann die Taste <F1>. Dann bekommst Du die Hilfe zum Select in SAP.

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2852
Views
Abrechnungsprotokoll wirft Meldung aus
von Alyaa » 04.03.2008 12:08 • Verfasst in Human Resources
3
Antw.
2370
Views
ABAP Lückentext wirft fragen auf...
von nico_ » 30.03.2012 10:46 • Verfasst in ABAP® für Anfänger
11
Antw.
4032
Views
CVAPI_DOC_VIEW wirft Fehler in RFC-Baustein
von MartinZapf » 18.12.2014 09:37 • Verfasst in ABAP® für Anfänger
2
Antw.
2787
Views
Drucktastenleiste in einfacher Listenausgabe anzeigen
von bliss » 16.04.2012 16:15 • Verfasst in ABAP® für Anfänger
10
Antw.
5703
Views
Einfacher (?) Gruppenwechsel, ich stecke fest.
von Michael.Nett » 23.11.2005 11:53 • Verfasst in ABAP® für Anfänger

Ü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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 512
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2146
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8742