FORM subroutine
[TABLES { itab [typing] } ]
[USING { [parameter | VALUE(parameter)] [typing] }]
[CHANGING { [parameter | VALUE(parameter)] [typing] }].
Diese Anweisung definiert ein Unterprogramm. Es endet mit der Anweisung
ENDFORM. Dem
Unterprogramm können sowohl interne Tabellen als auch Felder und
Feldleisten als Parameter übergeben werden. Die Zuordnung der
aktuellen zu den formalen Parametern erfolgt entsprechend der Reihenfolge
der Parameter beim Aufruf des Unterprogramms. Zur Unterscheidung der
Parameter ist einer der Zusätze TABLES für
interne Tabellen sowie USING und CHANGING
für Feldparameter erforderlich. Parameter werden prinzipiell als
Referenzparameter behandelt, erst der Zusatz VALUE
erzwingt die Behandlung als Wertparameter.
Alle Parameter können mit zusätzlichen Typangaben versehen
werden. Zur Laufzeit wird geprüft, ob der aktuelle Parameter den
erforderlichen Typ besitzt. Die möglichen Optionen zur Typisierung
zeigt die folgende Tabelle.
| Typisierungs-Option | Wirkung | für einfache Parameter | für interne Tabellen |
| STRUCTURE record | Der Parameter entspricht dem Aufbau von record. | Ja | Ja |
| TYPE typ | Der Parameter hat den angegebenen Typ. | Ja | Ja |
| TYPE LINE OF itab | Der Parameter hat die Struktur eines Datensatzes der kopfzeilenlosen Tabelle itab. | Ja | Nein |
| LIKE field | Der Parameter hat die Eigenschaften und den Typ von field. | Ja | Nein |
| LIKE LINE OF itab | Der Parameter hat die Struktur der internen Tabelle itab. | Ja | Nein |
| TYPE TABLE | Der aktuelle Parameter muß eine Tabelle ohne Kopfzeile sein. | Ja | Ja |
| TYPE ANY | Jeder Typ ist zugelassen. | Ja | Nein |
| TYPE REF TO class | Der Parameter ist eine Referenz auf ein Objekt der angegebenen Klasse. | Ja | Nein |
| TYPE REF TO DATA | Der Parameter ist eine Datenreferenz. | Ja | Nein |
| TYPE [ ANY | INDEX | STANDARD| SORTED | HASHED ] TABLE | Der Parameter ist eine Tabelle des angegebenen Tabellentyps. | Nein | Ja |