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
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.
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 sy–subrc <> 0. MESSAGE ID sy–msgid TYPE sy–msgty NUMBER sy–msgno WITH sy–msgv1 sy–msgv2 sy–msgv3 sy–msgv4. 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.
Ein Kommentar zu "Formularnamen dynamisch ermitteln mit Smartforms oder AIF"
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?