Anfang des Inhaltsbereichs

ABAP-Unterprogramme aufrufen: PERFORM  Dokument im Navigationsbaum lokalisieren

Mit PERFORM können Sie von jedem Programm aus ein ABAP-Unterprogramm aufrufen; dabei gelten die regulären ABAP-Laufzeitberechtigungen. Sie können Unterprogramme beispielsweise für die folgenden Zwecke aufrufen: Berechnungen durchführen, Daten, die bei der Anzeige oder Ausgabe benötigt werden, aus Datenbanken laden, Daten aufbereiten etc.

Wie alle Steuerkommandos werden auch die PERFORM-Kommandos ausgeführt, wenn ein Dokument für die Ausgabe oder Anzeige aufbereitet wird. Die Kommunikation zwischen dem aufgerufenen Unterprogramm und dem Dokument erfolgt über Symbole, deren Werte im Unterprogramm gesetzt werden.

HinweisDas PERFORM-Kommando wird nicht innerhalb von SAPscript Replace-Bausteinen, z.B. TEXT_SYMBOL_REPLACE oder TEXT_INCLUDE_REPLACE, ausgeführt. Die Replace-Bausteine können lediglich Symbolwerte ersetzen bzw. Include-Texte auflösen, aber nicht SAPscript Steuerkommandos interpretieren.

Syntax in einem Formularfenster:

/: PERFORM <form> IN PROGRAM <prog>
/: USING &INVAR1&
/: USING &INVAR2&
......
/: CHANGING &OUTVAR1&
/: CHANGING &OUTVAR2&
......
/: ENDPERFORM

INVAR1 und INVAR2 sind variable Symbole. Es kann sich dabei um eine der vier SAPscript -Symbolarten handeln.

OUTVAR1 und OUTVAR2 sind lokale Textsymbole, d. h. Zeichenfolgen.

 

 

Die Form-Routine im ABAP, die über die oben aufgeführten Kommandozeilen aufgerufen wird, muß dann im ABAP-Report prog folgendermaßen definiert sein:

FORM <form> TABLES IN_TAB STRUCTURE ITCSY
OUT_TAB STRUCTURE ITCSY.

...
ENDFORM.

Die Werte, der mit /: USING... übergebenen SAPscript-Symbole befinden sich nun in der internen Tabelle IN_TAB . Zu beachten ist, daß die Werte als Zeichenkette an die Form-Routine übergeben werden, da das Feld VALUE in der Struktur ITCSY die Domäne TDSYMVALUE (CHAR 80) besitzt. Für den Zugriff auf die Variablen siehe untenstehendes Beispiel.

Die interne Tabelle OUT_TAB enthält Namen und Werte der CHANGING Parameter im PERFORM-Kommando. Diese Parameter sind lokale Textsymbole, also lediglich Zeichenfelder. Für die Rückgabe der Variablen innerhalb der Form-Routine siehe untenstehendes Beispiel.

Beispiel

Aus einem SAPscript-Formular wird ein Unterprogramm GET_STRICHCODE im ABAP-Programm QCJPERFO aufgerufen. Danach wird der dort gebildete ‘simple’ Strichcode (‘Erste Seite’, ‘Folgeseite’, ‘Letzte Seite’) als lokales variables Symbol ausgegeben.

Definition im SAPscript-Formular:

/: PERFORM GET_STRICHCODE IN PROGRAM QCJPERFO
/: USING &PAGE&
/: USING &NEXTPAGE&
/: CHANGING &STRICHCODE&
/: ENDPERFORM
/

/ &STRICHCODE&

 

Coding des aufrufenden ABAP-Programms:

REPORT QCJPERFO.

 

FORM GET_STRICHCODE TABLES IN_PAR STUCTURE ITCSY
OUT_PAR STRUCTURE ITCSY.

DATA: PAGNUM LIKE SY-TABIX, "Seitenzahl
NEXTPAGE LIKE SY-TABIX. "Folgeseitenzahl

READ TABLE IN_PAR WITH KEY ‘PAGE’.
CHECK SY-SUBRC = 0.
PAGNUM = IN_PAR-VALUE.

READ TABLE IN_PAR WITH KEY ‘NEXTPAGE’.
CHECK SY-SUBRC = 0.
NEXTPAGE = IN_PAR-VALUE.

READ TABLE OUT_PAR WITH KEY ‘STRICHCODE’.
CHECK SY-SUBRC = 0.
IF PAGNUM = 1.
OUT_PAR-VALUE = ‘|’.
"Erste Seite
ELSE.
OUT_PAR-VALUE = ‘||’.
"Folgeseite
ENDIF.

IF NEXTPAGE = 0.
OUT_PAR-VALUE+2 = ‘L’.
"Kennung: Letzte Seite

ENDIF.

MODIFY OUT_PAR INDEX SY-TABIX.

 

ENDFORM.