Code: Alles auswählen.
field-symbols <fs_rec> type "DeineTabelle".
...
assign wa_dbtablog-logdata to <fs_rec> casting.
...
So berechtigt dein Rat sein mag, aber wir haben eine kundeneigene Tabelle für die eben diese Protokollierung eingeschaltet ist und auch aktiv genutzt wird.xxxx hat geschrieben:ich würde die Protokollierung in Tabellen nur bei Customizing-Tabellen aktivieren
SO einfach ist das? Na super, und ich reiß mir ein Bein auf um den Report zu verstehen. Mich wundert nur, dass ich bei DER einfachen Konstruktion den Inhalt von LOGDATA nicht lesen kann (also in der SE16).edwin hat geschrieben:im Prinzip ist es ganz einfach:
im FELD LOGDATA steht der komplette Datensatz der zu loggender Tabelle,
Du kannst also :und kannst dann Deine Felder in <fs_rec> prüfenCode: Alles auswählen.
field-symbols <fs_rec> type "DeineTabelle". ... assign wa_dbtablog-logdata to <fs_rec> casting. ...
SO einfach ist das? Na super, und ich reiß mir ein Bein auf um den Report zu verstehen. Mich wundert nur, dass ich bei DER einfachen Konstruktion den Inhalt von LOGDATA nicht lesen kann (also in der SE16). Oder anders gefragt: Warum funktioniert ein "move wa_dbtablog-logdata to (struc)" nicht?edwin hat geschrieben:im Prinzip ist es ganz einfach:
im FELD LOGDATA steht der komplette Datensatz der zu loggender Tabelle,
Du kannst also :und kannst dann Deine Felder in <fs_rec> prüfenCode: Alles auswählen.
field-symbols <fs_rec> type "DeineTabelle". ... assign wa_dbtablog-logdata to <fs_rec> casting. ...
Was nicht beantwortet, warum der ASSIGN klappt, ein MOVE aber nichtedwin hat geschrieben:aber noch mal zum Thema: nicht vergessen - wenn sich die
Tabellenstruktur seit Anfang der Aufzeichnung geändert hat- hast Du ein
Problem mit dieser Einfachstmethode.
Code: Alles auswählen.
data it_dblog type TABLE OF dbtablog.
field-SYMBOLS <fs_dblog> type dbtablog.
field-symbols <fs_any> type any.
field-symbols <fs_hex> type x.
data wa_bereich type "DeineTabelle".
data f type f. "<<< ausrichten
data wa_logdata type LOGDATA.
...
assign wa_bereich to <fs_hex> casting.
loop at it_dblog ASSIGNING <fs_dblog>.
wa_logdata = <fs_dblog>-logdata.
* der etwas umständliche Weg:
* Jetzt kannst Du den Move oder '=' machen
* aber unter Benutzung des <fs_hex>
<fs_hex> = wa_logdata.
* und Deine Felder aus dem Bereich abfragen
if wa_bereich-"DeinFeld"= "Sonstwas".
* tue etwas
endif.
*
* Dann schon lieber der einfache Cast
ASSIGN wa_logdata to <fs_rec> casting.
...
endloop.
Code: Alles auswählen.
...
data f_dummy type f. "<<< ausrichten auf Doppelwortgrenze
data wa_logdata type LOGDATA.
...
loop at it_dblog ASSIGNING <fs_dblog>.
wa_logdata = <fs_dblog>-logdata.
ASSIGN wa_logdata to <fs_rec> casting.
Ich war heute krank, darum kann ich das erst Montag coden.edwin hat geschrieben:Anmerkung: falls die Struktur ein INT2 / Float Feld besitzt, müssen die
Daten im Speicher auf Doppelwortgrenze ausgerichtet sein,
deshalb:sonst bekommst Du einen "ASSIGN_BASE_WRONG_ALIGNMENT" Dump.Code: Alles auswählen.
... data f_dummy type f. "<<< ausrichten auf Doppelwortgrenze data wa_logdata type LOGDATA. ... loop at it_dblog ASSIGNING <fs_dblog>. wa_logdata = <fs_dblog>-logdata. ASSIGN wa_logdata to <fs_rec> casting.
Hm, da krieg ich nur Kuddelmuddel raus, sieht aus wie um ein oder zwei Zeichen verschoben. Jetzt kann ich freilich ständig mal ein Zeichen nach links oder rechts verschieben in der Hoffnung, dass ich treffe. Das Vorgehen finde ich aber nicht sonderlich professionell.edwin hat geschrieben:Code: Alles auswählen.
field-symbols <fs_rec> type "DeineTabelle". ... assign wa_dbtablog-logdata to <fs_rec> casting. ...
Ich habe, was die Tabelle angeht, eine einwandfreie Versionsverwaltung und die Sätze, die ich mir angesehen habe, waren auch fast neu.edwin hat geschrieben:bist Du sicher, daqs sich die Tabelle nicht geändert hat ?
bei mit funktioniert es einwandfrei.