Das Smart Form in die Anwendung integrieren
Der Druck des Formulars wird durch den Aufruf von nur zwei Funktionsbausteinen angestoßen. Der erste ermittelt über den Namen des Formulars den Namen des generierten Funktionsbausteins. Diesen rufen Sie dann auf.
Achtung
Der Name des generierten Funktionsbausteins ist nur in einem System eindeutig. Daher muß immer zuerst der Funktionsbaustein aufgerufen werden, der dessen aktuellen Namen über den Namen des Formulars ermittelt.
Sie haben in Ihrem Formular die Formularschnittstelle definiert und das Formular aktiviert.
Rufen Sie im Form Builder die Funktion des Funktionsbausteins auf und kopieren Sie sich mit STRG-Y und STRG-C den Namen.
Definieren Sie im Anwendungsprogramm eine Variable vom Typ RS38L_FNAM für den Namen des generierten Funktionsbausteins:
Syntax
data fm_name type RS38L_FNAM.
Hinweis
Sie können das Smart Form auch an anderen Stellen des Anwendungsprogramm aufrufen. Dann müssen Sie dafür sorgen, daß man auf die zu übergebenen Daten an dieser Stelle zugreifen kann. Es wird empfohlen, auch die Datenbeschaffung in einem Funktionsbaustein zu kapseln.
Optional können Sie den Funktionsbaustein SSF_FIELD_LIST aufrufen. Er gibt Ihnen zu einem Formular eine Liste der Formular-Parameter zurück, die tatsächlich im Formular verwendet werden. Mit dieser Information schränken Sie gegebenenfalls die Datenselektion ein.
Rufen Sie den Funktionsbaustein SSF_FUNCTION_MODULE_NAME auf. Er gibt den Namen des generierten Funktionsbausteins zurück:
Syntax
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = '<Formularname>'
IMPORTING
FM_NAME = fm_name
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
<Fehlerbehandlung>
ENDIF.
Hinweis
Falls das Formular inaktiv ist, löst SSF_FUNCTION_MODULE_NAME die Ausnahme NO_FORM aus. In zwei Fällen generiert sich der Funktionsbaustein selbständig eine aktive Fassung:
Nach einem Transport in ein anderes System
Wenn Sie die Formularschnittstelle eines schon mal aktivierten Formulars geändert haben
Rufen Sie den generierten Funktionsbaustein auf. Verwenden Sie dazu die Muster-Funktion für CALL FUNCTION im ABAP Editor und verwenden Sie den Namen, den Sie im ersten Schritt kopiert haben (auf diese Weise brauchen Sie nicht alle Schnittstellenparameter per Hand übertragen). Dann ersetzen Sie den Funktionbausteinnamen durch die im zweiten Schritt definierte Variable fm_name:
Syntax
CALL FUNCTION fm_name
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_PARAMETERS =
* CONTROL_PARAMETERS =
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
* OUTPUT_OPTIONS =
* USER_SETTINGS = 'X'
G_CARRID = <Variable>
G_CONNID = <Variable>
G_FLDATE = <Variable>
* IMPORTING
* DOCUMENT_OUTPUT_INFO =
* JOB_OUTPUT_INFO =
* JOB_OUTPUT_OPTIONS =
TABLES
GT_SBOOK = <interne Tabelle>
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
<Fehlerbehandlung>
ENDIF.
Hinweis
In diesem Beispiel werden drei Variablen und eine interne Tabelle übergeben. Die Parameter G_CARRID, G_CONNID, G_FLDATA und GT_SBOOK sind vorher in der Formularschnittstelle definiert worden.
Übergeben Sie an der Schnittstelle alle Daten, die Sie an das Formular übergeben möchten.
Der generierte Funktionsbaustein arbeitet die in dem Smart Form definierte Formularlogik ab. Dessen Ausgabe wird an die Spool-Verarbeitung weitergeleitet.
Solange Sie die Formularschnittstelle nicht ändern, können Sie das Formular weiter bearbeiten. Wenn Sie es erneut aktivieren, wird mit dem Funktionsbaustein-Aufruf die aktuelle Version des Formulars erzeugt. Nur bei Änderungen der Formularschnittstelle müssen Sie die Schnittstelle im Anwendungsprogramm anpassen.