Code: Alles auswählen.
Feld | Datentyp | Länge
-------------------------
MANDT | CLNT | 3
OBJECT | CHAR | 4
ID | NUMC | 9
LFDNR | NUMC | 4
Code: Alles auswählen.
SELECT * FROM zdb_tab
INTO TABLE t_table
WHERE konto = '1234567890'.
Du bist sicher, dass genau diese Kontonummer exakt gleich auf der Datenbank für die LFNDR vorhanden sind?abuma hat geschrieben:Aber es fehlen ja auch Sätze bei der Selektion.
Nochmal das Konto-Beispiel:
Ich mache einen Select auf Feld Konto und ich weiß, dass ich zu diesem Konto 8 Sätze habe 4 mit LFDNR 1 und 4 mit LFDNR 2.
Ich erhalte aber bei meinem Select nur die 4 Sätze mit LFDNR 1.
Das kann doch nicht stimmen?
Liebe GrüßeCode: Alles auswählen.
SELECT * FROM zdb_tab INTO TABLE t_table WHERE konto = '1234567890'.
abuma
Sowas hätte ich noch nie erlebt. Die SE11/SE14 ist da sehr pfiffig und verwirft bei mir eigentlich nie Daten, die sie retten könnte, auch wenn ic hwild Spalten lösche oder hinzufüge. Ich könnte es mir nur dann vorstellen, wenn zwischenzeitlich das Feld LFDNR in der SE11 nicht als Schlüsselfeld markiert gewesen wäre. Dann hätte die Datenbank beim Aktivieren keine andere Wahl gehabt, als die Hälfte der Einträge zu verwerfen, und wenn man den Schlüsselfeldhaken später wieder hinzufügt, dann bleiben die Zeilen natürlich trotzdem weg.abuma hat geschrieben:Wir haben inzwischen die Vermutung, dass es daran liegen könnte, dass im Nachhinein nochmals Felder in der Tabelle hinzukamen und dadurch dieser Fehler entsteht.
Genau andersrum. Die (alte) SE16 stellt die Felder in der Übersichtsliste richtig dar, beim Doppelklick auf eine Zeile laufen die Werte dann aber durch den CONVERSION_EXIT.ewx hat geschrieben:Gerade bei Nummern, die als CHAR-Feld gespeichert werden, kann es dazu kommen, dass du z.B. 12345 eingibst, 12345 siehst, tatsächlich aber 0000012345 gespeichert wurde.
Um das zu prüfen, bitte mal in der SE16 alle Datensätze selektieren und mit Doppelklick die Datensätze vergleichen (Beim Doppelklick öffnet sich ein Fenster, in dem der angezeigte Wert als auch der "echte" Wert dargestellt werden.
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
abuma
Weil die SE16N die Konvertierungsroutine aufruft und mit führenden Nullen sucht. Auf der Datenbank sollte es also auch nur Werte mit führenden Nullen geben. Auch wenn ich nicht weiß, wie es in Deinem Fall dazu kommen könnte: Achte darauf, dass Deine Kontonummer vollständig rechtsbündig ist, bevor Du sie links mit Nullen auffüllst und auf die Datenbank schreibst. Auf der sicheren Seite bist Du, wenn Du bei Deiner Kontonummer die folgenden Befehle ausführst:Wenn ich einen Eintrag mit Konto ohne führende Nullen abspeichere, erhalte ich in der SE16N kein Ergebnis wenn ich das Konto ohne führende Nullen eingebe, da dort nochmals Konvertiert wird und dadurch der Eintrag nicht gefunden werden kann.
Code: Alles auswählen.
SHIFT konto RIGHT DELETING TRAILING SPACE.
OVERLAY konto WITH '0000000000'.
Ja, das ist schon extrem seltsam. Frage aus Neugier: Was für eine Datenbank setzt ihr ein?Allerdings verhält es sich ja in meiner eigentlichen fehlerhaften Tabelle nicht so!?
Ich finde ja die Kontoeinträge, aber eben nur mit LFDNR 1.
Das ist aber eigentlich ein Fehler. Das Datenelement ist mit dem Conversion Exit definiert, also müssen die auf der Datenbank abgelegten Werte sich auch an das interne Format dieses Conversion Exits halten. Entweder ihr macht das so (z.B. unter Nutzung der o.g. Befehle oder indem ihr selber den Conversion Exit aufruft), oder ihr nehmt eine andere Domäne dafür, die keinen Conversion Exit hat. Ansonsten kann ich mir schon vorstellen, dass die internen Abläufe in SAP wegen dieses Konsistenzfehlers zu undefinierten Ergebnissen kommen.In der im Thread genannten DB werden diese Felder ohne führende Nullen abgespeichert.
Kann man machen - sollte es aber nicht. Wenn du schon weißt, dass es einen Konvertierungsexit gibt ( hier ALPHA ) dann rufe doch den zugehörigen Exit auf ( hier CONVERSION_EXIT_ALPHA_INPUT ). Das ist i.A. sicherer und in diesem Fall auch schneller.DeathAndPain hat geschrieben: Auf der sicheren Seite bist Du, wenn Du bei Deiner Kontonummer die folgenden Befehle ausführst:
Code: Alles auswählen.
SHIFT konto RIGHT DELETING TRAILING SPACE. OVERLAY konto WITH '0000000000'.
HDBDeathAndPain hat geschrieben:Ja, das ist schon extrem seltsam. Frage aus Neugier: Was für eine Datenbank setzt ihr ein?