es gibt in sap gewissen tabellen, die auf nicht-änderbar gestellt sind. so zum beispiel die tabellen REPOSRC und REPOTEXT. abap-änderungsanweisungen (UPDATE, MODIFY, INSERT, DELETE) auf diese tabellen brechen mit dem laufzeitfehler DBIF_RSQL_INVALID_RSQL ab.
kann mir jemand erklären, wie/wo diese tabellen auf diese weise geschützt werden? ich nehme an, dass das irgendwo auf "basis-ebene" passiert.
kann mir jemand erklären, wie man diesen schutz knacken kann?
alles klar! super udn danke!
ps: mir ist bewusst, dass die daten in diesen tabellen sehr wichtig sind, dass änderungen in diesen tabellen sehr gefährlich sind, etc etc... (nur um moralpredigten vorzubeugen *g*)
ABAPeroni hat geschrieben:Ich dachte, ich bekommen ein E-Mail, sobald jemand antwortet...
Kannst du in deinem Benutzerprofil einstellen.
Wenn der Programmname nicht schon in der Tabelle vorhanden ist, wüsste ich nicht, warum der Eintrag nicht in die Tabelle geschrieben werden sollte...
Versuch's doch noch mal mit einem explizitem INSERT.
Mir ist nicht bekannt, dass Tabellen gegen Updates geschützt werden könnten.
probier doch mal mit der transaktion se16n -> &sap_edit (kennst du bestimmt) eine harmlose mutation auf dieser tabelle. beim speichern kommt es zum laufzeitfehler. hier ein auszug davon:
Laufzeitfehler DBIF_RSQL_INVALID_RSQL
aufgetreten am 13.03.2006 um 11:24:26
Fehler im Modul RSQL der Datenbankschnittstelle.
Was ist passiert?
Fehler im ABAP-Anwendungsprogramm.
Das laufende ABAP-Programm "SAPLSE16N" mußte abgebrochen werden, da es auf
eine Anweisung gestoßen ist, die leider nicht ausgeführt werden kann.
Was können Sie tun?
Notieren Sie bitte, welche Aktionen und Eingaben zu dem Fehler geführt
haben.
Wenden Sie sich bitte zur weiteren Bearbeitung des Problems an Ihren
SAP-Administrator.
Mit der Transaktion ST22 zur ABAP-Dumpanalyse können Sie
Abbruchmeldungen anschauen und verwalten, insbesondere längere Zeit
aufbewahren.
verwalten, insbesondere längere Zeit aufbewahren.
Fehleranalyse
Es wurde eine Änderungsoperation (UPDATE, MODIFY, INSERT, DELETE) auf
dem Datenbankobjekt (View, Tabelle) "REPOSRC " durchgeführt, das nicht änderbar
ist.
habe die auslieferungsklasse der tabelle reposrc vorübergehend (via se16n -> &sap_edit -> auf dd02l) von "s" (systemtabelle) zu "a" (anwendungstabelle) gemacht. das hatte aber keinen einfluss...
Das ist ja echt der Hammer...!
Geht wirklich nicht. 'Systemtabelle' hat damit auch nichts zu tun.
Das wird im Interpreter fest abgefragt: ABAP-Befehl: SYNTAX-CHECK
Da kann ich leider nicht weiterhelfen.
Ein Versuch wäre vielleicht noch, die Sperre per EXEC SQL zu umgehen. Aber da kenne ich vom "echten" SQL zu wenig.
ich hab bisher noch nie etwas mit native sql gemacht. hab jetzt mal (die f1-hilfe berücksichtigend) das folgende progrämmchen gemacht, einfach um daten lesen zu können:
DATA: wa TYPE reposrc.
EXEC SQL.
SELECT PROGNAME, CNAM INTO :WA-PROGNAME, :WA-CNAM FROM REPOSRC.
ENDEXEC.
WRITE: wa-progname.
dieses programm, und ähnliche varianten davon dumpen. gibt es irgendwo lauffähige muster-programme hierzu? oder kann mir jemand ev. gleich sagen, was ich oben falsch gemacht habe?
alles klar. danke schön. das prog. ist lauffähig. die von mir angepasste version davon für das auslesen der tabelle reposrc hingegen führt wieder zu einem laufzeitfehler... aber egal. hab jetzt genug von diesem thema. wird zeit, wieder "richtig" zu arbeiten