ich benutze einen User-Exit, der während der Verbuchung durchläuft. Im User-Exit lese ich zusätzlich eine Datenbanktabelle, die aber schon den neuen Stand (sprich den Stand nach der Verbuchung) hat. Wenn ich diese Tabelle zur Zeit der Verbuchung über die Datenbank (SE16) anzeigen lasse, hat sie noch alte Werte (die vor der Verbuchung waren). Kann ich in dem User-Exit auf den alten Stand der Tabelle zugreifen? Und wenn ja, dann wie?
Danke für Eure Tips!
Adhoc fällt mir da nur ein, zu Beginn der Transaktion die relevanten Daten per Export To Memory zu speichern und im Verbuchungsbaustein die Daten mit Import From Memory wieder auszulesen.
Innerhalb einer Logical Unit of Work (LUW) ist es so, dass geänderte Daten in dieser LUW schon sichtbar sind, von aussen aber nicht. (Ich hoffe, dass ist wirklich so, und ich erzähle keinen Quatsch...)
kann es sein, dass SAP Memory während der Verbuchung nicht möglich ist?
Ich habe mit EXPORT itab TO MEMORY ID 'XX' die Werte einer internen Tabelle mit sy-subrc = 0 übergeben. Beim IMPORT itab FROM MEMORY ID 'XX' im User-Exit, dass während der Verbuchung durchläuft, bekomme ich sy-subrc = 4, und die interne Tabelle itab bekommt keine Werte.
Mache ich hier etwas falsch?
wenn der EXPORT im regulären Ablauf, der IMPORT aber erst in der Verbuchung stattfindet, kann es nicht gehen, denn Du hast zwei eigenständige LUW's.
Die Verbuchung findet i.d.R. zu einem späteren Zeitpunkt statt, als Dein 'reguläres' Programm, das wahrscheinlich schon beendet ist, wenn der Verbucher die Verbuchungsdaten bearbeitet. Einzig bei COMMIT WORK AND WAIT ist eine Gleichzeitigkeit gegeben, die aber an den getrennten LUW's nichts ändert.
Gruß
Ereglam
May the Force be with your code || .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .
da habe ich wieder Einiges gelernt.
Ich habe jetzt das Problem über eine Z-Tabelle gelösst: im User-Exit, der vor der Verbuchung durchläuft, selektiere ich die Daten aus der Datenbank und speichere sie in der Z-Tabelle auf der Datenbank. Im User-Exit, der während der Verbuchung durchläuft, lese ich die alten Daten aus dieser Z-Tabelle. Es scheint gut zu klappen.
dass kann funktionieren, wenn die gemerkten Daten implizit mittels Sperrkonzept vor den Zugriff durch andere Instanzen geschützt ist und Du während der Verbuchung die Daten löschst, sobald Du mit ihnen fertig bist...
Gruß
Ereglam
May the Force be with your code || .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .