Select-Anweisung

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Select-Anweisung

Beitrag von ??? ( / / 0 / 3 ) »
Hallo,

ich habe auf dem Einstiegsbild ein Parameter definiert:
datum like vbak-datum.
Dieses Feld ist kein Mussfeld.

Wenn das Feld leer bleibt, stehen darin Nullen (00000000)

Wie sieht das beim Select aus?

Select * from vbak into i_vbak
where datum = datum.
endselect.

Eigentlich sollte doch alles selektiert werden, oder?
Bei mir steht aber nichts in der internen Tabelle...

Brauche ich zwischen select und endselect ein append auf meine interne Tabelle?

1000 Dank!
???

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


Beitrag von Gast ( / / 0 / 3 ) »
wenn du mit 00000000 suchst, kannst du keine einträge finden, alles- >
verwechselst du mit select-option, hier wird der low-und high-bereich automatisch gesetzt bei initialwerten.
joachim

Beitrag von Gast ( / / 0 / 3 ) »
Nö, bei einem Parameter-Select mit '=' nicht.

Bei einem Select mit Select-Options 'in', ja.

Beitrag von ??? ( / / 0 / 3 ) »
Hm, ich suche ja nicht unbedint mit den Nullen, aber wenn ich debugge und bei Datum keinen Wert mitgebe, dann kommen die Nullen automatisch mit.
Sollte er dann nicht alle Einträge der Tabelle bingen?

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
wenn Du bei 'leerem' Datum keine Einschränkung auf machen möchtest, musst Du dies in zwei SELECT-Anweisungen packen:

Code: Alles auswählen.

IF datum CO '0 '. "nur Nullen oder Spaces
  SELECT * FROM vbak INTO i_vbak.
ELSE.
  SELECT * FROM vbak INTO i_vbak
           WHERE datum = datum.
ENDIF.
Anders sieht es aus, wenn Du eine SELECT-OPTION nimmst. Dann wird eine leere Tabelle von SAP's SQL-Umsetzer als Selektion ohne Beschränkung für dieses Feld interpretiert:

Code: Alles auswählen.

SELECT-OPTIONS:
  datum FOR vbak-datum
        NO INTERVALS "nur einzeilig
        NO-EXTENSION."keine Bereiche

  SELECT * FROM vbak INTO i_vbak
           WHERE datum IN datum. "Achtung: IN
mit den Zusätzen NO INTERVALS und NO-EXTENSION sorgst Du dafür, dass der Anwender nur nach einem Einzelwert gefragt wird.

Anmerkung:
Über die F4-Hilfe ist es aber dennoch möglich, Bereichs und mehrere Werte mitzugeben. Dies lässt sich mit speziellen Funktionsbausteinen unterbinden, was aber i.d.R. zuviel Aufwand ist...
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von Gast ( / / 0 / 3 ) »
ereglam hat geschrieben:

Code: Alles auswählen.

IF datum CO '0 '.
Spaces können da eigentlich nicht vorkommen.
Warum nicht

Code: Alles auswählen.

IF datum IS INITIAL.

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Technisch ist die Prüfung auf IS INITIAL die korrekte Variante.

Mir ist es leider schon verschiedentlich passiert, dass ich nur mit IS INITIAL geprüft habe und dadurch ein falsches Ergebnis bekommen habe.
Zugegebenerweise dürfte dies mit an der Verwendung in Parametern zu Funktionsbausteinen bzw. Form-Routinen liegen. Mit obiger Anweisung muss ich seltener darüber nachdenken, wie denn ein 'leeres' Datumfeld richtig erkannt wird. ;)
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Re: Select-Anweisung

Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
??? hat geschrieben: Select * from vbak into i_vbak
where datum = datum.
endselect.


Brauche ich zwischen select und endselect ein append auf meine interne Tabelle?

???
Hi,
1)Abfrage mit leerem Datum-feld muß lauten
if datum = '00000000'.

2) Einstellen in unt. Tabelle

Code: Alles auswählen.

Select * from vbak into table i_vbak
   where datum = datum.
endselect.


Gruß

Re: Select-Anweisung

Beitrag von Gast ( / / 0 / 3 ) »
Asaph hat geschrieben:
??? hat geschrieben: Select * from vbak into i_vbak
where datum = datum.
endselect.


Brauche ich zwischen select und endselect ein append auf meine interne Tabelle?

???
Hi,
1)Abfrage mit leerem Datum-feld muß lauten
if datum = '00000000'.

2) Einstellen in unt. Tabelle

Code: Alles auswählen.

Select * from vbak into table i_vbak
   where datum = datum.
endselect.


Gruß
Wenn dann aber ohne endselect.

Code: Alles auswählen.

Select * from vbak into table i_vbak
   where datum = datum.

Beitrag von ??? ( / / 0 / 3 ) »
So hat´s geklappt:

Select * from vbak into table i_vbak
where datum = datum.

Merci!

Seite 1 von 1

Vergleichbare Themen

3
Antw.
1720
Views
Select-Anweisung
von phil1982 » 02.08.2007 08:30 • Verfasst in ABAP® für Anfänger
2
Antw.
988
Views
Dynamische SELECT-Anweisung
von mareikemei92 » 17.07.2019 19:16 • Verfasst in ABAP® Core
3
Antw.
1542
Views
Frage zur SELECT Anweisung
von yuro » 07.02.2015 15:27 • Verfasst in ABAP® für Anfänger
4
Antw.
2284
Views
Problem mit Select-Anweisung
von Crashday2707 » 19.05.2018 11:51 • Verfasst in ABAP® für Anfänger
7
Antw.
2884
Views
Dynamische Select-Anweisung
von bliP! » 06.02.2006 13:54 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1543
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8155