SAP SFP: Eine Schritt-für-Schritt-Anleitung zur Erstellung und zum Aufruf von Formularen in ABAP

SAP SFP Formular-Kontext mit Schnittstellenparametern befüllen

SAP Smart Forms und Adobe Forms (SAP Interactive Forms by Adobe) sind entscheidende Werkzeuge in der SAP-Welt, um kundenindividuelle Dokumente und Berichte zu generieren. Während Smart Forms seit Langem etabliert sind, bieten Adobe Forms mit dem Sap Sfp (Formular-Builder) erweiterte Gestaltungsmöglichkeiten und eine verbesserte Integration. Dieser Artikel führt Sie detailliert durch den Prozess der Erstellung eines grundlegenden SFP-Formulars und dessen Aufruf aus einem ABAP-Report, um Ihnen einen praktischen Einstieg in diese mächtige Technologie zu ermöglichen.

Unser Ziel ist es, Ihnen nicht nur die technischen Schritte zu zeigen, sondern auch ein tiefes Verständnis für die zugrunde liegenden Konzepte zu vermitteln. So können Sie Ihre eigenen, wertvollen SAP SFP-Anwendungen entwickeln und Ihre Dokumentenprozesse optimieren.

1. Die Grundlagen von SAP SFP und Adobe Forms

SAP Interactive Forms by Adobe, oft einfach als Adobe Forms oder SAP SFP bezeichnet, stellt die moderne Lösung für die Formularerstellung in SAP-Systemen dar. Im Gegensatz zu älteren Technologien wie SAPscript oder Smart Forms basiert SFP auf dem Adobe LiveCycle Designer, einem externen Werkzeug, das eine intuitive grafische Oberfläche für das Layout-Design bietet. Dies ermöglicht es Entwicklern, anspruchsvolle und interaktive Formulare zu erstellen, die oft eine bessere Benutzererfahrung und eine höhere Flexibilität bieten.

Der Hauptvorteil von SAP SFP liegt in seiner Fähigkeit, dynamische und interaktive PDF-Dokumente zu generieren, die nicht nur gedruckt, sondern auch am Bildschirm ausgefüllt, gespeichert und digital signiert werden können. Dies ist besonders nützlich für Geschäftsprozesse, die eine papierlose Abwicklung erfordern. Bevor wir mit der praktischen Umsetzung beginnen, ist es wichtig zu verstehen, dass jedes SFP-Formular eine Schnittstelle benötigt, um Daten aus dem SAP-System zu empfangen.

2. Schritt für Schritt: Ein einfaches SFP-Formular erstellen

Die Erstellung eines SAP SFP-Formulars beginnt im Transaktionscode SFP und folgt einer klaren Struktur.

2.1. Anlegen einer Schnittstelle

Die Schnittstelle ist das Bindeglied zwischen Ihrem ABAP-Programm und dem Formular. Sie definiert, welche Daten das Formular empfangen kann.

  1. Öffnen Sie die Transaktion SFP.
  2. Wählen Sie “Schnittstelle” und geben Sie einen Namen für Ihre neue Schnittstelle ein (z.B. Z_SFP_TUTORIAL_INTERFACE). Klicken Sie auf “Anlegen”.
  3. Geben Sie eine kurze Beschreibung ein und wählen Sie als Schnittstellentyp “ABAP Dictionary-basierte Schnittstelle”. Dies ist der gängigste Typ für die Datenübergabe aus ABAP.

2.2. Parameter zur Schnittstelle hinzufügen

Als Nächstes definieren Sie die Import-Parameter, über die das ABAP-Programm Daten an die Schnittstelle übergeben wird.

  1. Wechseln Sie in den Reiter “Import”.
  2. Fügen Sie drei Parameter des Typs CHAR50 hinzu, z.B. LV_CHAR50_1, LV_CHAR50_2, LV_CHAR50_3. Diese werden später die Daten vom ABAP-Report erhalten.
  3. Speichern und aktivieren Sie die Schnittstelle.

2.3. Das Formular anlegen und den Kontext befüllen

Nachdem die Schnittstelle definiert ist, können Sie das eigentliche Formular erstellen und mit den Daten aus der Schnittstelle verknüpfen.

  1. Kehren Sie in der Transaktion SFP zurück und wählen Sie diesmal “Formular”. Geben Sie einen Namen ein (z.B. Z_SFP_TUTORIAL_FORM). Klicken Sie auf “Anlegen”.

  2. Geben Sie eine Beschreibung ein und weisen Sie die zuvor erstellte Schnittstelle (Z_SFP_TUTORIAL_INTERFACE) zu.

  3. Wechseln Sie in den Reiter “Kontext”. Hier sehen Sie die Import-Parameter aus Ihrer Schnittstelle. Ziehen Sie diese Parameter per Drag-and-Drop in den Bereich “Kontext”. Dadurch werden die Parameter für das Formularlayout verfügbar.

    SAP SFP Formular-Kontext mit Schnittstellenparametern befüllenSAP SFP Formular-Kontext mit Schnittstellenparametern befüllen

