SAP ABAP ADOBE FORMS
From SapWiki
Contents
Ejemplo programa de impresión
FORM print_pdf USING p_data TYPE zestruc_mi_formulario CHANGING p_xstring TYPE xstring p_subrc TYPE sy-subrc. DATA: wa_output TYPE sfpoutputparams, wa_result TYPE sfpjoboutput. DATA: gs_fp_outputparams TYPE sfpoutputparams, lv_fm_name TYPE rs38l_fnam, lv_form_name TYPE fpwbformname, wa_docparams TYPE sfpdocparams. DATA ls_pdf_file TYPE fpformoutput. *...Opciones de salida impresión wa_output-device = 'PRINTER'. * wa_output-dest = 'PDF1'. wa_output-cover = 'D'. wa_output-receiver = sy-uname. wa_output-reqnew = abap_true. wa_output-preview = abap_false. * wa_output-getpdf = space. wa_output-getpdf = abap_true. wa_output-nopreview = abap_true. wa_output-nodialog = abap_true. wa_output-reqimm = abap_false. CALL FUNCTION 'FP_JOB_OPEN' CHANGING ie_outputparams = wa_output EXCEPTIONS cancel = 1 usage_error = 2 system_error = 3 internal_error = 4 OTHERS = 5. IF sy-subrc <> 0. p_subrc = 1. RETURN. ENDIF. TRY. lv_form_name = 'Z_MI_FORMULARIO'. CALL FUNCTION 'FP_FUNCTION_MODULE_NAME' EXPORTING i_name = lv_form_name IMPORTING e_funcname = lv_fm_name. CATCH cx_fp_api_repository cx_fp_api_usage cx_fp_api_internal. p_subrc = 2. RETURN. ENDTRY. CALL FUNCTION lv_fm_name EXPORTING * /1bcdwb/docparams = wa_docparams gs_datos = p_data IMPORTING /1bcdwb/formoutput = ls_pdf_file EXCEPTIONS usage_error = 1 system_error = 2 internal_error = 3 OTHERS = 4. IF sy-subrc NE 0. p_subrc = 3. RETURN. ENDIF. CALL FUNCTION 'FP_JOB_CLOSE' IMPORTING e_result = wa_result EXCEPTIONS usage_error = 1 system_error = 2 internal_error = 3 OTHERS = 4. IF sy-subrc <> 0. p_subrc = 4. RETURN. ENDIF. p_xstring = ls_pdf_file-pdf. * READ TABLE wa_result-spoolids INTO DATA(wa_spoolids) INDEX 1. * CHECK sy-subrc = 0. * ** Get merged document * DATA l_xstring TYPE xstring. * CLEAR l_xstring. * CALL FUNCTION 'RSPO_GET_MERGED_PDF_FROM_SPOOL' * EXPORTING * spool_number = wa_spoolids * IMPORTING * merged_document = l_xstring * EXCEPTIONS * internal_error = 1 * empty_job = 2 * not_supported = 3 * OTHERS = 4. * IF sy-subrc = 0. * p_xstring = l_xstring. * ENDIF. ENDFORM.
Ejemplo programa que genera PDF
FORM print_pdf USING p_data TYPE zfi_st_cert CHANGING p_xstring TYPE xstring p_subrc TYPE sy-subrc. DATA: wa_output TYPE sfpoutputparams, wa_result TYPE sfpjoboutput. DATA: gs_fp_outputparams TYPE sfpoutputparams, lv_fm_name TYPE rs38l_fnam, lv_form_name TYPE fpwbformname, wa_docparams TYPE sfpdocparams. DATA ls_pdf_file TYPE fpformoutput. *...Opciones de salida impresión wa_output-device = 'PRINTER'. * wa_output-dest = 'PDF1'. wa_output-cover = 'D'. wa_output-receiver = sy-uname. wa_output-reqnew = abap_true. wa_output-preview = abap_false. * wa_output-getpdf = space. wa_output-getpdf = abap_true. wa_output-nopreview = abap_true. wa_output-nodialog = abap_true. wa_output-reqimm = abap_false. CALL FUNCTION 'FP_JOB_OPEN' CHANGING ie_outputparams = wa_output EXCEPTIONS cancel = 1 usage_error = 2 system_error = 3 internal_error = 4 OTHERS = 5. IF sy-subrc <> 0. p_subrc = 1. RETURN. ENDIF. TRY. lv_form_name = 'ZFI_AF_CERT'. CALL FUNCTION 'FP_FUNCTION_MODULE_NAME' EXPORTING i_name = lv_form_name IMPORTING e_funcname = lv_fm_name. CATCH cx_fp_api_repository cx_fp_api_usage cx_fp_api_internal. p_subrc = 2. RETURN. ENDTRY. CALL FUNCTION lv_fm_name EXPORTING i_cert_data = p_data IMPORTING /1bcdwb/formoutput = ls_pdf_file EXCEPTIONS usage_error = 1 system_error = 2 internal_error = 3 OTHERS = 4. IF sy-subrc NE 0. p_subrc = 3. RETURN. ENDIF. CALL FUNCTION 'FP_JOB_CLOSE' IMPORTING e_result = wa_result EXCEPTIONS usage_error = 1 system_error = 2 internal_error = 3 OTHERS = 4. IF sy-subrc <> 0. p_subrc = 4. RETURN. ENDIF. p_xstring = ls_pdf_file-pdf. ENDFORM.
Para ver PDF generado
if lv_xstring is NOT INITIAL. CALL FUNCTION '/IPRO/VIEW_PDF' EXPORTING iv_title = 'Certificado' iv_content = lv_xstring. endif.
Notas
Para limpiar la caché de Adobe Form, puedes hacer lo siguiente:
- Activar Adobe Forms
- Ir a un nuevo modo en TRX SE37
- Llamar al módulo de función IQS1_REFRESH_ALL