Select-Anweisung Thema ist als GELÖST markiert

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 ) » 23.05.2005 10:22
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!
???


Beitrag von Gast ( / / 0 / 3 ) » 23.05.2005 10:29
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 ) » 23.05.2005 10:30
Nö, bei einem Parameter-Select mit '=' nicht.

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

Beitrag von ??? ( / / 0 / 3 ) » 23.05.2005 11:08
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 / 1826 / 0 / 5 ) » 23.05.2005 11:29
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
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .
Mitglied im XING

Beitrag von Gast ( / / 0 / 3 ) » 23.05.2005 11:32
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 / 1826 / 0 / 5 ) » 23.05.2005 11:39
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
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .
Mitglied im XING

Re: Select-Anweisung

Beitrag von Asaph (Expert / 579 / 6 / 0 ) » 23.05.2005 12:46
??? 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 ) » 23.05.2005 13:41
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 ) » 23.05.2005 15:30
So hat´s geklappt:

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

Merci!

Seite 1 von 1

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und besseren Inhalt:

Aktuelle Forenbeiträge

Wieso brauche ich hier Klammern?
vor 42 Minuten von IHe 2 / 14
SD-Konditionen auslesen
vor einer Stunde von Geggo74 1 / 8
SapScript Frage
Gestern von a-dead-trousers 2 / 54

Vergleichbare Themen

Select-Anweisung...
von Nici » 19.07.2004 13:18
Select-Anweisung
von phil1982 » 02.08.2007 08:30
Dynamische Select-Anweisung
von bliP! » 06.02.2006 13:54
Hilfe bei Select-Anweisung
von Matthias Alles » 05.05.2004 10:29
Problem mit Select-Anweisung
von Crashday2707 » 19.05.2018 11:51