Prüfen und Testen eines Smart Forms
Die Aktivierung eines Smart Forms setzt fehlerlose Einzelknoten sowie ein fehlerfreies Zusammenspiel der Knoten untereinander voraus. Deshalb existieren eine Vielzahl von Prüfmöglichkeiten.
Um ein Smart Form nutzen zu können, müssen Sie es aktivieren. Beim Aktivieren erfolgt zunächst eine Prüfung des gesamten Formulars (Summe aller Einzelprüfungen). Werden durch diese Prüfung keine Fehler gefunden, so wird das Formular aktiviert, d.h. ein neuer Funktionsbaustein generiert.
Zudem besitzt deder Knoten bzw. jede Registerkarte eine eigene Prüffunktion (Drucktaste Prüfen
auf der Registerkarte). Diese Prüffunktion ist stets eine lokale Prüfung für den aktuellen Knoten bzw. die entsprechende Registerkarte. Welche Prüfungen im einzelnen
erfolgen, hängt von der Art des Knotens ab. Es werden die Bedingungen überprüft, die bereits bei der Behandlung der einzelnen Knoten in den vorangegangenen Abschnitten genannt wurden.
Außerdem existiert in der Anwendungsfunktionsleiste die Drucktaste Prüfen
, die eine Gesamtprüfung des Formulars, d.h. alle vorhandenen Einzelprüfungen durchführt sowie einige spezielle Prüfungen, die nur im Gesamtzusammenhang einen Sinn ergeben. Im Ergebnis dieser
Gesamtprüfung wird eine Fehlerliste ausgegeben (siehe auch Feldliste und Fehlerliste).
Hinweis
Bei der Gesamtprüfung wird nur der erste Fehler als Meldung ausgegeben, falls der Fehler in der Schnittstelle oder in den globalen Daten auftritt. Dann ist es unmöglich gültige Einzelprüfungen durchzuführen (Folgefehler).
Das System überprüft, ob ein bestimmtes Feld, das in einem Text verwendet wird, zum Zeitpunkt der Ausgabe des Textes in einem Fenster des Formulars einen definierten Wert besitzt. Diese Überprüfung wird als Datenflußanalyse bezeichnet. Die Datenflußanalyse ist Bestandteil der Gesamtprüfung des Formulars (siehe oben).
Nach einer Änderung in der Ausgabesteuerung kann überprüft werden, ob alle ausgegebenen Daten noch einen definierten Wert besitzen, oder ob durch die Änderung ein Zustand erreicht wurde, bei dem einige Daten bei ihrer Ausgabe noch initial sind.
Es wird angenommen, daß ein Feld an einem Knoten einen definierten Wert hat, wenn eine der folgenden Bedingungen erfüllt ist.
Das Feld gehört zur Formularschnittstelle.
Das Feld ist global definiert und taucht als Ausgabeparameter in einem Coding-Knoten auf, der zuvor abgearbeitet wurde.
Das Feld ist global definiert und gehört zur Kopfleiste einer Datentabelle, für die in einem Abschnitt wiederholte Abarbeitung vereinbart wurde.
Die Datenflußanalyse kann bei global definierten Feldern zu drei verschiedenen Ergebnissen kommen:
Das Feld besitzt einen definierten Wert
Das Feld besitzt keinen definierten Wert
Das Feld kann einen definierten Wert besitzen. Dieser Fall tritt z.B. auf, wenn zuvor eine Alternative abgearbeitet wurde, und dem Feld nur in einem Zweig der Alternative ein Wert zugewiesen wird.
Es wird für alle Knoten festgestellt, ob die verwendeten Felder definierte Werte haben, und Verstöße dagegen werden in einer Liste von Warnungen bereitgestellt (siehe auch Feldliste und Fehlerliste). Diese Warnungen führen nicht zum Abbruch der Aktivierung bzw. Generierung.
Sie können prüfen, ob alle im Text vorkommenden Felder in der Formularschnittstelle bzw. in den globalen Daten des Formulars deklariert sind. Wählen Sie hierzu im Knotentyp Text Prüfen
.
Bei Textbausteinen und Include-Texten ist es möglich über das Systemfeld SFSY-SUBRC zur Laufzeit zu testen, ob der Baustein beziehungsweise Include-Text im system vorhanden ist.
Zum Testen eines Smart Forms verwenden Sie den Funktionsbausteintest. Hierzu wählen Sie nach dem Aktivieren eines Smart Forms Testen
. Sie gelangen auf das Einstiegsbild des Function Builders (Transaktion SE37) und von dort mit Einzeltest
in
den Testmodus für den generierten Funktionsbaustein verzweigt. Jetzt können alle Möglichkeiten des Function Builders zum Einzeltest von Funktionsbausteinen genutzt werden.
Hinweis
Da das Anwendungsprogramm für die Datenbeschaffung dabei nicht aufgerufen wird, wird das Smart Form nicht mit Daten versorgt. Ansonsten müssen Sie das entsprechende Anwendungsprogramm ausführen.
Zusätzlich zum Test eines Smart Form können sie über den Smart Forms Trace die Prozessierung des Smart Form verfolgen.
Jedes Smart Form kann bei seiner Abarbeitung eine Reihe von Ausnahmen auslösen. Um die Zahl der Ausnahmen nicht zu groß werden zu lassen, werden die auftretenden Fehler in Fehlerklassen gebündelt und in einem Fehlerlog im Composer hinterlegt. Zu jedem Fehler wird neben der Fehlerklasse auch eine interne Fehlernummer und (falls möglich) eine Nachricht aus der Tabelle T100 (Arbeitsgebiet, Nachrichtennummer, Nachrichtentext und Parameter) hinterlegt. Jeder Fehlerklasse ist eine Ausnahme zugeordnet, d.h. muß der erkannte Fehler zum Abbruch der Formularprozessierung führen, so wird genau diese Ausnahme ausgelöst. Der Aufrufer des Smart Forms kann bei Ausnahmen sich über vorgegebene Funktionsbausteine den Fehlerlog besorgen und dann selbst entscheiden, welche Reaktion auf bestimmte Fehler in seinem Kontext angemessen ist.
Mögliche Ausnahmen des generierten Funktionsbausteins sind:
FORMATTING_ERROR
INTERNAL_ERROR
SEND_ERROR
USER_CANCELED
Zusätzlich definierte Ausnahmen sind möglich.
Tritt ein Fehler (oder eine Warnung) auf, wird intern eine Fehlertabelle gefüllt. Diese Tabelle kann von der Anwendung angefordert werden, sobald der Funktionsbaustein zum Formular beendet wurde. Die Tabelle mit allen aufgetretenen Warnungen und Fehlern erhalten Sie durch Aufruf des Funktionsbausteins SSF_READ_ERRORS. Die Übergabetabelle hat die Struktur SSFERROR. Als Felder sind enthalten die Nummer des Dokuments innerhalb des Jobs, der Formularname, eine Fehlernummer, Nachrichtenklasse, Nachrichtentyp, Nachrichtennummer sowie 4 weitere Nachrichtenvariable. Tritt ein Abbruch auf, kann die Anwendung dynamisch eine Message ausgeben. Die Fehlernummern sind im Include SSF_ERROR definiert.
Möchten Sie innerhalb des Smart Forms selbst im freien Coding eine Ausnahme auslösen, so gibt es zwei Möglichkeiten:
Sie verwenden das Makro user_exception <Ausnahme>, welches die Ausnahme <Ausnahme> auslöst und die obigen Tabellen füllt. Nach dem Abbruch enthalten zusätzliche Systemvariablen zum Fehler (sy-msgno, sy-msgtyp, etc.) nicht die gewünschten Werte zur eigenen Ausnahme.
Falls Sie Sie direkt auf die Systemvariablen sy-msgno, sy-msgtyp, etc. zu Ihrer Ausnahme zugreifen möchten, gehen Sie folgendermaßen vor: Sie rufen den Funktionsbaustein SSF_MESSAGE auf und lösen ihre Ausnahme mit der Anweisung RAISE selbst aus.