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