2.4. Layout-Typ auf “ZCI Layout” ändern

Der Layout-Typ “ZCI Layout” (Zero Client Installation) ist wichtig für die korrekte Integration mit dem Adobe LiveCycle Designer und ermöglicht die direkte Bearbeitung des Formularlayouts.

  1. Im Formular-Editor, unter dem Reiter “Layout”, finden Sie die Option “Layout-Typ”.

  2. Ändern Sie diesen von “Standard Layout” auf “ZCI Layout”.

    SAP SFP Layout-Typ auf ZCI Layout umstellenSAP SFP Layout-Typ auf ZCI Layout umstellen

2.5. Design im Adobe LiveCycle Designer

Jetzt beginnt die eigentliche Gestaltung des Formulars im Adobe LiveCycle Designer.

  1. Klicken Sie im Reiter “Layout” auf “Layout”. Dies startet den Adobe LiveCycle Designer (stellen Sie sicher, dass er installiert ist).
  2. Wählen Sie im Designer den Tab “Layout” und dann “Utilities” -> “Insert Web Dynpro Script”. Dies ist notwendig, wenn Sie interaktive Elemente verwenden möchten, auch wenn wir hier nur einfache Textfelder nutzen.
  3. Hinzufügen von Feldern:
    • Fügen Sie drei “ISR Text Edit”-Felder zu Ihrem Layout hinzu. Diese Felder sind für die Anzeige von Texten gedacht.
    • Wählen Sie im “Data View” (Datenansicht) auf der linken Seite die Parameter aus, die Sie im Kontext des Formulars definiert haben (LV_CHAR50_1, LV_CHAR50_2, LV_CHAR50_3).
    • Ziehen Sie jeden dieser Parameter auf eines der “ISR Text Edit”-Felder im Layout. Dadurch wird das Feld an den jeweiligen Parameter gebunden, sodass der Wert des Parameters im Formular angezeigt wird.
  4. Speichern Sie die Änderungen im Adobe LiveCycle Designer und schließen Sie ihn.

2.6. Formular aktivieren und testen

Bevor das Formular aus einem ABAP-Report aufgerufen werden kann, muss es aktiviert und idealerweise getestet werden.

  1. Im Formular-Editor in der Transaktion SFP speichern und aktivieren Sie das Formular.
  2. Drücken Sie F8 (Testen), um das Formular als Funktionsbaustein auszuführen.
  3. Geben Sie Testwerte für die drei Schnittstellenparameter ein (z.B. “Test Wert 1”, “Test Wert 2”, “Test Wert 3”).
  4. Notieren Sie sich den generierten Funktionsbaustein-Namen (z.B. /1BCDWB/SM00000205). Dieser Name wird benötigt, um das Formular aus Ihrem ABAP-Programm aufzurufen.
  5. Führen Sie eine Druckvorschau durch, um zu überprüfen, ob das Layout korrekt angezeigt wird.

3. Das SFP-Formular aus einem ABAP-Report aufrufen

Der Aufruf des SFP-Formulars aus einem ABAP-Report erfolgt über eine Standardsequenz von Funktionsbausteinen.

3.1. Die Funktionsbausteine FP_JOB_OPEN und FP_JOB_CLOSE

Bevor Sie das SFP-Formular aufrufen können, müssen Sie eine “Formular-Job-Umgebung” öffnen und nach dem Aufruf wieder schließen. Dies geschieht mit den Funktionsbausteinen FP_JOB_OPEN und FP_JOB_CLOSE.

  • FP_JOB_OPEN: Initialisiert den Formularprozess, setzt Ausgabeoptionen (z.B. Druckvorschau, Druckgerät, PDF-Typ).
  • FP_JOB_CLOSE: Schließt den Formularprozess und führt die eigentliche Formulargenerierung (z.B. Drucken oder PDF-Erzeugung) durch.

3.2. Der Aufruf des SFP-Funktionsbausteins

Der eigentliche Formularaufruf erfolgt über den Funktionsbaustein, dessen Name Sie beim Testen des Formulars erhalten haben.

3.3. Vollständiger ABAP-Code

Hier ist der ABAP-Code für einen Beispielreport, der das zuvor erstellte SAP SFP-Formular aufruft:

REPORT ytest_sfp_form.

START-OF-SELECTION.

  DATA: fp_outputparams TYPE sfpoutputparams,
        lv_char50_1     TYPE char50,
        lv_char50_2     TYPE char50,
        lv_char50_3     TYPE char50.

* 1. Output-Parameter für den Formular-Job setzen
  fp_outputparams-nodialog    = 'X'. " Keine Dialogbox für die Ausgabeoptionen
  fp_outputparams-preview     = 'X'. " Vorschau aktivieren
