Dynamische Where-Bedingung mit Native SQL

Hinweise, Tips und Tricks, FAQs - keine Anfragen!!
12 Beiträge • Seite 1 von 1
12 Beiträge Seite 1 von 1

Dynamische Where-Bedingung mit Native SQL

Beitrag von Walda86 (ForumUser / 7 / 0 / 0 ) »
Hallo zusammen,

ich scheitere gerade an einer dynamischen Where-Bedingung mit Native SQL eingebettet in einem ABAP Report.

Die Where-Bedingung ist wie folgt aufgebaut:

Code: Alles auswählen.

DATA:       lv_where_clause   TYPE string,
                lv_date_low       TYPE char11,
                lv_date_high      TYPE char11.

CONCATENATE 'a.meilenstein > 71 and a.proddatum between' lv_date_low 'and' lv_date_high INTO lv_where_clause SEPARATED BY space.

Die Where-Bedingung im Select schaut anschließend so aus:
SELECT a.auftragsnr
  into :ls_zpri_daten_fte-auftragsnr
FROM test.position a
  where (lv_where_clause).
Sobald ich diesen Select ausführe, bekomme ich folgenden Dump:

" Der Fehler 920 ist auf der aktuellen Datenbank
aufgetreten.
Fehlertext der Datenbank: con=1(priamos): ORA-
operator
Auslösende SQL-Anweisung: "FETCH NEXT " ".

Wenn ich meine Bedingung unten direkt in der Where-Bedingung eingebe, funktioniert der Select!

Hat jemand eine Idee, wie ich so etwas umsetzen kann?

Wäre über jede Hilfe dankkbar!

Vielen Dank im Voraus!

Viele Grüße,
Walda86

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


Re: Dynamische Where-Bedingung mit Native SQL

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hi,
dein CONCATENATE verschluckt die Leerzeichen beim zusammenfügen.
Du musst immer an den Leerzeichen trennen für deine Anweisung.
Eventuell funktioniert in diesem Fall auch der concatenate Zusatzbefehl "RESPECTING BLANKS".
Gruß,
der Matze

Re: Dynamische Where-Bedingung mit Native SQL

Beitrag von Walda86 (ForumUser / 7 / 0 / 0 ) »
Hallo,

vielen Dank für die schnelle Antwort.
Allerdings bringt hier leider der Zusatzbefehl "RESPECTING BLANKS" nichts.

Die Variable lv_where_clause hat bei beiden Varianten folgenden Inhalt: "a.meilenstein > 71 and a.proddatum between 01-JAN-2014 and 18-SEP-2017!.

Dies ist meiner Ansicht nach richtig...
Wenn ich die Abfrage fest in den Select einbaue, funktioniert diese auch....

Hast du noch eine Idee?

Vielen Dank im Voraus!

Re: Dynamische Where-Bedingung mit Native SQL

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
where (lv_where_clause).
Die clause wird nicht als host-variable erkannt.
Ich wüsste auch nicht daß das so überhaupt geht.

Re: Dynamische Where-Bedingung mit Native SQL

Beitrag von Walda86 (ForumUser / 7 / 0 / 0 ) »
Danke Daniel!

Gibt es dann gar keine Möglichkeit, eine dynamische Where-Bedingung in Native SQL aufzubauen?

Vielen Dank im Voraus!

Re: Dynamische Where-Bedingung mit Native SQL

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
Als Hostvariablen können nur flache elementare Felder und flache Strukturen
mit elementaren Komponenten verwendet werden.
Diese Form der Dynamik geht also nicht.

Re: Dynamische Where-Bedingung mit Native SQL

Beitrag von Walda86 (ForumUser / 7 / 0 / 0 ) »
OK, dann hab ich also überhaupt keine Möglichkeit, mit Select-Options zu arbeiten, richtig?

Re: Dynamische Where-Bedingung mit Native SQL

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
Nicht so bequem wie mit Open SQL.
Du müsstest jede Bedingung in einer Schleife
einzeln abfragen.

Re: Dynamische Where-Bedingung mit Native SQL

Beitrag von Walda86 (ForumUser / 7 / 0 / 0 ) »
Wann kann ich Open SQL verwenden?

Muss auf eine externe Oracle Datenbank zugreifen...

Re: Dynamische Where-Bedingung mit Native SQL

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
Mit einer exernen DB geht das nicht.
Imho kann man aber in Oracle eine externe DB
so anbinden daß Sie wie eine interne behandelt
wird. Dann im DDIC definieren und los.
Wie das im ORA geht weis ich aber nicht.

Ansonsten musst du das wohl auscodieren.

Re: Dynamische Where-Bedingung mit Native SQL

Beitrag von a-dead-trousers (Top Expert / 4399 / 223 / 1182 ) »
Der Zusatz CONNECTION zum Befehl SELECT dient zur Abfrage auf sekundäre Datenbankverbindungen.
In der Hilfe steht dazu alles genau beschrieben.
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: Dynamische Where-Bedingung mit Native SQL

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
Stimmt. Das war das was ich gemeint hatte.
Knapp vorbei :)

Seite 1 von 1

Vergleichbare Themen

8
Antw.
12376
Views
dynamische Where -Bedingung mit Select-Option
von BesenWesen » 21.08.2006 12:12 • Verfasst in ABAP® für Anfänger
4
Antw.
4109
Views
Native SQL
von bliP! » 06.03.2006 15:49 • Verfasst in ABAP® für Anfänger
12
Antw.
4506
Views
Native SQL
von Bugfix13 » 12.09.2014 13:41 • Verfasst in ABAP® für Anfänger
10
Antw.
4198
Views
Abap und Native SQL
von cgreiner » 22.10.2018 18:28 • Verfasst in ABAP® für Anfänger
4
Antw.
2648
Views
Native SQL -> DDIC
von Jurko » 29.07.2005 16:53 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

Regex in where
vor 46 Minuten von edwin 1 / 8
Programm anlegen mit Vorlage
vor 4 Stunden von DeathAndPain 2 / 75
IT0024 Qualifikationen CP-ID
vor 5 Stunden von DeathAndPain 2 / 314
BUSOBJEKT zu CMIS PHIO ermitteln
vor 7 Stunden von snooga87 1 / 53

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 46 Minuten von edwin 1 / 8
Programm anlegen mit Vorlage
vor 4 Stunden von DeathAndPain 2 / 75
IT0024 Qualifikationen CP-ID
vor 5 Stunden von DeathAndPain 2 / 314
BUSOBJEKT zu CMIS PHIO ermitteln
vor 7 Stunden von snooga87 1 / 53

Unbeantwortete Forenbeiträge

Regex in where
vor 46 Minuten von edwin 1 / 8
BUSOBJEKT zu CMIS PHIO ermitteln
vor 7 Stunden von snooga87 1 / 53
aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3228