Dynamisches Perform

Aus SAP-Wiki
Wechseln zu: Navigation, Suche

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.

Parameters: p_form type c length 40.

perform (p_form).


Man kann auch eine Form-Routine dynamisch aufrufen, die in einem anderen Programm liegt.

Parameters: p_form type c lenth 40.

perform (p_form) in program z_beispiel if found.

oder hier wird eine Form-Routine von einem Druckprogramm gerufen, wo sowohl die Form-Routine als auch das Programm erst zur Laufzeit bekannt ist.

PERFORM (ls_tnapr-ronam) IN PROGRAM (ls_tnapr-pgnam)
    USING    lt_vbeln_vl
    CHANGING lv_returncode
             lv_screen
             IF FOUND.

Ohne den Zusatz IF FOUND würde es beim Versuch des Aufrufs einer nicht vorhanden Form-Routine/Programmnamens zu einem Laufzeitzeit kommen. Durch den Zusatz wird der gescheiterte Aufruf ignoriert. Die Laufzeitumgebung gibt allerdings über den gescheiterten Aufruf keine Rückmeldung. Daher sollte man in der Routine eine globale Variable füllen und die auswerten, um adäquat auf den gescheiterten Aufruf zu reagieren.

Literatur