0% found this document useful (0 votes)
128 views

PDF Files in SAP - ABAP Development - Community Wiki

The document discusses various ways to generate and work with PDF files in SAP, including converting SAPscript, Smart Forms, and ABAP lists to PDF binaries; displaying PDFs in SAPGUI and web dynpros; saving PDF binaries as files; and attaching PDFs to emails. It also covers PDF-based print forms and PDF spool requests.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
128 views

PDF Files in SAP - ABAP Development - Community Wiki

The document discusses various ways to generate and work with PDF files in SAP, including converting SAPscript, Smart Forms, and ABAP lists to PDF binaries; displaying PDFs in SAPGUI and web dynpros; saving PDF binaries as files; and attaching PDFs to emails. It also covers PDF-based print forms and PDF spool requests.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

Páginas /

ABAP Development

PDF files in SAP


Criado por Sandra Rossi, última alteração em set 24, 2009

Frequently Asked Questions


What possibilities does SAP offer to generate PDF files?
What are PDF-based print forms?
What means IFbA?
How to display a PDF in SAPGUI for Windows?
How to display a PDF in a web dynpro for ABAP?
How to convert SAPscript output into PDF binary?
How to convert Smart Form output into PDF binary?
How to convert an ABAP List spool into PDF binary?
How to save a PDF binary into PDF file?
How to attach a PDF file to an email programmatically?
What is a PDF spool request?

What possibilities does SAP offer to generate PDF files?


SAP proposes the PDF1 device type (see Note 323736 - Restrictions with "PDF print" through spooler) (also
known as the "PDF converter") which you can use to convert an OTF or list document, in archiving and mail
sending
When you print a SAPscript or a Smart Form, you may choose to get the generated document in OTF and then
programmatically convert the OTF into PDF binary (then you do whatever you want with this binary, like download
as a file, send it as attachment to an email, etc.)
From Smart Form preview screen, the user may convert it into PDF by entering PDF! in the okcode field.
You may convert an ABAP list into a PDF binary by calling a function module
Since NetWeaver 2004 (release 6.40), SAP proposes a technology named "SAP Interactive Forms by Adobe"
(often referred as Interactive Forms, or Adobe Forms, or PDF Forms) which allows to generate PDF natively
without any intermediate media

What are PDF-based print forms?


SAP uses this name to refer to Interactive Forms which have the flag Interactive switched off, i.e. it is not possible
to fill in data in these types of PDF files, while it is possible in interactive PDF files (using Adobe Acrobat Reader
software).

What means IFbA?


IFbA is the abbreviation of SAP Interactive Forms by Adobe. Note: IFbA abbreviation is not used by SAP, but by
the SDN community.

How to display a PDF in SAPGUI for Windows?


Define a custom control in a dynpro, and use CL_GUI_HTML_VIEWER class with mime type "application/pdf"
See for example the second part of wiki "Read any OTF Data in Adobe Reader"
Note: CL_GUI_PDFVIEWER class should not be used as indicated by SAP in its description.

How to display a PDF in a web dynpro for ABAP?


See this wiki for creating the web dynpro step-by-step, it displays a PDF file previously and manually loaded into
the MIME repository (not part of the wiki, use SE80 to load any PDF)
See this wiki for creating an interactive form and a web dynpro step-by-step

How to convert SAPscript output into PDF binary?


Note: here PDF binary means that the PDF is stored in a variable in memory (handled using XSTRING variable for
example), not a file. To transform the PDF binary into a file, see question below.
The SAPscript must generate an OTF output and then you convert the OTF into PDF format. There are 2
possibilities :
Without generating any spool :
when calling OPEN_FORM function module, export parameter OPTIONS-TDGETOTF = 'X', and
when calling CLOSE_FORM function module, use returned parameter OTFDATA
call CONVERT_OTF function module to convert the OTF to PDF. Returned parameters are BIN_FILE
(the PDF binary) and BIN_FILESIZE (the length of the PDF binary). See below how to save a PDF
binary to a file.
If an OTF spool has been generated, you may convert it using CONVERT_OTFSPOOLJOB_2_PDF
function module. Returned parameters are PDF table (the PDF binary) and PDF_BYTECOUNT (the length
of the PDF binary).
See for example this wiki

How to convert Smart Form output into PDF binary?


As for SAPscripts, you may generate a Smart Form in OTF format, so it's the same principle as above, with this
minor difference to get OTF data without generating any spool : in the function module which opens the Smart
Form output stream (either SSF_OPEN or the Smart Form generated FM), export parameter
CONTROL_PARAMETERS-GETOTF = 'X', and in the function module which closes the Smart Form output
stream (either SSF_CLOSE or the Smart Form generated FM), returned parameter is JOB_OUTPUT_INFO-
OTFDATA.
See for example this wiki

How to convert an ABAP List spool into PDF binary?


Call CONVERT_ABAPSPOOLJOB_2_PDF function module. Returned parameters are PDF table (the PDF binary)
and PDF_BYTECOUNT (the length of the PDF binary).
See for example this wiki.

How to save a PDF binary into PDF file?


A PDF binary has to be saved as any other binary: If the file is to be saved on the frontend, it can only be done in
dialog interactive mode (it is impossible to connect to the frontend from background execution), use either
GUI_DOWNLOAD function module or method GUI_DOWNLOAD from class CL_GUI_FRONTEND_SERVICES. If
the file is to be saved on the server, use OPEN DATASET, TRANSFER and CLOSE DATASET ABAP statements.
As for any other binary, be careful to save the exact number of bytes that the binary contains (use the "binary
length" returned by CONVERT_OTF or CONVERT_OTFSPOOLJOB_2_PDF), otherwise you might have problems
when opening the PDF.
See for example the last part of this wiki

How to attach a PDF file to an email programmatically?


The PDF must be handled as any other binary attachment (you may use Business Communication Service (BCS)
class (CL_BCS), or use the old function module SO_NEW_DOCUMENT_ATT_SEND_API1, but this last is rather
complex to implement).

What is a PDF spool request?


Up to NW2004, there were only 3 types of spool requests : ABAP list, SAPscript RDI, OTF (SAPscript and Smart
Forms)).
With IFbA, SAP couldn't store these forms as spool requests in any of the 2 last formats, and has decided to
create a new type.
Spool requests of type PDF have a new feature called "part list" which allows a spool request to contain several
IFbA : each PDF spool request contains 1 or more parts, each part contains exactly one IFbA. It is then possible to
print only some parts of the spool request (but it is not possible to print some pages of one part). This feature is
used to mimic the possibility of merging automatically several SAPscripts or Smart Forms.

Sem rótulos

2 Comentários
Usuário desconhecido (986ugoqa)
is it possible to read pdf file in abap?
If yes thenplease provide me some sample code.

Regards
PG

Ray Mannion
Thanks for providing this great page.  I came looking for "How to read a PDF file off the server and attach it as
an email".  I was trying to use a function SCMS_UPLOAD but I found the following to be the proper way to read
in a .PDF file. There is only the need to read the file in one line. There are so many resources for attaching
data to an email, I won't include that.

{{

data:

l_filename type localfile,

l_xstring type xstring,

lt_solix type solix_tab.


OPEN DATASET l_filename for input in binary mode.

"error handling

READ DATASET l_filename INTO l_xstring.

CLOSE DATASET l_filename.

CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'

EXPORTING

buffer = l_xstring

TABLES

binary_tab = lt_solix

}}

Privacy
Terms of Use
Legal Disclosure
Copyright
Trademark

You might also like