SAP Adobe Forms in ABAP: Interface, Layout and Driver Program
Omkar Kakde · 4 July 2026 · 3 min read
Build an SAP Adobe Form step by step: the SFP interface, context and layout, and a driver program that calls the form with FP_JOB_OPEN and returns the PDF.
SAP Interactive Forms by Adobe, usually called Adobe Forms, turn SAP data into print-ready PDFs: invoices, payment advice, purchase orders, delivery notes and salary slips. Almost every ABAP project has form work, and every form is built from the same three pieces: an interface, a form layout and a driver program.
How the pieces fit
• The driver program reads the data from SAP tables.
• It hands the data to the interface , which defines what the form receives.
• The form maps that data into its context and places it on the layout.
• Adobe Document Services (ADS) renders the PDF.
Interface and form are both maintained in transaction SFP , and the interface comes first: a form cannot exist without one. If no PDF comes out at all, check the ADS destination in SM59 .
Step 1: Create the interface
In SFP , choose Interface and enter a name such as ZPAYADV_IF . SAP creates these nodes:
• Form Interface : the Import parameters the driver program sends, for a payment advice IS_HEADER (payment details) and IT_ITEMS (invoices paid).
• Global Definitions : your own types, variables and internal tables for the whole form.
• Initialization : ABAP code that runs before the form is filled, handy for totals or formatting.
• Currency/Quantity Fields : links amount and quantity fields to their currency or unit.
Step 2: Build the form and its layout
• In SFP , create a Form (for example ZPAYADV_FORM ) and assign the interface.
• On the Context tab, drag the interface parameters into the context. Only what is in the context reaches the layout.
• On the Layout tab (Adobe LiveCycle Designer), put page size, logo, header and footer on the Master Page , and the content on the body page in subforms , text fields and tables.
• Drag fields from the Data View palette onto the page; the binding is set for you.
Layout habits that save rework:
• Give a subform that holds a table Flowed content, so it grows and breaks across pages.
• Make the table row repeat for each data item of IT_ITEMS (Object palette, Binding tab), or only the first invoice prints.
• Keep the Hierarchy and Object palettes open; reopen a closed one from the Window menu.
Step 3: Write the driver program
Write it in SE38 or ADT. The generated function module has a different name in each system, so look it up with FP_FUNCTION_MODULE_NAME :
DATA: ls_outparams TYPE sfpoutputparams,
ls_docparams TYPE sfpdocparams,
ls_output TYPE fpformoutput,
lv_fm_name TYPE rs38l_fnam.
ls_outparams-preview = abap_true.
CALL FUNCTION 'FP_JOB_OPEN'
CHANGING
ie_outputparams = ls_outparams
EXCEPTIONS
OTHERS = 1.
TRY.
CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
EXPORTING
i_name = 'ZPAYADV_FORM'
IMPORTING
e_funcname = lv_fm_name.
CATCH cx_fp_api_repository cx_fp_api_usage cx_fp_api_internal.
RETURN.
ENDTRY.
ls_docparams-langu = sy-langu.
CALL FUNCTION lv_fm_name
EXPORTING
/1bcdwb/docparams = ls_docparams
is_header = ls_header
it_items = lt_items
IMPORTING
/1bcdwb/formoutput = ls_output
EXCEPTIONS
OTHERS = 1.
CALL FUNCTION 'FP_JOB_CLOSE'
EXCEPTIONS
OTHERS = 1.
Run it with F8 and the PDF opens in the preview. To email or store it instead, set getpdf and nodialog in ls_outparams ; the PDF then arrives as an xstring in ls_output-pdf .
Key takeaways
• Build in this order: interface, form, driver program.
• Only fields in the context can appear on the layout.
• Master page for page furniture, flowed subforms for content that grows.
• Call the form between FP_JOB_OPEN and FP_JOB_CLOSE , with its name from FP_FUNCTION_MODULE_NAME .
Want to build a complete form, from interface to PDF, with a trainer? See our SAP ABAP Development course .