Difference between revisions of "SAP ABAP ADOBE FORMS"
From SapWiki
Line 109: | Line 109: | ||
* ENDIF. | * ENDIF. | ||
ENDFORM.</nowiki> | ENDFORM.</nowiki> | ||
+ | ===Ejemplo programa que genera PDF=== | ||
+ | <nowiki> | ||
+ | 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.</nowiki> | ||
+ | |||
+ | ===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== | ==Notas== | ||
===Para limpiar la caché de Adobe Form, puedes hacer lo siguiente:=== | ===Para limpiar la caché de Adobe Form, puedes hacer lo siguiente:=== |
Revision as of 00:22, 19 April 2024
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