Code: Alles auswählen.
IF s_bps_fr IS NOT INITIAL.
MESSAGE 'Keine Kontaktdaten vorhanden' TYPE 'I'
der Ansatz ist ja schon richtig, du musst nur folgendes beachten:cschmoel hat geschrieben:.Code: Alles auswählen.
IF s_bps_fr IS NOT INITIAL. MESSAGE 'Keine Kontaktdaten vorhanden' TYPE 'I'
Code: Alles auswählen.
IF s_bps_fr IS NOT INITIAL.
MESSAGE 'Keine Kontaktdaten vorhanden' TYPE 'I'
Code: Alles auswählen.
If s_bps_fr IS INITIAL.
Message: Es ist leer!
Ist s_bps_fr per SELECT-OPTION definiert?cschmoel hat geschrieben:.Code: Alles auswählen.
IF s_bps_fr IS NOT INITIAL. MESSAGE 'Keine Kontaktdaten vorhanden' TYPE 'I'
ich denke schon, dass es die Antwort auf deine Frage war. Hier ein Beispiel zum Nachvollziehen:cschmoel hat geschrieben:Nein, das meinte ich nicht ...
Ich meinte, wie man abprüft, ob werte in einer bestimmten Variable vorhanden sind
Code: Alles auswählen.
PARAMETERS: p_bps_to TYPE c LENGTH 1.
IF p_bps_to IS INITIAL.
MESSAGE 'KEINE Werte vorhanden, Variable ist INITIAL' TYPE 'I'.
ENDIF.
IF p_bps_to IS NOT INITIAL.
MESSAGE 'Werte vorhanden, Variable ist NICHT INITIAL' TYPE 'I'.
ENDIF.
Code: Alles auswählen.
DATA: x TYPE i.
IF x IS INITIAL.
WRITE: / 'Kein Wert in X'.
ELSE.
WRITE: / 'X hat einen Wert'.
ENDIF.
* Äusserst komplizierte Berechnungen...
x = 10 - ( 20 / 2 ).
IF x IS INITIAL.
WRITE: / 'Kein Wert in X nach Berechnung'.
ELSE.
WRITE: / 'X hat einen Wert nach Berechnung'.
ENDIF.
Code: Alles auswählen.
Kein Wert in X
Kein Wert in X nach Berechnung
Da wirst du aber viele Diplom-Mathematiker auf den Plan rufen (mindestens einen...) mit der Behauptung "0" sein kein Wert!Murdock hat geschrieben:Kein Wert in X nach Berechnung
Das ist falsch würde ich mal behaupten.
Nur um Missverständnisse zu vermeiden: Ich behaupte nicht 0 sei kein Wert, sondern SAP / ABAP. Deshalb habe ich ja auch drunter geschrieben, dass die Ausgabe falsch sei.ewx hat geschrieben:Da wirst du aber viele Diplom-Mathematiker auf den Plan rufen (mindestens einen...) mit der Behauptung "0" sein kein Wert!Murdock hat geschrieben:Kein Wert in X nach Berechnung
Das ist falsch würde ich mal behaupten.
Code: Alles auswählen.
data X type i.
field-symbols <x> type i.
If irgendeine Bedingung.
assign ('X') to <x>.
<x> = 0.
else.
ich mach nix
endif.
If <x> is assigned.
write 'X wurde berechnet'.
else.
write 'Kein Wert für X'.
endif.
Das stimmt so nicht. Die Selektionsabfrage muss dann "...WHERE feld IS NULL" lauten. Aber wenn man solche Werte selektiert hat, so ist der Feldinhalt der Variablen, die den Wert aufnimmt nicht NULL sondern INITIAL.ewx hat geschrieben:Verwirrender Weise gibt es "INITIAL" auf der Datenbank. Aber nur in besonderen Fällen. Und zwar dann, wenn ein Feld an eine Tabelle gehängt wird und das Flag "initialisieren" nicht gesetzt wird.
Alle vorhandenen Datensätze bekommen dann für dieses Feld den Wert "INITIAL".
Möchte man nun einen Datensatz selektieren mit "WHERE feld = SPACE", dann bekommt man keine Werte! Erst mit "WHERE feld IS INITIAL" funktioniert es.