ich habe gerade versucht, mit einem Report ein Makro in der TRMAC zu ändern, das dieser Report selbst verwendet. Damit könnte sich das Programm quasi selbst ändern
Allerdings musste ich feststellen, dass die geändeten Einträge immer erst berücksichtigt werden, wenn der Report neu generiert wird.
Der Einbau eines "GENERATE REPORT" hat bewirkt, dass sich der Ablauf jetzt immerhin nach Neustart ändert, aber nicht zur Laufzeit. Report intern neu starten geht nicht, dann sind alle Variablen weg.
Hat noch jemand 'ne Idee, oder soll ich lieber aufgeben?
Externe dynamische Reports, Funktionsbausteine oder Subroutinen möchte ich nicht nutzen, weil ich beliebige Variablen aus meinem Report verwenden will.
ich weiss nicht genau was Du vorhast und warum Du das Programm zur Laufzeit aendern moechtest. In dem Fall wuerde ich ggf. verschiedene Varianten (von Funktionen, subroutine, etc.) verwenden.
Du wirst nicht so ohne weiteres das Program zur Laufzeit aendern koennen, denn Du aenderst nicht das 'geladene' Program im Speicher in Deiner betreffenden User-Session.
Vermutlich wuerde funktionieren, wenn Du eine zweite Session fuer den User oeffnest und in dieser dann den geanderten Report nochmals startest - muesstest dann aber die bestehende Session in der der ungeaendere Report laeuft vermutlich beenden.
Das aus technischer Sicht.
Ich verstehe allerdings nicht so ganz den Use-Case dahinter. Vielleicht kannst Du noch ein paar Infos geben, wozu das ganze gut sein soll.
Hallo Donny,
ich weiss ja nicht was Du vorhast, aber in der TRMAC befinden sich Macros, die nicht zu Laufzeit, sondern bereits zum Zeitpunkt der Generierung eingebunden werden - damit wirst Du
keinen Erfolg haben. Die einzige Möglichkeit (die mir einfällt) ist der Umweg über einen SUBROUTINEN POOL / oder GENERATE REPORT, und der PERFORM auf dessen Unterprogramme, auf die Variablen des Hauptprogrammes könntest Du dann mit dem "Dirty Assign" zugreifen.
Ich habe aktuell einen Report mit ALV-Ausgabe, in dem auf dem Selektionsbild vom Anwender eine Formel vorgegeben werden kann. Die wird dann auf Ergegnisse angewendet, die der Report ermittelt. So in etwa: Wenn Wert1 > 100, dann Wert1 = 77 und Wert2 = 133.
Oder: wenn sy-uname = 'MEIER', dann Bonus = 0.
Ein bisschen wie im Excel.
Da der Report das ganze Geschreibsel dann interpretieren muss, ist bei Erweiterungswünschen immer Programmierung nötig. Wenn ich jetzt in die Formel einfach ABAP reinschreiben könnte, wär's viel flexibler. Man müsste halt nur aufpassen, das keiner "delete mara." reinschreibt.
Ich hatte es mit "GENERATE SUBROUTINE POOL" versucht, aber dort habe ich meine Variablen erstmal nicht mehr verfügbar.
Makros dagegen laufen ja inline ab, ich dachte da geht vielleicht was. Aber wie's jetzt aussieht, müsste die Programmgenerierung eben vor Programmaufruf stattfinden, also vielleicht in einem vorgeschalteten Programm.