ich frage mich gerade, ob ein Datenbank-Feld nachdem es schon einmal mit einem Wert belegt wurde, der Wert jedoch in der Dynpro wieder gelöscht wurde, dann '', also leerer String oder INITIAL ist?
Kurze Antwort: Ich würde mal auf BEIDES tippen.
Lange Antwort: Das hängt vom Datentyp ab.
Wenn du (wie in deinem Beispiel) einen Leerstring zuweisen kannst, wird es sich um ein Zeichenartigen Typ handeln und da ist '' = initial.
Aber dazu gibts in der ABAP-Hilfe eine gute Erklärung wann etwas "initial" ist.
Grundsätzlich gilt:
- bei zeichenartigen Typen '' = initial
- bei numerischen Typen 0 = initial
- bei binär (hex) Typen '00' = initial
Wichtige Ausnahmen:
Ein String (zeichenartig) der (nur) Leerzeichen enthällt ist nicht initial. (Länge 0 = initial)
Ein XString (binär) der (nur) Nullzeichen enthällt ist nicht initial. (Länge 0 = initial)
Eine Uhrzeit (zeichenartig) die nur Leerzeichen enthällt ist nicht initial. ('000000' = Initial)
--> da stolpere ich selbst hin und wieder darüber.
Bei strukutierten Typen müssen alle Felder initial sein, damit die ganze Struktur initial ist.
Bei tabellarischen Typen dürfen keine Zeilen vorhanden sein, damit die Tabelle initial ist.
lg ADT
EDIT:
Eine Sonderform gibts übrigens noch:
Wenn du bei einer DB-Tabelle eine neue Spalte einfügst, wird in allen bereits vorhandenen Zeilen der Tabelle für diese Spalte NULL eingetragen. Das ist insofern problematisch, da SAP kein NULL kennt. Wenn du diese Werte in einer Query nun mit EQ SPACE oder IS NULL abfragst und das einmal mit und einmal ohne Tabellenpuffer durchführst wirst du unterschiedliche Ergebnisse erhalten.
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.
danke für die ausführliche Rückmeldung. Die Info, die ich gebraucht habe war, dass bei zeichenartigen Typen '' = initial ist. Ich hantiere grundsätzlich mit CHAR Datenelementen. Also passt des!