Dynamischer Perform

Aus SAP-Wiki
(Weitergeleitet von Dynamisches Perform)
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 !!!

Web-Links

Literatur