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.