Adobe Forms Part 7: Texts, Logos, Barcodes and Images
Add non-tabular content to Adobe Forms: text modules and include texts in the context, dynamic texts, logos from MIME repository or graphics (SE78), images passed as xstring, barcodes as layout objects bound to data, and fonts/printer considerations.
Explanation
📌 KEY POINTS
✅ Texts come into the layout via context nodes: text modules (reusable, translatable), include texts (SO10/document texts), or dynamic text fields from ABAP.
✅ Logos: graphic nodes in the context (SE78 graphics or MIME repository) or embedded static images in the layout; dynamic images as xstring fields bound to image fields.
✅ Barcodes are layout objects (e.g. Code 128, QR, DataMatrix) bound to a data field — rendered by ADS, no special printer font needed.
⚠️ Embedding large static images makes every PDF heavy; use appropriately sized graphics and reference them via context where possible.
━━━━━━━━━━━━━━━━━━━━
▶ WHERE WE ARE
Part 6 handled tables. Real forms also need legal texts, logos and barcodes.
━━━━━━━━━━━━━━━━━━━━
▶ 1. TEXTS
- Text node in context: type text module (SMARTFORMS text module usable in Adobe context), include text (object/ID/name/language, e.g. VBBK/0002/&IS_HEADER-VBELN&).
- Dynamic text built in ABAP (e.g. formatted address lines) passed as strings.
- Language follows SFPDOCPARAMS-LANGU.
━━━━━━━━━━━━━━━━━━━━
▶ 2. LOGOS AND GRAPHICS
- SE78: upload BMP/TIFF graphics (object GRAPHICS, ID BMAP); context graphic node references name and type.
- MIME repository (SE80): image files referenced by URL in the context graphic node.
- Static image in layout: embedded — acceptable for a small, fixed logo.
- Dynamic images (e.g. signature, product picture): pass as XSTRING, bind to an image field with MIME type.
━━━━━━━━━━━━━━━━━━━━
▶ 3. BARCODES
- LiveCycle Designer library: Code 128, Code 39, EAN-13, QR Code, PDF417, DataMatrix …
- Bind to a field (e.g. $.IS_HEADER.VBELN); set symbology options (check digit, size).
- ADS renders barcodes into the output (PDF or printer stream); verify scanning on the real printer.
━━━━━━━━━━━━━━━━━━━━
▶ 4. FONTS AND PRINTERS
- Use fonts available in ADS; unusual fonts may be substituted.
- Label printers (ZPL) need matching device types and form design for the label size.
━━━━━━━━━━━━━━━━━━━━
▶ STEP BY STEP
- Add an include text node for the billing header text and place it in the layout.
- Add the company logo via an SE78 graphic node.
- Add a Code 128 barcode bound to the invoice number and test scanning a printed page.
✅ CHECKPOINT: you can place texts, logos, dynamic images and barcodes correctly.
Code example
* ===== Context nodes (form ZAF_INVOICE) =====* Text node HDR_TEXT : Include text, object VBBK, ID 0002,* name &IS_HEADER-VBELN&, language &IS_HEADER-SPRAS&* Text node LEGAL : Text module ZTM_LEGAL_TERMS* Graphic node LOGO : graphic from SE78, object GRAPHICS, ID BMAP, name ZLOGO_COMPANY* Field IS_HEADER-VBELN -> bound to barcode object (Code 128) in the layout * ===== Passing a dynamic image (e.g. signature) as XSTRING =====* Interface import parameter IV_SIGNATURE TYPE XSTRING* Layout: image field bound to $.IV_SIGNATURE, content type image/png FORM get_signature USING iv_user TYPE syuname CHANGING cv_img TYPE xstring. DATA: lo_mr TYPE REF TO if_mr_api, lv_path TYPE string. CONCATENATE '/SAP/PUBLIC/ZSIGNATURES/' iv_user '.png' INTO lv_path. lo_mr = cl_mime_repository_api=>get_api( ). lo_mr->get( EXPORTING i_url = lv_path IMPORTING e_content = cv_img EXCEPTIONS OTHERS = 1 ). IF sy-subrc <> 0. CLEAR cv_img. " print without signature ENDIF.ENDFORM. * ===== Barcode object settings (LiveCycle Designer) =====* Type: Code 128 Binding: $.IS_HEADER.VBELN Text: show below Check digit: automaticReal project scenario
Warehouse scanners could not read the delivery barcode printed with a special barcode font on new printers — the font was missing on the device, so plain text was printed instead.
Switching to the barcode object in the Adobe layout, rendered by ADS, produced scannable barcodes on every printer without fonts. The team also resized the logo image, cutting PDF size by 70% for emailed documents.
Common mistakes
- Barcode fonts dependent on printer fonts.
- Large embedded images in every PDF.
- Include texts with fixed language.
- Missing "no error if text missing" handling.
- Not test-scanning barcodes on real printers.
Best practices
- Texts via context nodes and text modules.
- Logos via SE78/MIME, sized appropriately.
- Barcode objects rendered by ADS.
- Dynamic images as xstring.
- Test on real printers and scanners.
Interview angle
Questions: "How do you print a barcode in Adobe Forms?", "How do you add a logo?", "How do you print a document header text?"
Strong answer: barcode object in LiveCycle Designer bound to data, rendered by ADS; logo via context graphic node (SE78/MIME) or small embedded image; dynamic images via xstring; texts via context text nodes (text modules, include texts with object/ID/name/language) following SFPDOCPARAMS-LANGU.
Practice this lesson
Quick check
1. How is a scannable barcode best produced in an Adobe Form?
2. How is a document-specific header text (e.g. VBBK 0002) printed in an Adobe Form?
3. Multi-language handling uses:
Interview questions
1. A tax invoice used a very high-resolution logo, making each emailed PDF several megabytes. How do you fix it?
Answer it in your own words first, then compare.
2. How do you support multiple form variants per country/lang?
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 2: SFP Form Design and Layout Basics
- 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 8: Output Parameters, PDF Return and Spool Handling