* fp_outputparams-fillable    = 'N'. " N: Nicht ausfüllbar (Standard für statische Forms)
  fp_outputparams-device      = 'PRINTER'. " Ausgabeziel: Drucker (kann auch ARCHIVE oder EMAIL sein)
  fp_outputparams-connection  = 'ADS'. " Verbindung zum Adobe Document Services
  fp_outputparams-bumode      = '-'. " Verarbeitung im Hintergrund
  fp_outputparams-dest        = 'LPDF'. " Logisches Ausgabeziel (z.B. LPDF für PDF-Vorschau)
  fp_outputparams-dataset     = 'PBFORM'. " Interner Parameter für Adobe Forms
  fp_outputparams-pdltype     = 'pdf'. " Page Description Language Typ: PDF
  fp_outputparams-xdcname     = 'acrobat6.xdc'. " XDC-Datei für die PDF-Konvertierung

* 2. Formular-Job öffnen
  CALL FUNCTION 'FP_JOB_OPEN'
    CHANGING
      ie_outputparams = fp_outputparams
    EXCEPTIONS
      cancel          = 1
      usage_error     = 2
      system_error    = 3
      internal_error  = 4
      OTHERS          = 5.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    " Geeignete Fehlerbehandlung implementieren
  ENDIF.

* 3. Daten für die Formularparameter füllen
  lv_char50_1 = 'Dies ist Parameter 1'.
  lv_char50_2 = 'Dies ist Parameter 2'.
  lv_char50_3 = 'Dies ist Parameter 3'.

* 4. Das SFP-Formular aufrufen (Funktionsbaustein-Name beim Testen des Formulars ermitteln!)
*    Ersetzen Sie '/1BCDWB/SM00000205' durch den tatsächlichen Namen Ihres generierten Funktionsbausteins.
  CALL FUNCTION '/1BCDWB/SM00000205'
    EXPORTING
      lv_char50_1 = lv_char50_1
      lv_char50_2 = lv_char50_2
      lv_char50_3 = lv_char50_3
    EXCEPTIONS
      OTHERS      = 1.
  IF sy-subrc <> 0.
    " Geeignete Fehlerbehandlung hier implementieren
  ENDIF.

* 5. Formular-Job schließen
  CALL FUNCTION 'FP_JOB_CLOSE'
    EXCEPTIONS
      usage_error    = 1
      system_error   = 2
      internal_error = 3
      OTHERS         = 4.
  IF sy-subrc <> 0.
    " Geeignete Fehlerbehandlung hier implementieren
  ENDIF.

Wichtiger Hinweis: Der Funktionsbaustein-Name /1BCDWB/SM00000205 ist ein generierter Name und wird in Ihrem System anders lauten. Verwenden Sie den Namen, den Sie beim Testen Ihres eigenen Formulars in Transaktion SFP erhalten haben!

4. Best Practices und Hinweise zur SAP SFP-Entwicklung

  • Namenskonventionen: Verwenden Sie aussagekräftige Präfixe (z.B. Z für kundeneigene Objekte), um eine klare Trennung zwischen Standard- und kundeneigenen Objekten zu gewährleisten.
  • Fehlerbehandlung: Implementieren Sie robuste Fehlerbehandlungsmechanismen in Ihrem ABAP-Code, um auf Probleme bei der Formulargenerierung reagieren zu können.
  • Performance: Achten Sie auf eine effiziente Datenbeschaffung in Ihrer Schnittstelle, um die Performance des Formulars nicht zu beeinträchtigen.
  • Versionierung: Nutzen Sie die Versionierungsfunktionen in SAP, um Änderungen an Schnittstellen und Formularen nachzuverfolgen.
  • Dokumentation: Dokumentieren Sie Ihre Schnittstellen, Formulare und den aufrufenden ABAP-Code sorgfältig, um die Wartbarkeit zu erleichtern.
  • Adobe Document Services (ADS): Stellen Sie sicher, dass die ADS korrekt auf Ihrem System konfiguriert sind, da sie für die Generierung von Adobe Forms unerlässlich sind.

Fazit

Die Erstellung und der Aufruf von Formularen mit SAP SFP sind ein grundlegender Bestandteil der modernen SAP-Entwicklung. Mit dieser detaillierten Anleitung haben Sie nun das Wissen und die praktischen Schritte an der Hand, um Ihr erstes einfaches Adobe Form zu implementieren. Die Flexibilität des Adobe LiveCycle Designers und die nahtlose Integration in ABAP eröffnen Ihnen zahlreiche Möglichkeiten zur Optimierung Ihrer Geschäftsdokumente.

Wir ermutigen Sie, das Gelernte zu vertiefen und eigene, komplexere Formulare zu gestalten. Experimentieren Sie mit interaktiven Elementen, verschiedenen Layouts und erweiterten Datenstrukturen, um das volle Potenzial von SAP SFP auszuschöpfen. Beginnen Sie noch heute, Ihre SAP-Formularprozesse auf das nächste Level zu heben!