ich habe folgende frage. Bei uns hat sich wegen verschiedener umstände eine Z-Tabelle zerschossen. In dieser Z-Tabelle gibt es ein Key feld welches ich manupulieren müsste. Hierfür habe ich ein kleines Programm geschrieben.
Ich versuche dies über den befehl "Update". Bei nicht Key felder geht dies ohne Probleme. Kann mir jemand helfen, wie ich ein Keyfeld ändern kann. Bei dem Update befehlt bekomme ich dann SY-SUBRC = 4.
Primärschlüsselfelder kann man nicht ändern, weil sich über diese ja die Tabellenzeile definiert (deswegen ist es ja der Primärschlüssel). Das bedeutet, dass Du die Zeilen nicht änderst, sondern neue anlegst und die alten löschen musst.
Was Du also machen musst, ist ein DELETE der alten Zeile, gefolgt von einem nachfolgenden INSERT der neuen. Am besten danach erst ein COMMIT WORK, damit nicht nach dem DELETE und vor dem INSERT ein Fehler auftreten kann, durch den die Zeile verlorengeht. Erst wenn der INSERT Dir einen SY-SUBRC von Null bringt, machst Du einen COMMIT WORK (oder je nach Umfang des Ganzen auch erst nach mehreren solcher Änderungen, denn nach jedem einzelnen INSERT ein COMMIT WORK gilt als nicht effizient).
Gern geschehen ("Danke" kann man auch anklicken ). Vielleicht sollte man noch anmerken, dass die Vorgehensweise mit DELETE und INSERT als Dirty-Variante in einem Pannenfall mal praktikabel sein mag. Wenn Du aber grundsätzlich vor dem Problem stehst, öfter mal Primärschlüsselfelder ändern zu müssen, dann ist das ein ganz starkes Indiz dafür, dass der Primärschlüssel Deiner Tabelle falsch definiert ist.