Dynamischer Perform
Aus SAP-Wiki
Zur Navigation springenZur Suche springen
Siehe Dynamische/Generische Programmierung.
Siehe Kategorie: Dynamische/Generische Programmierung.
Möchte man eine Form-Routine dynamisch aufrufen, dann geht das ebenfalls über Token. Es ist jedoch nicht möglich die Schnittstelle der Form-Routine dynamisch zu füllen. Dies schränkt die Einsatzmöglichkeiten ein. Für die Übergabe von Variablen in der Form-Routine muss man mit globalen Variablen arbeiten, was normalerweise nicht empfehlenswert ist.
Dynamischer Perform
- Hier wird eine Perform-Routine dynamisch aufgerufen, in der einfachsten Form. Die Form-Routine existiert im aktuellen Programm und man geht davon aus, dass die Form-Routine zwingend existiert.
- Allerdings, wenn sie mit dieser Syntax nicht existiert, dann gibt es einen Laufzeitfehler.
Parameters: p_form type c length 40. perform (p_form).
Dynamischer Perform in dynamischem Programm mit "IF FOUND"
- Man kann auch eine Form-Routine dynamisch aufrufen, die in einem anderen Programm liegt. Hier liegt die dynamische Form-Routine im Programm "Z_BEISPIEL".
- Wenn die Form-Routine in dem Programm nicht existiert, gibt es durch den Zusatz "IF FOUND" keinen Laufzeitfehler. Der Befehl wird dann einfach übergangen.
Parameters: p_form type c lenth 40. perform (p_form) in program z_beispiel if found.
Es kann auch das gerufene Programm dynamisch übergeben werden
perform (p_form) in program (p_progr) if found.
Dynamischer Perform-Aufruf im Programm RSNAST00
- Ein sehr wichtiger dynamischer Aufruf einer Form-Routine in einem anderen Programm ist die Ausführung der Entry-Routine im Druckprogramm, die Im Programm RSNAST00 im Customizing der Nachrichtensteuerung über die Tabelle TNAPR gesteuert wird.
- Hier ist der Zusatz "IF FOUND" sehr wichtig, da es im Customizing keine Prüfung auf existierende Druckprogramme und deren Form-Routinen gibt. Ein simpler Rechtschreibfehler im Customizing vom Programmnamen oder der zu rufenden Form-Routine und ohne den Zusatz "IF FOUND" würde es zu einem Laufzeitfehler kommen. Das will man natürlich vermeiden.
PERFORM (ls_tnapr-ronam) IN PROGRAM (ls_tnapr-pgnam) USING lt_vbeln_vl CHANGING lv_returncode lv_screen IF FOUND.
Vorsicht Laufzeitfehler beim Includenamen im Programmnamen !!!
- Der gerufene Programmname darf kein include sein. Wenn das Coding in einem Include und man trägt den Includenamen beim Programmnamen ein, gibt es einen Laufzeitfehler.
- Statt des Includenamens ist das zugehörige Hauptprogramm beim Programmnamen einzutragen.
- Siehe https://answers.sap.com/questions/1356197/how-to-perform-subroutine-form-in-an-include-progr.html.
Web-Links
- https://answers.sap.com/questions/1356197/how-to-perform-subroutine-form-in-an-include-progr.html
- SAP-Hilfe: Perform
Literatur
- ABAP Best Practices, von Sascha Krüger und Jörg Seelmann-Eggebert, S. 114ff.