SELECT Frage

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

SELECT Frage

Beitrag von waterman (ForumUser / 2 / 0 / 0 ) »
Hallo ABAP Freunde,

ich beschäftige mich momentan mit Select option und habe eine kleine Frage.
Ich habe ungefähr 30 gleiche Abfragen mit folgendem aufbau:

SELECT
INTO
FROM
INNERJOIN
WHERE

der Unterschied liegt immer nur im WHERE Teil.
Gibt es eine möglichkeit, dort so etwas wie eine Case Anweisung einzubauen?

Danke schon einmal.

GRUß

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


Re: SELECT Frage

Beitrag von a-dead-trousers (Top Expert / 4450 / 227 / 1196 ) »
hi!

Schau dir mal die ABAP-Hilfe zum SELECT durch. Vor allem der Abschnitt "sql_cond - (cond_syntax)" der Where-Klausesl dürfte hier Licht ins Dunkel bringen.
Grob geht es um die (teilweise) dynamische Angabe eine SQL-Query als String.

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: SELECT Frage

Beitrag von waterman (ForumUser / 2 / 0 / 0 ) »
Danke für die erste Antwort, leider muß ich meine Frage wohl noch ein wenig verfeinern, damit mein Problem klar wird.
Die verschiedenen When anweisungen hängen von 3 Variablen und je nach belegung muß der whereteil angepassst werden. Damit die richtige abfrage erstellt wird. Vielleicht kann jemand ein kurzes beispiel für den where teil hier posten.
Danke

Re: SELECT Frage

Beitrag von JHM (Top Expert / 1211 / 2 / 202 ) »
waterman hat geschrieben:Die verschiedenen When anweisungen hängen von 3 Variablen und je nach belegung muß der whereteil angepassst werden. Damit die richtige abfrage erstellt wird. Vielleicht kann jemand ein kurzes beispiel für den where teil hier posten.
Wie ADT schon geschrieben hat, kann man den WHERE-Teil dynamisch zur Laufzeit als String erstellen und dann übergeben.

Als Pseudo-Code:

IF cond1 EQ true.
gv_where = 'keyfeld1 IN selopt1 AND keyfeld2 IN selopt2'.
ELSIF cond2 EQ true.
gv_where = 'keyfeld1 IN selopt1 OR field EQ space.
ELSE.
gv_where = 'keyfeld1 IN selopt1 AND keyfeld2 IN selopt2 AND field EQ space'.
ENDIF

Der Aufruf dann "teil dynamisch" über:
SELECT
INTO
FROM
INNERJOIN
WHERE (gv_where)

Je nach Release ist das ganze mit Restriktionen verbunden. Deshalb der Hinweis auf die F1-Hilfe sehr wichtig, denn dort steht ziemlich genau was du in deinem Release machen kannst und was nicht.
Gruß Hendrik

Re: SELECT Frage

Beitrag von ewx (Top Expert / 4884 / 318 / 644 ) »
waterman hat geschrieben:Danke für die erste Antwort, leider muß ich meine Frage wohl noch ein wenig verfeinern, damit mein Problem klar wird.
Das wäre schön...
waterman hat geschrieben:Die verschiedenen When anweisungen hängen von 3 Variablen und je nach belegung muß der whereteil angepassst werden.
Was sind das für Variablen? was für eine Belegung? Was meinst du, muss angepasst werden? Vielleicht kannst du mal posten, was du hast und was du meinst, warum die Where-Bedingung angepasst werden muss?!

Re: SELECT Frage

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Vielleicht kann man das Ganze auch mit einfachen "Select-Options/Range Tabellen" in der Where-Klausel loesen.

Re: SELECT Frage

Beitrag von ewx (Top Expert / 4884 / 318 / 644 ) »
Unit605 hat geschrieben:Vielleicht kann man das Ganze auch mit einfachen "Select-Options/Range Tabellen" in der Where-Klausel loesen.
...Darauf wollte ich hinaus... Aber bevor ich nix genaues weiß...

Re: SELECT Frage

Beitrag von ralf.wenzel (Top Expert / 3948 / 201 / 281 ) »
JHM hat geschrieben:SELECT
INTO
FROM
INNERJOIN
WHERE (gv_where)
Nur der Form halber mache ich mal darauf aufmerksam, dass es bei dynamischen WHERE-Bedingungen grundsätzlich (=nicht in jedem Falle) ein Sicherheitsproblem gibt.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: SELECT Frage

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
ralf.wenzel hat geschrieben:
Nur der Form halber mache ich mal darauf aufmerksam, dass es bei dynamischen WHERE-Bedingungen grundsätzlich (=nicht in jedem Falle) ein Sicherheitsproblem gibt.
Jeder Entwickler/Programmierer ist ein potentielles Sicherheitsproblem.

Folgende Benutzer bedankten sich beim Autor Unit605 für den Beitrag (Insgesamt 2):
ewxblack_adept


Re: SELECT Frage

Beitrag von a-dead-trousers (Top Expert / 4450 / 227 / 1196 ) »
Unit605 hat geschrieben:Vielleicht kann man das Ganze auch mit einfachen "Select-Options/Range Tabellen" in der Where-Klausel loesen.
Das wäre natürlich die andere, vielleicht sogar besser lesbare Lösung.

@waterman: Du definierst einfach für jedes Feld deiner Where-Abfrage eine Rangetabelle und je nachdem welche Selektion du haben möchtes befüllst du nur jene Tabelle die du dafür benötigst.

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

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2348
Views
Frage zu Bedingung im SELECT
von Zwenn » 29.07.2008 08:03 • Verfasst in ABAP® für Anfänger
1
Antw.
6897
Views
Frage zu dynamischem select
von Mo3si » 16.12.2008 20:49 • Verfasst in Development Related
3
Antw.
1806
Views
Frage zur SELECT Anweisung
von yuro » 07.02.2015 15:27 • Verfasst in ABAP® für Anfänger
4
Antw.
2106
Views
Frage zu Dynpros und SELECT-OPTIONS
von kkauerau » 16.03.2018 14:00 • Verfasst in ABAP® für Anfänger
4
Antw.
2622
Views
Eine Frage zum SELECT-Befehl
von JürgenFFM » 26.06.2006 10:24 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

line_exists evaluieren
vor 2 Tagen von Radinator gelöst 6 / 203
Was zum Knobeln....
vor 2 Tagen von a-dead-trousers 5 / 390

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

line_exists evaluieren
vor 2 Tagen von Radinator gelöst 6 / 203
Was zum Knobeln....
vor 2 Tagen von a-dead-trousers 5 / 390

Unbeantwortete Forenbeiträge

Erweiterung in ME51N/ME52N:
vor einer Woche von ABAPlerv 1 / 1598
Erweiterung in ME51N/ME52N:
vor einer Woche von ABAPlerv 1 / 1514