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 .