En el anterior post sobre Adobe Forms vimos como diseñarlo, sería conveniente revisar primero este post antes de continuar.
Para poder invocar al formulario desde un programa impresor ABAP se deberán seguir los siguientes pasos:
1) Llenar las tablas, estructuras, etc. que se pasarán cómo parámetros al formulario. En este ejemplo se llenaron la tabla pt_reserv y la estructura pa_header.
2) Abrir el formulario para impresión:
Invocar la siguiente función con los parámetros de impresión, entre ellos: indicar si se desea suprimir el diálogo pop-up de impresión (como en este ejemplo: l_outputparams-nodialog = ‘X’ ) e indicar que el archivo que retorne sea un PDF con el parámetro l_outputparams-getpdf = ‘X’.
DATA: l_outputparams TYPE sfpoutputparams.
* Output parameters and open spool job
l_outputparams-nodialog = ‘X’.
l_outputparams-getpdf = ‘X’.
* Open the form for printing
CALL FUNCTION 'FP_JOB_OPEN'
CHANGING
ie_outputparams = l_outputparams
EXCEPTIONS
cancel = 1
usage_error = 2
system_error = 3
internal_error = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
3) Obtener el nombre dinámico del formulario:
CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
EXPORTING
i_name = 'ZFORM_VH'
IMPORTING
e_funcname = p_func_name.
4) Llamar al formulario con el nombre obtenido, pasándole los parámetros con los datos ya cargados:
DATA: l_docparams TYPE sfpdocparams,
l_formoutput TYPE fpformoutput.
l_docparams-langu = 'E'.
l_docparams-fillable = c_on.
CALL FUNCTION p_func_name
EXPORTING
/1bcdwb/docparams = l_docparams
i_gt_reserv = pt_reserv
ga_header = pa_header
IMPORTING
/1bcdwb/formoutput = l_formoutput
EXCEPTIONS
usage_error = 1
system_error = 2
internal_error = 3
OTHERS = 4.
5) Cerrar el procesamiento del formulario:
CALL FUNCTION 'FP_JOB_CLOSE'
EXCEPTIONS
usage_error = 1
system_error = 2
internal_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
No hay comentarios:
Publicar un comentario