Alex Wiefel
 - 9. Juni 2014

Formularnamen dynamisch ermitteln mit Smartforms oder AIF

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.

Projektleitung, Projektbegleitung oder einfach nur Unterstützung in der Entwicklung. Unsere Mitarbeiter haben langjährige Erfahrungen in der SAP Formulargestaltung und Sie können von unserem gesamten Knowhow profitieren. Unser passendes Angebot finden sie hier: Formular-Experten von MINDFORMS buchen

E-Book Smartforms

In diesem E-Book erfahren Sie mehr über die Smartforms-Funktionen, Stärken und Schwächen und erhalten Best Practices zur Einführung. 

Kontaktieren Sie mich: Telefon 0211 946 285 72-35 oder per E-Mail info@mindforms.de
In einem unverbindlichen Gespräch kann ich mit Ihnen über Ihre Ausgangslage sprechen und Ihnen Möglichkeiten aufzeigen. Selbstverständlich können wir danach auch ein unverbindliches Angebot unterbreiten.

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.

Alex Wiefel

Mein Name ist Alex Wiefel und ich bin begeisterter SAP Consultant bei mindsquare. Wie meine Kollegen habe ich mein Hobby zum Beruf gemacht.

Sie haben Fragen? Kontaktieren Sie mich!




Das könnte Sie auch interessieren


Ein Kommentar zu "Formularnamen dynamisch ermitteln mit Smartforms oder AIF"

Martina - 20. August 2015 | 21:43

Ich habe ein Problem damit, dass meine Standardvariablen und -texte von der Quellsprache nicht in die Zielsprache kopiert werden, können sie mir da einen Tipp geben?

Antworten

Schreiben Sie einen Kommentar

Bitte füllen Sie alle mit * gekennzeichneten Felder aus. Ihre E-Mail Adresse wird nicht veröffentlicht.





Angebot anfordern
Preisliste herunterladen
Expert Session
Support