Quantcast
Channel: mind-forms » SMARTFORMS
Viewing all articles
Browse latest Browse all 28

Formularnamen dynamisch ermitteln mit Smartforms oder AIF

$
0
0

Bei der Entwicklung von Formularen mit Smartforms oder Adobe Interactive Forms (AIF, auch bekannt unter SAP Interactive Forms by Adobe), wird jeweils ein eindeutiger Name für das Formular bei der Erstellung vergeben. Über diesen eindeutigen Name kann das Formular immer zur Bearbeitung geöffnet werden. Zum Aufruf im Druckprogramm wird jedoch ein anderer Name benötigt, nennen wir ihn den internen Name des Formulars. Beim Transport des Formulars in andere Systeme und auch schon bei jeder Änderung am Formular die gespeichert wird, ändert sich allerdings der interne Name und das Formular kann nicht mehr durch das Druckprogramm aufgerufen werden. In diesem Beitrag erklären wir Ihnen deshlab, wie Sie Formularnamen dynamisch ermitteln lassen und das Problem lösen.

Formularnamen dynamisch ermitteln

Nachdem das Formular erstellt wurde, soll es natürlich über ein Druckprogramm auch aufgerufen werden. Der Aufruf des Formulars erfolgt normalerweise wie der eines Funktionsbausteins mit „CALL FUNCTION ‚<Formularname>'“. Genau an dieser Stelle kommt es nach dem Transport aber zu Fehlern, da der interne Name des Formulars sich ändert und es dadurch nicht mehr gefunden wird.
Formularnamen dynamisch ermitteln
Dieser Fehler ist einfach zu Umgehen indem der interne Formularname dynamisch ermittelt wird. Dazu gibt es den Funktionsbaustein „FP_FUNCTION_MODULE_NAME“. Diesem übergibt man den Formularname, also den Name, der genutzt wird um das Formular für die Bearbeitung zu öffnen. Er gibt dann den internen Name des Formulars zurück. Diesen kann man anschließend zum Aufrufen des Formulars verwenden.

* Formularaufruf
CALL FUNCTION ‚FP_FUNCTION_MODULE_NAME‘
  EXPORTING
    i_name                     ‚ZAIF_FORM_UEBUNG1_MM‘
 IMPORTING
   e_funcname                 lv_fmname
          .

CALL FUNCTION lv_fmname
  EXPORTING
    /1bcdwb/docparams  ls_docpar
    lt_buchungen       lt_buchungen
    lv_gesellschaft    lv_gesellschaft
    lv_url             lv_url
    lv_fldatum         lv_fldatum

  IMPORTING

    /1bcdwb/formoutput ls_form

  EXCEPTIONS

    usage_error        1

    system_error       2

    internal_error     3

    OTHERS             4.

IF sysubrc <> 0.

  MESSAGE ID symsgid TYPE symsgty NUMBER symsgno

          WITH symsgv1 symsgv2 symsgv3 symsgv4.

ENDIF.

Sicherlich kann hier nun die Frage aufkommen, ob die gesamte Schnittstelle selber geschrieben werden muss. Das ist nicht der Fall, denn dort hilft ein einfacher Trick:

Über Muster kann der Funktionsbaustein im Entwicklungssystem mit dem bekannten internen Name aufgerufen werden. Dadurch wird der Aufruf samt Schnittstelle eingefügt. Nun kann der interne Name durch das Datenfeld mit dem, über „FP_FUNCTION_MODULE_NAME“ ermittelten, Name ersetzt werden.

Ihre Meinung zum Thema ‚Formularnamen dynamisch ermitteln‘

Haben auch Sie sich schon einmal gewundert, warum ein Formular nach dem Transport auf einmal nicht mehr funktionierte? Mit welchen Problemen haben Sie sonst noch beim Transport von Formularen zu kämpfen? Schreiben Sie einen Kommentar und wir werden Ihnen weiterhelfen.

Der Beitrag Formularnamen dynamisch ermitteln mit Smartforms oder AIF erschien zuerst auf mind-forms.


Viewing all articles
Browse latest Browse all 28