You are on page 1of 1

PROGRAM z_ifba_book_pdf.

TYPE-POOLS abap.
INCLUDE fp_utilities.
PARAMETERS:
p_xfd TYPE localfile VISIBLE LENGTH 64,
p_xft TYPE localfile VISIBLE LENGTH 64 OBLIGATORY,
p_pdf TYPE localfile VISIBLE LENGTH 64 OBLIGATORY,
p_int TYPE abap_bool DEFAULT abap_true AS CHECKBOX,
p_dyn TYPE abap_bool AS CHECKBOX.
DATA: l_fp TYPE REF TO if_fp,
l_pdfobj TYPE REF TO if_fp_pdf_object,
l_xft TYPE xstring,
l_xfd TYPE xstring,
l_pdfresult TYPE xstring,
l_fpex TYPE REF TO cx_fp_runtime,
l_error TYPE string.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_xfd.
PERFORM value_help_for_file USING 'XML' CHANGING p_xfd.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_xft.
PERFORM value_help_for_file USING 'XDP' CHANGING p_xft.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_pdf.
PERFORM value_help_for_output_file USING 'PDF'
CHANGING p_pdf.
START-OF-SELECTION.
IF p_xfd IS NOT INITIAL.
PERFORM load_file USING p_xfd CHANGING l_xfd.
ENDIF.
PERFORM load_file USING p_xft CHANGING l_xft.
* Get FP reference.
l_fp = cl_fp=>get_reference( ).
TRY.
* Create PDF Object.
l_pdfobj = l_fp->create_pdf_object( ).
* Set template.
l_pdfobj->set_template( xftdata = l_xft
fillable = p_int ).
* Set data.
IF l_xfd IS NOT INITIAL.
l_pdfobj->set_data( formdata = l_xfd ).
ENDIF.
* Tell PDF object to create PDF.
l_pdfobj->set_task_renderpdf( dynamic = p_dyn ).
* Execute, call ADS.
l_pdfobj->execute( ).
* Get result.
l_pdfobj->get_pdf( IMPORTING pdfdata = l_pdfresult ).
CATCH cx_fp_runtime_internal
cx_fp_runtime_system
cx_fp_runtime_usage INTO l_fpex.
l_error = l_fpex->get_errmsg( ).
MESSAGE l_error TYPE 'E'.
ENDTRY.
PERFORM download_file USING l_pdfresult p_pdf.

You might also like