FORM convertir_smartform_pdf .
DATA: lf_fm_name TYPE rs38l_fnam, "Nombre smartforms Generado
lwa_outopt TYPE ssfcompop, "propiedades de visualizac
lwa_ctrlop TYPE ssfctrlop, "Controles
t_otfdata TYPE ssfcrescl,
t_pdf_tab LIKE tline OCCURS 0 WITH HEADER LINE,
t_otf TYPE itcoo OCCURS 0 WITH HEADER LINE,
li_filesize TYPE i,
ls_path TYPE string,
lc_rpta TYPE c,
li_bin_filesize TYPE i.
DATA: ls_fecha TYPE string,
ls_error TYPE string.
PERFORM fecha_en_letras CHANGING ls_fecha.
* Opciones de control
lwa_ctrlop-no_dialog = 'X'.
lwa_ctrlop-getotf = 'X'.
* Opciones de salida
lwa_outopt-tdnoprev = 'X'.
lwa_outopt-xdf2outdev = 'LP01'.
lwa_outopt-tddest = 'LP01'. "Impresora
lwa_outopt-tdimmed = 'X'. "Imprimir Inmediatamente
lwa_outopt-tddelete = 'X'. "Borrar despues de Impresion
lwa_outopt-tdnewid = 'X'. "Crear una nueva orden spool
* Cargar smartform
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZSF_HOJAVIDA_10'
IMPORTING
fm_name = lf_fm_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* Mostrar smatrform
TRY .
ls_error = 'No se pudo cargar la hoja de vida.'.
CALL FUNCTION lf_fm_name
EXPORTING
control_parameters = lwa_ctrlop
output_options = lwa_outopt
user_settings = ' '
ps_user = sy-uname
ps_fecha = ls_fecha
IMPORTING
job_output_info = t_otfdata
TABLES
ptd_ztaspirante_10 = gtd_cabecera_asp
ptd_educacion = gtd_educacion
ptd_titulos = gtd_titulos
ptd_laboral = gtd_laboral
ptd_conocimientos = gtd_conocimientos
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
CASE sy-subrc .
WHEN 1.
MESSAGE e888 WITH ls_error 'Error de formato.'.
RETURN.
WHEN 2.
MESSAGE e888 WITH ls_error 'Error interno.'.
RETURN.
WHEN 3.
MESSAGE e888 WITH ls_error 'Error en el envio de datos.'.
RETURN.
WHEN 4.
MESSAGE e888 WITH ls_error 'Usuario cancelo la accion.'.
RETURN.
WHEN 5.
MESSAGE e888 WITH ls_error 'Error no contemplado.'.
RETURN.
ENDCASE.
CATCH cx_sy_dyn_call_illegal_type.
MESSAGE e888 WITH ls_error 'Excepcion lanzada'.
RETURN.
ENDTRY.
t_otf[] = t_otfdata-otfdata[].
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
max_linewidth = 132
IMPORTING
bin_filesize = li_bin_filesize
TABLES
otf = t_otf
lines = t_pdf_tab
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 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.
* Mostrar dialogo guadar archivo
PERFORM obtener_ruta_guardar_archivo CHANGING ls_path
lc_rpta.
CHECK lc_rpta = 'T'.
* Descargar archivo
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = li_bin_filesize
filename = ls_path
filetype = 'BIN'
IMPORTING
filelength = li_filesize
TABLES
data_tab = t_pdf_tab
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
MESSAGE s184 WITH 'Descarga Satisfactoria.'.
ENDIF.
ENDFORM.
Estimado que pones en:
ReplyDeletePERFORM obtener_ruta_guardar_archivo CHANGING ls_path lc_rpta.
podrías completarlo por favor???
Muchas gracias, justo lo que buscaba.
ReplyDelete