ja.A6272 hat geschrieben: Wird bei export to Memory ID die Tabelle im speicher überschrieben?
Import - append lines to itab - exportA6272 hat geschrieben:Gibt es eine Option die neuen Einträge anzuhängen (Ohne import...)?
Any existing data clusters with the same ID id are completely overwritten
Vermeiden heißt ja nicht, dass man es nicht mal brauchen könnte.4byte hat geschrieben:irgendwie finde ich den EXPORT TO MEMORY suspekt. Ich dachte immer man soll global gehaltene Daten vermeiden?
Gibt es jemanden, der das für seine (kunden)eigenen Porgramme verwendet ??
Grüße 4Byte
Dass es im Einzelfall ein gangbarer Weg sein kann, Unzulänglichkeiten des SAP-Standards auf diese Weise zu umgehen, bestreite ich nicht. Ich würde mir notfalls auch Feldinhalte aus in der Aufrufhierarchie höher liegenden Programmen erschleichen (Ausbruch aus der Sandbox per (Programmname)Variablenname). Vermeiden sollte man sowas aber um jeden Preis, und in meinen Augen gehört an jeden IMPORT FROM MEMORY ein umfassender Codekommentar, wer uns da was zu welchem Zweck im Memory hinterlassen hat.ewx hat geschrieben:Vermeiden heißt ja nicht, dass man es nicht mal brauchen könnte.
Ich verwende das immer mal wieder, wenn die Schnittstelle von BAdIs oder anderen Exits nicht ausreichend ist.
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
ralf.wenzel
wenn man den export und den Import in einer Klasse kapselt, dann tut das überhaupt nicht weh.DeathAndPain hat geschrieben:Vermeiden sollte man sowas aber um jeden Preis, und in meinen Augen gehört an jeden IMPORT FROM MEMORY ein umfassender Codekommentar, wer uns da was zu welchem Zweck im Memory hinterlassen hat.
Definitiv ja. Wenn z.B. größere Datenmengen via Submit an ein anderes Programm weitergereicht werden sollen und da durch den Submit eine neue LUW gestartet wird und sich anders ( als über die Übergabeparameter des gerufenen Programms ) keine Daten direkt übergeben lassen.4byte hat geschrieben:irgendwie finde ich den EXPORT TO MEMORY suspekt. Ich dachte immer man soll global gehaltene Daten vermeiden?
Gibt es jemanden, der das für seine (kunden)eigenen Porgramme verwendet ??
Weh tut es auf jeden Fall, da Du damit immer die Feldkapselung durchbrichst. Eine Methode von Dir reicht auf einem undefinierten Weg ohne ordentliches Interface Werte an eine andere durch. Mit der Klasse baust Du Dir nur eine Krücke, um das später nachvollziehen zu können. Der nächste sieht nur den Befehl und weiß nicht, dass Du das in einer Klasse gekapselt hast und dass er mit solch Verwendungsnachweis weiterkommen würde. Und selbst wenn er darauf kommt, ist immer noch nicht klar, wer da an wen warum etwas weiterreicht.wenn man den export und den Import in einer Klasse kapselt, dann tut das überhaupt nicht weh.
Genau das, was man braucht um unzureichend definierte Exits von der SAP zu umgehen.DeathAndPain hat geschrieben:Weh tut es auf jeden Fall, da Du damit immer die Feldkapselung durchbrichst. Eine Methode von Dir reicht auf einem undefinierten Weg ohne ordentliches Interface Werte an eine andere durch.wenn man den export und den Import in einer Klasse kapselt, dann tut das überhaupt nicht weh.
Dann darf man ausnahmsweise auch ein bis zwei Kommentare dazu schreiben.DeathAndPain hat geschrieben:Mit der Klasse baust Du Dir nur eine Krücke, um das später nachvollziehen zu können. Der nächste sieht nur den Befehl und weiß nicht, dass Du das in einer Klasse gekapselt hast und dass er mit solch Verwendungsnachweis weiterkommen würde. Und selbst wenn er darauf kommt, ist immer noch nicht klar, wer da an wen warum etwas weiterreicht.
Ja, das ist schon älter.DeathAndPain hat geschrieben:Ich halte das Ding für ein Relikt aus der Steinzeit.
Robin Hood war auch geächtet, ich mag IhnDeathAndPain hat geschrieben:Programmglobale Variablen sind ja schon weitgehend geächtet,
Memory ist nicht Systemglobal.DeathAndPain hat geschrieben:was soll man da erst von systemglobalen Variablen halten?
Das stimmt. Über Programme hinweg verwende ich das nur wennDeathAndPain hat geschrieben:Da holt sich ein Programm irgendwelche Daten aus dem Nirwana, und kein Schwein kann nachvollziehen, wer die da mal wann hinterlegt hat. Und nein, Dokumentation ist nicht die Antwort auf so einen Pfusch.
Es gibt ja mittlerweile auch temporäre DB-Tabellen.black_adept hat geschrieben:Grundsätzlich mag ich die Variante immer dann wenn das aufgerufene Programm und das rufende Programm nichts voneinander sehen können aber ich mich nicht um (DB)Aufräumarbeiten kümmern möchte, wenn das (Haupt)Programm beendet wird