Esta es una práctica solución para que los usuarios puedan
guardar los formularios directamente en formato PDF.
Su implementación es simple
form genera_salida.
data: r_document_output_info type ssfcrespd,
r_job_output_info type ssfcrescl,
r_job_output_options type ssfcresop,
l_pdf like tline occurs 100 with header line.
data: is_otf type c,
id_spool like tsp01-rqident.
data: pdf_bytecount type i.
data: begin of it_pdf_output occurs 0.
include structure tline.
data: end of it_pdf_output.
data: filename type string.
*
[1]* Identificacion de SmartForm
call function 'SSF_FUNCTION_MODULE_NAME'
exporting
formname = 'Z_SMF_01'
importing
fm_name = g_fm_name
exceptions
no_form = 1
no_function_module = 2
others = 3.
* creo el Spool para la impresion
g_output_options-tdnewid = 'X'. "pdf (nuevo spool) - Requerido
g_control_parameters-getotf = 'X'. "pdf (Retorno tab.OTF.)
g_control_parameters-preview = 'X'. "No Mostrar V2
g_control_parameters-no_dialog = 'X'. "No Mostrar V2
[2]* Imprimo el Documento
* Ejecucion de Smartform.
g_docu = g_docu + 1.
call function g_fm_name
exporting
control_parameters = g_control_parameters
output_options = g_output_options
user_settings = 'X'
per_ini = p_begda
per_fin = p_endda
importing
document_output_info = r_document_output_info
job_output_info = r_job_output_info
job_output_options = r_job_output_options
tables
p01 = it_p01
t01 = it_t01
total = it_total
exceptions
formacling_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
others = 5.
if sy-subrc eq 0.
* Recupero el OTF del Smartform
y lo muestro como PDF.
call function 'SSFCOMP_PDF_PREVIEW'
exporting
i_otf = r_job_output_info-otfdata
EXCEPTIONS
CONVERT_OTF_TO_PDF_ERROR = 1
CNTL_ERROR = 2
OTHERS = 3 .
endif.
como siempre les digo, si hay una forma mejor o mas simple me avisan.
Hola!
ResponderEliminarSi me pueedes ayudar con está parte estaría más que perfecto:
* creo el Spool para la impresion
g_output_options-tdnewid = 'X'.
g_control_parameters-getotf = 'X'.
g_control_parameters-preview = 'X'.
g_control_parameters-no_dialog = 'X'.
¿Dónde pudo encontrar estos datos para declararlos?
Yazmin,
ResponderEliminarEstos parámetros son genéricos para los smartforms, por los que si ejecutas uno cualquiera, veras la definición de la RFC asociada, por ejemplo.
….
function /1bcdwb/sf00000265.
*"--------------------------------------------------------------------
*"*"Interfase global
*" IMPORTING
*" VALUE(ARCHIVE_INDEX) TYPE TOA_DARA OPTIONAL
*" VALUE(ARCHIVE_INDEX_TAB) TYPE TSFDARA OPTIONAL
*" VALUE(ARCHIVE_PARAMETERS) TYPE ARC_PARAMS OPTIONAL
*" VALUE(CONTROL_PARAMETERS) TYPE SSFCTRLOP OPTIONAL
*" VALUE(MAIL_APPL_OBJ) TYPE SWOTOBJID OPTIONAL
*" VALUE(MAIL_RECIPIENT) TYPE SWOTOBJID OPTIONAL
*" VALUE(MAIL_SENDER) TYPE SWOTOBJID OPTIONAL
*" VALUE(OUTPUT_OPTIONS) TYPE SSFCOMPOP OPTIONAL
*" VALUE(USER_SETTINGS) TYPE TDBOOL DEFAULT 'X'
*" REFERENCE(PER_INI) TYPE BEGDA
*" REFERENCE(PER_FIN) TYPE ENDDA
*" EXPORTING
*" VALUE(DOCUMENT_OUTPUT_INFO) TYPE SSFCRESPD
*" VALUE(JOB_OUTPUT_INFO) TYPE SSFCRESCL
*" VALUE(JOB_OUTPUT_OPTIONS) TYPE SSFCRESOP
*" TABLES
*" PERSONA STRUCTURE ZHR_PA_RE_PERSONA
*" COM_VR STRUCTURE ZHR_PA_RECC_01
*" COM_PF STRUCTURE ZHR_PA_RECC_02
*" COM_CC STRUCTURE ZHR_PA_RECC_03
*" TOTAL STRUCTURE ZHR_PA_RECC_02
*" EXCEPTIONS
*" FORMATTING_ERROR
*" INTERNAL_ERROR
*" SEND_ERROR
*" USER_CANCELED
*"--------------------------------------------------------------------
espero que te sea de utilidad..
saludos JC
Muchas gracias, tu publicación me es de gran utilidad, pocas publicaciones son especificas, felicidades por el contenido de tu blog :D
EliminarGracias..
ResponderEliminar