Dynamischer Funktionsbaustein
Siehe Dynamische/Generische Programmierung.
Siehe Kategorie: Dynamische/Generische Programmierung.
Bei dynamischen Funktionsbausteinaufrufen kann die Parameterschnittstelle des Funktionsbausteins bekannt sein oder nicht. Hier gibt es unterschiedliche Vorgehensweisen.
Dynamischer Funktionsbaustein mit bekannter Parameterschnittstelle
Eine typische Anwendung für die dynamische Bestimmung von Funktionsbausteinen ist der Druckformularaufruf bei den Formular-Technologien Smart Forms und Adobe Forms.
Hier im Beispiel wird zu einem Smart Forms-Formular ZREBADRESSEN ein Funktionsbaustein ermittelt - der in jedem SAP-System (Entwicklungs-, Qualitäts- und Produktivsystem) unterschiedlich sein wird. Der ermittelte Name des Funktionsbausteins wird in der Variablen LV_FM_NAME gespeichert.
Die Parameterschnittstelle des Funktionsbausteins ist hier jedoch bekannt.
DATA: lv_fm_name TYPE rs38l_fnam.
CONSTANTS: con_form TYPE ssfscreen-fname VALUE 'ZREBADRESSEN'.
* Es wird der von Smartforms generierte Funktionsbaustein ermittelt
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = con_form "Smart Forms Name
IMPORTING
fm_name = lv_fm_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Ermittlung technische Bezeichnung Smartforms nicht erfolgreich
MESSAGE i531(0u) WITH text-096.
EXIT.
ENDIF.
Mit CALL FUNCTION LV_FM_NAME wird dynamisch der korrekte Funktionsbaustein aufgerufen.
CALL FUNCTION lv_fm_name
EXPORTING
output_options = ls_params1
it_text = gt_data_tab
IMPORTING
document_output_info = ls_document_output_info
job_output_info = ls_job_output_info
job_output_options = ls_job_output_options
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'W' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Dynamischer Funktionsbausteinaufruf mit zur Laufzeit bestimmter Parameterschnittstelle
- Bei www.irrational-reality.com ist beschrieben wie man einen Funktionsbaustein aufruft, dessen Parameterschnittstelle erst zur Laufzeit des Programms bekannt ist.