Form-Routine aus SAPscript-Formular aufrufen

Aus SAP-Wiki
Wechseln zu: Navigation, Suche

Aus einem SAPscript-Formular kann eine Form-Routine aufgerufen werden, in dem Werte zum Formular hinzugelesen oder auch verändert wrden. Das Programm mit der Form-Routine kann ganz gewöhnlich in ABAP mit den Transaktion SE38 oder SE80 programmiert werden.

Die Übergabe der Variablen aus dem SAPscript-Formular an die Form-Routine und aus der Form-Routine an das SAPscript-Formular ist jedoch anders als man es sonst von Form-Routinen gewohnt ist.

Zentrales Programm

  • Es bietet sich an, ein Programm zu erstellen, wo für das gesamte SAP-System alle Form-Routinen gesammelt werden, die aus SAPscript-Formularen oder Standardtexten aufgerufen werden. So kann man sich jeweils an den bereits vorhandenen Beispielen orientieren. Man sollte in die Form-Routinen auch einen Kommentar schreiben, von welchem SAPscript-Formular oder Standardtext eine Form-Routine verwendet wird. Einen (automatisch generierten) Verwendungsnachweis für die Form-Routinen gibt es nicht.

Aufruf Form im SAPscript-Formular

  • Die einzelnen Zeilen werden in der Formatspalte als Kommandozeilen eingefügt.
  • Lediglich die letzte Zeile mit dem "Endperform" endet mit einem Punkt.
  • Alle Variablen vom Formular, die aus dem Formular benötigt werden, werden per "Using" übergeben. Die Variablen, die aus der Form-Routine ans SAPscript-Formular übergeben werden, werden per "Changing" übergeben. Im Unterschied zum Perform in ABAP-Programmen wird der Befehl „Using“, bzw. „Changing“ vor jeden Übergabeparameter geschrieben.

ScriptPerform1.jpg

  • Die Changing-Parameter müssen nicht zwingen als globale Variablen vorhanden sein. Sie können auch im Formular lokal angelegt werden mit dem Befehl Define oder können auch nicht deklariert werden und implizit vom Changing-Parameter angelegt während der Laufzeit der Formularausgabe.

Generierter Aufruf

Bei einem Formular der Saldenbestätigung wird für die Form-Routine im SAPscript-Formular folgender Code generiert für den Aufruf der Form-Routine

 perform (co_perform-form) in program (co_perform-program)
   tables co_sym_using
          co_set_symbols
          if found.

Form-Routine

Schnittstelle

Die übergebenen Variablen stehen in einer Tabelle IN_TAB.

Die Output-/Changing-Variablen in einer Tabelle OUT_TAB.

Die Tabellen typisieren auf die Struktur ITSYS. Der übergebene Feldname steht im Feld „NAME“ und der Feldwert im Feld „VALUE“.

FORM mat_gewicht
  TABLES in_tab  STRUCTURE itcsy
         out_tab STRUCTURE itcsy.
 ...
ENDFORM.

ScriptPerform3.jpg

Auslesen Using-Parameter

Hier wird man oft auch nicht nur den „sy-subrc“ abfragen, sondern auch nach dem gefüllten Wert in „IN_TAB-VALUE“. Wenn man lediglich abfragt, ob der Using-Parameter übergeben wurde, ist der erfolgreiche sy-subrc fast selbstverständlich. Der gefüllte Wert in „IN_TAB-VALUE“ nicht.

ScriptPerform4.jpg

Füllen Changing-Parameter

Die Changing-Parameter der Output-Tabelle werden aktualisiert per "modify".

ScriptPerform5.jpg

oder (im anderen Kontext) zuerst leeren der Ausgabetabelle und dann füllen mit "append". Dies bietet sich an, wenn die Changing-Parameter in der Form-Routine initial gefüllt werden.

ScriptPerform7.jpg

Sammlung Form-Routinen (Sch)

Beispielprogramm = ZWM_FORMS_SUBROUTINES

ScriptPerform8.jpg

Beispiele (Sch)

  • Programm = ZWM_FORMS_SUBROUTINES, Form = READ_NAME1_FROM_LIFNR
  • SAPscript = ZMM_WESCHEINVERS
  • SAPscript = ZQM_PRUEFANW

Web-Links