Dynamischer Funktionsbaustein

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

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.

Web-Links