Aktive Aufrufe in einem Programm

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
9 Beiträge • Seite 1 von 1
9 Beiträge Seite 1 von 1

Aktive Aufrufe in einem Programm

Beitrag von ralle (ForumUser / 49 / 0 / 0 ) »
Hallo,

in einem Report wird ein Unterprogramm FORM3 mehrfachgenutzt.

FORM 1 ruft FORM 2 ruft FORM 3
FORM 4 ruft FORM 2 ruft FORM 3
FORM 5 ruft FORM 2 ruft FORM 3

Bei einem indirekten Aufruf dieser Routine aus z.B. FORM 4 soll etwas anders laufen in FORM3 als z.B. aus FORM1.

Ich könnte natürlich allen Unterprogrammen USING/CHANGING-Parameter verpassen oder FORM3 einfach duplizieren. Da es sich aber um einen flotten 10000-Zeiler handelt will ich eigentlich nur so wenig wie unbedingt nötig verändern.

Meine Frage deshalb:
Wie kann ich zur Laufzeit in einem Unterprogramm erkennen von wo es aufgerufen wurde?(wenn nötig auch n- Ebenen höher)
Mir schwebt da so etwas wie es im Debugger(4.6C) unter Aufrufe steht vor.

z.B PROGRAMM FORM FORM3
PROGRAMM FORM FORM2
PROGRAMM FORM FORM4
PROGRAMM EVENT START-OF-SELECTION

Lieg ich da völlig neben der Spur oder hat da jemand eine Idee.

Gruß
Ralle

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von Jura (ForumUser / 88 / 0 / 0 ) »
Hallo Ralle,

eine Möglichkeit wäre es eine globale Variable zu definieren, die Du unterschiedlich füllst, bevor Du in der FORM1, FORM4 oder FORM5 die FORM2 aufrufst.
Z.B. in der Form1 ist die Variable XYZ = '1', in der FORM4 XYZ = '4' und in der FORM5 XYZ = '5'.
Dann, wenn Du in der Form3 bist, kannst den Wert der Variable abfragen.
Kann sein, dass es nicht der beste Weg ist, aber wenn ich Dein Problem richtig verstanden habe, könnte es helfen.

Grüße,
Jura

Re: Aktive Aufrufe in einem Programm

Beitrag von ralf.wenzel (Top Expert / 3921 / 200 / 280 ) »
ralle hat geschrieben:in einem Report wird ein Unterprogramm FORM3 mehrfachgenutzt.
Ich würde erst einmal prüfen ob das überhaupt Sinn macht. Zum Beispiel weil eine ähnliche Logik mit anderen Werten durchlaufen wird. Oder weil es ein anderer Kontext ist.

Bei dir klingt das wie ein if...then...else....-Gedöns mit völlig unterschiedlichen Logiken, vor sowas kann man nur warnen.

Wenn dem so ist, ist es eigentlich einfach. Vielleicht solltest du mal konkret beschreiben was in der FORM gemacht wird und warum es von mehreren Stellen aus aufgerufen wird.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von ralle (ForumUser / 49 / 0 / 0 ) »
Hallo Ralf,

im wesentlichen wird in FORM3 folgendes gemacht.

FORM get_values2 USING value(p_version)
value(p_werttyp)
changing p_planwert
*
LOOP AT i_cospa WHERE versn = p_version
AND wrttp = p_werttyp
AND gjahr IN s_gjahr
AND acpos IN s_acpos
AND kstar IN s_pkstar.

CLEAR planwert.
IF i_cospa-gjahr = p_gjahr.
ADD i_cospa-wkg001 THEN i_cospa-wkg002
UNTIL i_cospa-wkg016 ACCORDING TO s_perio
GIVING planwert.
ELSE.
ADD i_cospa-wkg001 THEN i_cospa-wkg002
UNTIL i_cospa-wkg016 GIVING planwert.
ENDIF.
ADD planwert TO p_planwert.
ENDLOOP.
*
In P_GJAHR steht das auszuwertende Geschäftsjahr(wir haben 2009),
in s_perio steht die bis-Periode.
*
Für die Aufrufe aus FORM1 und FORM5 sollen bei Bedingung
IF i_cospa-gjahr = p_gjahr. periodengenau addiert werden.(z.B Periode 1 bis 4)
Für den Aufruf aus FORM4 aber nicht, da soll egal welche Auswertungsperiode eingegeben wurde, das ganze Jahr addiert werden.
*
Gruß
Ralf

PS: Vielleicht weisst du ja trotzdem wie man die Aufrufstack irgendwie absaugen kann.

Beitrag von ralf.wenzel (Top Expert / 3921 / 200 / 280 ) »
ralle hat geschrieben:PS: Vielleicht weisst du ja trotzdem wie man die Aufrufstack irgendwie absaugen kann.
Gar nicht. Weil ich gerade wg. Kindergeburtstag so gar keine Zeit habe: Du kannst ein globales Flag setzen bzw. rücksetzen und im Programm entsprechend reagieren.

Ist aber ne schmutzige Lösung ;)


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von ralle (ForumUser / 49 / 0 / 0 ) »
Danke trotzdem, auch an Jura.

Ralf

Function SYSTEM_CALLSTACK

Beitrag von ST22 (Specialist / 279 / 43 / 41 ) »
Hallo,

ich glaube die Funktion SYSTEM_CALLSTACK bringt was du suchst. Ist aber nicht freigegeben;-).

Gruß

ST22

Re: Function SYSTEM_CALLSTACK

Beitrag von ralf.wenzel (Top Expert / 3921 / 200 / 280 ) »
ST22 hat geschrieben:Ist aber nicht freigegeben;-).
Das sind oft die besten ;) Hätte ich in meinem Leben nur freigegebene Funktionsbausteine benutzt, hätte ich ne Menge selbst programmieren müssen....



Ralf "schieß mal mit UPDATE das Flag um" Wenzel ;)
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von ralle (ForumUser / 49 / 0 / 0 ) »
wahrscheinlich sehr unproffesionell, aber ich achte auf diese Kleinigkeit eigentlich überhaupt nicht.

Habe unter SYSTEM_CALLSTACK eine C-Funktion und einen FUBA gefunden.
Das reicht mir vollkommen aus, ist aber für mein Beispiel, wie bereits Ralf und Jura anmerkten, mit Kanonen auf Spatzen geschossen.

Danke trotzdem noch mal.


Ralf

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1811
Views
Mehrere aktive Screens
von TheRock » 13.07.2007 08:53 • Verfasst in Dialogprogrammierung
1
Antw.
2426
Views
Aktive Planvariante bei Workflowmuster
von RainerP » 25.02.2013 14:57 • Verfasst in Basis
1
Antw.
2572
Views
aktive Badi Implementierungen erkennen?
von flashback » 14.01.2005 12:42 • Verfasst in ABAP Objects®
2
Antw.
2246
Views
Protokollierung RFC Aufrufe Schnittstellenparameter
von almialmi » 04.09.2006 15:48 • Verfasst in Basis
4
Antw.
2384
Views
RFC-/Webservice-Aufrufe feststellen
von Roddy » 05.09.2012 08:49 • Verfasst in ABAP® Core

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 3 Stunden von Bright4.5 1 / 67
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1714
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8319