Sometimes you need to generate an Adobe PDF in the background, for example to send it as attachment or store it on a remote storage.
Info:to be able to generate the PDF in the background, the J2EE engine / Adobe Server must be set up and connected to the ABAP stack properly. This example is about programming, and not about the configuration.
When you know the name of the Adobe PDF to be generated, you can execute the printing job programmatically and get the pdf as raw data. You need to fill the PDF interface with the required input and set language and local properties.
DATA: ls_address TYPE bapiaddr3, lv_printer TYPE rs38l_fnam, ls_prm_form TYPE sfpdocparams, ls_prm_output TYPE sfpoutputparams, ls_pdf TYPE fpformoutput, lt_message TYPE bapirettab. "Print paremeters ls_prm_output-getpdf = abap_true."I want print to rawdata (instead of dialog processing) ls_prm_form-langu = sy-langu. CALL FUNCTION 'BAPI_USER_GET_DETAIL' EXPORTING username = sy-uname IMPORTING address = ls_address TABLES return = lt_message. IF ls_address-country IS NOT INITIAL. ls_prm_form-country = ls_address-country. ELSE. ls_prm_form-country = 'HU'. ENDIF. "PDF generation CALL FUNCTION 'FP_JOB_OPEN' CHANGING ie_outputparams = ls_prm_output EXCEPTIONS cancel = 1 usage_error = 2 system_error = 3 internal_error = 4 OTHERS = 5. IF sy-subrc NE 0. RETURN. ENDIF. CALL FUNCTION 'FP_FUNCTION_MODULE_NAME' EXPORTING i_name = 'HERE COMES THE NAME OF THE ADOBE FORM' IMPORTING e_funcname = lv_printer. IF sy-subrc NE 0. RETURN. ENDIF. CALL FUNCTION lv_printer EXPORTING /1bcdwb/docparams = ls_prm_form "HERE PASS THE ADOBE FORM INTERFACE PARAMETERS,you can get it from tx.: SFP, entering the Adobe Form name IMPORTING /1bcdwb/formoutput = ls_pdf EXCEPTIONS usage_error = 1 system_error = 2 internal_error = 3. IF sy-subrc NE 0. RETURN. ENDIF. CALL FUNCTION 'FP_JOB_CLOSE' EXCEPTIONS usage_error = 1 system_error = 2 internal_error = 3 OTHERS = 4. IF sy-subrc NE 0. RETURN. ENDIF. "Rawdata can be found in ls_pdf-pdf.