!--a11y-->
Ist der Wert eines Feldes in einem Datensatz undefiniert oder unbekannt, so wird dies als NULL-Wert bezeichnet. NULL-Werte entstehen durch Einfügen neuer Felder in bestehende Tabellen oder durch
Inserts über Datenbank-Views.Wird ein neues Feld in eine auf der Datenbank bereits vorhandene Tabelle eingefügt, so wird diese Operation mit dem DDL-Statement
ALTER TABLE tabellenname ADD FIELD feldname...
auf der Datenbank durchgeführt. Bereits vorhandenen Sätze haben dann einen NULL-Wert im neuen Feld. Wird ein INSERT auf eine Tabelle über einen Datenbank-View vorgenommen, so entstehen NULL-Werte in allen nicht im View enthaltenen Feldern der Tabelle.
NULL-Werte bringen keine Nachteile mit sich, solange nicht auf das entsprechende Feld selektiert wird. Bei einer Selektion auf ein Feld mit NULL-Werten werden aber eventuell nicht alle Einträge gefunden, auf die die Selektionsbedingung paßt. Der Grund dafür ist, daß NULL-Werte nur die Selektionsbedingung WHERE FIELD IS NULL erfüllen.

Das Feld Feld1 wird in eine Tabelle TAB eingefügt. Wird auf diese Tabelle mit dem Statement SELECT... FROM TAB WHERE Feld1 <> 5... zugegriffen, so werden Sätze mit NULL-Werten in Feld1 nicht gefunden, obwohl diese logisch der WHERE-Bedingung des SELECT-Statements entsprechen.
Der im Beispiel beschriebene Fall kann vermieden werden, indem das eingefügte Feld als Initial definiert wird. Das Feld wird damit auf der Datenbank als NOT NULL angelegt. Beim Aktivieren wird die gesamte Tabelle durchlaufen und das neue Feld mit dem Initialwert gefüllt. Dies kann sehr laufzeitaufwendig sein! Sie sollten deshalb das Initial-Kennzeichen nur im Bedarfsfall oder wenn die Tabelle nur wenige Einträge hat verwenden.
Die Initialwerte sind vom Datentyp des Feldes abhängig.
Datentyp |
Initialwert |
ACCP, CHAR, CUKY, LANG, UNIT |
" " Leerzeichen |
CURR, DEC, FLTP, INT1, INT2, INT4, QUAN |
0 |
CLNT |
000 |
TIMS |
000000 |
DATS |
00000000 |
NUMC |
00000... für Feldlänge <= 32 |
LRAW, LCHR, RAW, VARC |
Kein Initialwert vorgesehen |
Beachten Sie, daß auch Felder auf der Datenbank als NOT NULL angelegt sein können, für die das Initial-Kennzeichen im ABAP Dictionary nicht markiert ist! Ob ein Feld auf der Datenbank als NOT NULL definiert ist, können Sie im Pflegebildschirm der entsprechenden Tabelle über Hilfsmittel ® Datenbankobjekt ® Anzeigen ermitteln.
Beim Anlegen einer Tabelle werden alle Felder der Tabelle als NOT NULL und mit Default-Wert angelegt. Das gleiche gilt beim Umsetzen der Tabelle! Nur wenn neue Felder an- bzw. eingefügt werden, werden diese nicht als NOT NULL angelegt. Eine Ausnahme hiervon sind Schlüsselfelder, die automatisch mit einem Initial-Kennzeichen versehen werden.

Ist das Initial-Kennzeichen für ein
Felder mit den Datentypen LCHR, LRAW, RAW sowie NUMC Felder mit Feldlänge größer 32 können nicht als Initial deklariert werden.