* https://www.berater-wiki.de/Aufruf_des_Adobe_Formulars_im_Rahmenprogramm
* https://wiki.scn.sap.com/wiki/display/ABAP/Adobe+Forms+from+Scratch
* Hilfsfunktionen für Adobe Forms
INCLUDE fp_utilities.
* Formularname
DATA(lv_form) = CONV fpname( 'ZADOBE_FORM_NAME' ).
* Name für generierten Funktionsbaustein
DATA: lv_funcname TYPE funcname.
DATA: lv_interface_type TYPE fpinterfacetype.
TRY.
* Namen des Funktionsbausteins für ein Formular bestimmen
CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
EXPORTING
i_name = lv_form
IMPORTING
e_funcname = lv_funcname
e_interface_type = lv_interface_type.
DATA: lv_outputparams TYPE sfpoutputparams.
** Output Parameter für neues Interface
** Druckerdialog ausblenden
* lv_outputparams-nodialog = 'X'.
** Druckvorschau
* lv_outputparams-preview = 'X'.
** Druckbutton ausblenden
* lv_outputparams-noprint = 'X'.
** Druckvorschaubutton ausblenden
* lv_outputparams-nopreview = 'X'.
** Name Ausgabegerät (Drucker)
* lv_outputparams-dest = 'LP01'.
* lv_outputparams-nopdf =
** Spoolsteuerung
** Neuen Spoolrequest anlegen
* lv_outputparams-reqnew = 'X'.
** Spoolrequest schließen
* lv_outputparams-reqfinal = 'X'.
* PDF XSTRING anfordern
lv_outputparams-getpdf = 'X'.
** XFP Settings für Externes Interface
* lv_outputparams-xfp =
** Context
* lv_outputparams-xfptype =
* lv_outputparams-xfpoutdev =
* Formularprozessierung: Job beginnen
CALL FUNCTION 'FP_JOB_OPEN'
CHANGING
ie_outputparams = lv_outputparams
EXCEPTIONS
cancel = 1
usage_error = 2
system_error = 3
internal_error = 4
OTHERS = 5.
IF sy-subrc = 0.
DATA(lv_docparams) = VALUE sfpdocparams( langu = 'D' country = 'DE' ).
DATA: lv_formout TYPE fpformoutput.
* Funtionsbaustein aufrufen
CALL FUNCTION lv_funcname
EXPORTING
/1bcdwb/docparams = lv_docparams
* ggf. spez. Parameter für Funktionsaufruf hier aufführen
* siehe Transaktion SFP (Form Builder)
IMPORTING
/1bcdwb/formoutput = lv_formout
EXCEPTIONS
usage_error = 1
system_error = 2
internal_error = 3
OTHERS = 4.
IF sy-subrc = 0.
* xstring mit PDF-Daten
DATA(lv_pdf_raw) = lv_formout-pdf.
* hier weitere Verarbeitung
...
ELSE.
* wenn Fehler beim ADS-Aufruf
DATA: lv_error_string TYPE string.
CALL FUNCTION 'FP_GET_LAST_ADS_ERRSTR'
IMPORTING
e_adserrstr = lv_error_string.
IF NOT lv_error_string IS INITIAL.
* detaillierte Fehlermeldung ausgeben
WRITE: / lv_error_string COLOR COL_NEGATIVE.
ELSE.
* sonst nur eine unspezifische Fehlermeldung ausgeben
WRITE: / 'Error within Form Call : ', sy-subrc COLOR COL_NEGATIVE.
ENDIF.
ENDIF.
DATA: lv_result TYPE sfpjoboutput.
* Formularprozessierung: Job beenden
CALL FUNCTION 'FP_JOB_CLOSE'
IMPORTING
e_result = lv_result
EXCEPTIONS
usage_error = 1
system_error = 2
internal_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
* Fehler beim Beenden der Formprozessierung
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ELSE.
* Formprozessierung kann nicht gestartet werden
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CATCH cx_root.
WRITE : / 'Fehler beim Ermitteln des Funktionsbausteinnamens.'.
ENDTRY.