Es ist möglich per Pointer auf globale Variablen eines anderen Programmes bzw. einer Funktionsgruppe direkt zuzugreifen.
Damit ist es möglich, SAP-FB´s gezielt mit Daten zu versorgen, ohne den gesamten Kontext verstehen zu müssen.
Das Programm/die Funktionsgruppe muss vor dem Zugriff mindestens einmal aufgerufen worden sein (z.B. durch Dummy-Aufruf eines zugeordneten Funktionsbausteins).
Der Zugriff erfolgt dann über Pointer:
(Coding)
* Definieren einer lokalen Struktur mit Typ auf Wunschstruktur des Fremdprogrammes
data: ls_data type ext_prog_struc.
* Pointer zum Zugriff auf externe Daten
field-symbols: <pointer_2_foreign_prog_struc>.
...
* Eventuell ist hier ein (Dummy-)Aufruf eines Funktionsbausteines bzw. eine Transaktion oder eines Programmes aus der betroffenen Funktionsgruppe/Kontext nötig, damit die externe Variable im Rollbereich angelegt wird und somit zugegriffen werden kann.
...
* Zuweisung der Variablen ?VARIABLE? des Fremdprogrammes ?SAPLXXXX? zu Pointer
assign (?(SAPLXXXX)VARIABLE?) TO <pointer_2_foreign_prog_struc>.
* Zugriff auf Inhalt der Fremdvariable über Pointer
ls_data = <pointer_2_foreign_prog_struc>.
write:/ ls_data-number.
Aber ein Tip an alle: Bitte nichts REINSCHREIBEN!!!
Schon das Auslesen von Variablen auf diese Art und Weise ist nur das allerletzte Nothilfsmittel um 5 nach 12. (Meist braucht man das im SD, denn es geht auch bei Programmen und sogar bei Abap-OO ...).
Aber einem Programm zwischen zwei Aufrufen was "unterzujubeln" ist schon ziemlich "harakiri".
Wenn Du das machst, und das gilt nicht nur für meine Programme, zerstörst du den Kontextzusammenhang, der im Programm zwischen mehreren Variablen, Tabellen etc. besteht.
Von daher ist die Anmerkung "... ohne den gesamten Kontext verstehen zu müssen ..." völlig falsch.
Wenn man so etwas macht (hineinschreiben) muß man den Kontext noch besser verstanden haben, als der Programmierer.
Fast immer bekommt man das was man will mit Standardmitteln oder "Standardhilfsmitteln" hin.
stimmt, die Aussage
"... ohne den gesamten Kontext verstehen zu müssen ..." ist tatsächlich nicht ganz richtig.
Es sollte heissen: Ohne sämtliche Prozess-schritte, die der gewünschten Funktion vorangehen, kennen zu müssen.
Natürlich muss man die Funktionalität verstanden haben - aber ohne dieses Verständnis wird man hier auch kein sinnvolles Ergebnis erzielen können.
Natürlich ist die reine Lehre immer schöner - nur
muss der Aufwand i.d.R. begrenzt sein und die SAP-
Doku ist leider auch nicht immer ganz vollständig
und schliesslich bewegen wir uns hier in der Rubrik
Tipps & Tricks