Adobe Forms Part 2: SFP Form Design and Layout Basics
Design a form in SFP: create interface and form, drag context nodes into the layout, master pages vs body pages, content areas, subforms (positioned vs flowed), data binding, text fields, static text, fonts and first layout checks with preview.
Explanation
📌 KEY POINTS
✅ SFP has three tabs for a form: Properties, Context (what data is available) and Layout (Adobe LiveCycle Designer).
✅ Master pages define the page frame (header, footer, logo, content area); body pages hold the flowing content.
✅ Subforms group fields; "flowed" subforms grow with content, "positioned" ones keep fixed coordinates.
⚠️ Only data in the context is available in the layout — if a field isn't in the context, binding it in the layout does nothing.
━━━━━━━━━━━━━━━━━━━━
▶ WHERE WE ARE
Part 1 explained the architecture. Now we build a simple invoice form.
━━━━━━━━━━━━━━━━━━━━
▶ 1. CREATE INTERFACE AND FORM
- SFP → Interface ZAF_INV_IF (ABAP dictionary-based): import IS_HEADER, IT_ITEMS.
- SFP → Form ZAF_INVOICE assigned to ZAF_INV_IF.
━━━━━━━━━━━━━━━━━━━━
▶ 2. CONTEXT
- Drag interface parameters into the context (IS_HEADER, IT_ITEMS).
- Deactivate unneeded fields to keep the data sent to ADS small.
- Add text nodes, graphics, conditions if needed (Part 7).
━━━━━━━━━━━━━━━━━━━━
▶ 3. LAYOUT (LIVECYCLE DESIGNER)
- Data View: shows the context; drag fields onto the page to create bound fields.
- Master page: page size (A4/Letter), margins, content area (where body content flows), static header/footer, page numbers.
- Body page: subforms containing fields and tables.
━━━━━━━━━━━━━━━━━━━━
▶ 4. SUBFORMS
- Positioned: fields at fixed x/y — for header blocks.
- Flowed (top-to-bottom): content grows — required for tables and variable text.
- Allow page breaks within content for long flowed subforms.
━━━━━━━━━━━━━━━━━━━━
▶ 5. BINDING
Object palette → Binding tab: field bound to $.IS_HEADER.VBELN (or via drag and drop). Tables bind rows to $.IT_ITEMS.DATA[*].
━━━━━━━━━━━━━━━━━━━━
▶ 6. PREVIEW
- SFP → Layout → Preview PDF (with sample data if defined).
- Test (F8) of the form runs the generated FM with manually entered data.
━━━━━━━━━━━━━━━━━━━━
▶ STEP BY STEP
- Create the interface and form described above.
- Drag VBELN, FKDAT and the item table into the layout.
- Activate and test with F8; check the PDF preview.
✅ CHECKPOINT: you can build a basic Adobe Form with bound fields and a flowing body.
Code example
* ===== SFP objects =====* Interface ZAF_INV_IF (ABAP Dictionary-Based Interface)* Import: IS_HEADER TYPE ZAF_INV_HEADER* IT_ITEMS TYPE ZTT_INV_ITEMS* Global data: GV_TOTAL TYPE NETWR* Initialization code (runs before rendering):DATA ls_item TYPE zaf_inv_item.CLEAR gv_total.LOOP AT it_items INTO ls_item. gv_total = gv_total + ls_item-netwr.ENDLOOP.* (declare IT_ITEMS as input and GV_TOTAL as output of the initialization) * Form ZAF_INVOICE (interface ZAF_INV_IF)* Context: IS_HEADER (VBELN, FKDAT, NAME1, WAERK), IT_ITEMS (all printable fields), GV_TOTAL* Layout :* Master page "Page1" A4, content area 18 x 22 cm, footer with page number* Body page "Body"* Subform HEADER (positioned) Invoice &VBELN&, date &FKDAT&, customer &NAME1&* Subform ITEMS (flowed) table bound to $.IT_ITEMS.DATA[*]* Subform TOTAL (positioned) total bound to $.GV_TOTAL * ===== Binding examples (Object palette -> Binding) =====* Text field Invoice No : $.IS_HEADER.VBELN* Table row Item : $.IT_ITEMS.DATA[*] (repeat row for each data item)* Cell Amount : NETWR (relative to the row binding)Real project scenario
A new invoice form printed the item table only on page 1; items beyond the page were lost. The table sat in a positioned subform, which cannot grow or break across pages.
Changing the parent subform to "flowed" and allowing page breaks let the table continue on following pages, with the master page repeating the header and footer automatically.
Common mistakes
- Layout fields bound to data not in the context.
- Tables in positioned subforms (no page break).
- Too much data in context (slow rendering).
- Content area overlapping header/footer.
- Not testing with long documents.
Best practices
- Keep context minimal and purposeful.
- Master pages for frame, body pages for content.
- Flowed subforms for dynamic content.
- Use preview and F8 test early.
- Name subforms and fields meaningfully.
Interview angle
Questions: "What are master and body pages?", "Positioned vs flowed subforms?", "What is the context?"
Strong answer: SFP interface + form; context selects interface data for the layout; LiveCycle Designer layout with master pages (page frame, content area, header/footer) and body pages (content); subforms positioned (fixed) or flowed (grow, page breaks) — tables need flowed; binding via $.PARAM.FIELD and DATA[*] for rows.
Practice this lesson
Quick check
1. An item table stops at the end of page 1 in an Adobe Form. Most likely cause?
2. In Adobe LiveCycle Designer, how is a layout field ultimately connected to the data supplied by the ABAP print program?
3. Which XML-based standard underlies the layout and scripting logic created in Adobe LiveCycle Designer for SAP Adobe Forms?
Interview questions
1. A purchase order PDF prints correctly for short orders but cuts off items for long orders. What is wrong in the SFP layout?
Answer it in your own words first, then compare.
2. Corporate rebrand — 200 forms need new logo and header. Approach?
Answer it in your own words first, then compare.
Reference-verified: the steps are checked against official SAP documentation and tutorials, and object and field names in the sample code are checked for consistency. The code has not been compiled or run on an SAP system by ERPClimb. Syntax marked release-dependent varies by SAP release, so check it in your own system.
More lessons in this topic
- Adobe Forms Part 1: What SAP Interactive Forms by Adobe Are
- Adobe Forms Part 10: Migrating Smart Forms to Adobe Forms
- Adobe Forms Part 3: Print Runs, Interactive Forms and Troubleshooting Overview
- Adobe Forms Part 4: Interface and Context Design
- Adobe Forms Part 5: The Driver Program Pattern
- Adobe Forms Part 6: Tables, Subforms and Repeating Item Data
- Adobe Forms Part 7: Texts, Logos, Barcodes and Images
- Adobe Forms Part 8: Output Parameters, PDF Return and Spool Handling