Es común que nos pidan hacer un resguardo de un formulario. Y probablemente tengamos que hacer el backup a PDF.
Con las siguientes pocas líneas vamos a poder hacerlo.
*Declaraciones
DATA: w_ctrlop TYPE ssfctrlop,
w_compop TYPE ssfcompop,
w_return TYPE ssfcrescl,
otfdata LIKE itcoo OCCURS 0 WITH HEADER LINE,
lc_name TYPE rs38l_fnam,
intab TYPE soli_tab,
objbin TYPE solix_tab,
wa_intab TYPE LINE OF soli_tab,
wa_objbin TYPE LINE OF solix_tab,
objpack LIKE sopcklsti1 WITH HEADER LINE.
*Función que devuelve el modulo de función del SmartForm
CALL FUNCTION ‘SSF_FUNCTION_MODULE_NAME’
EXPORTING
formname = ‘ZSMARTFORM’ “Nombre del formulario SmartForm
IMPORTING
fm_name = lc_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
*Llama al modulo de función del SF
w_ctrlop-getotf = ‘X’.
w_ctrlop-no_dialog = ‘X’.
w_compop-tdnoprev = ‘X’.
CALL FUNCTION lc_name
EXPORTING
output_options = w_compop
control_parameters = w_ctrlop
IMPORTING
job_output_info = w_return
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 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.
ELSE.
otfdata[] = w_return-otfdata[].
ENDIF.
*En la tabla otfdata nos queda guardado el formulario en formtao OTF
*Ahora sólo resta convertir el OTF en PDF
LOOP AT otfdata.
wa_intab = otfdata.
APPEND wa_intab TO intab.
CLEAR wa_intab.
ENDLOOP.
*Convertir el OTF en PDF
CALL FUNCTION ‘SX_OBJECT_CONVERT_OTF_PDF’
EXPORTING
format_src = ‘OTF’
format_dst = ‘PDF’
* ADDR_TYPE =
devtype = ‘LP01′
* FUNCPARA =
CHANGING
transfer_bin = objpack-transf_bin
content_txt = intab
content_bin = objbin
objhead = intab
len = objpack-doc_size
EXCEPTIONS
err_conv_failed = 1
OTHERS = 2.
*LISTO!!! En la tabla objbin nos queda guardado el PDF para salvarlo *en la PC con la función ‘GUI_DOWNLOAD’ o bien enviarlo por mail con *la función ‘SO_NEW_DOCUMENT_ATT_SEND_API1’
Groso
Se puede bajar el PDF al servidor (AL11) y luego a la pc???
Porque lo bajo del servidor con la SGRY a la pc no funciona!..No me abre el pdf..
Sí, se puede guardar el PDF en el servidor y luego bajarlo a la PC con la transacción CG3Y.
Si no abre el PDF es porque hubo un error al generar el archivo en el servidor.
Saludos cordiales,
Daniel.
Que tal!! El tuto es excelente.. Pero cuando me crea el archivo y lo veo este esta vacio.
Lo unico que hice fue poner:
-en el exporting de la funcion lc_name mi tabla, con la que lleno mi smartforms
-a lo ultimo llame a la funcion GUI_DOWNLOAD, en el exporting en
«FILENAME» le puse la ruta de mi archivo con extension pdf
y en TABLES en DATA_TAB le puse la tabla objbin, que debe ser asi.
y me lo crea vacio…..
Que esto haciendo mal?
Ah…debuguee para saber si carga datos en la tabla y lo hace…
tambien probe el smartform aparte, es decir, en otro report, y me lo muestra con datos.
Saludos.
estoy con la misma duda y no he dado en el caso es mas el pdf me indica que esta corrupto pero que en peso tiene 0 bytes ayuda por favor
TIENES QUE COLOCAR LA FUNCION DE ESTA MANERA
CALL FUNCTION ‘GUI_DOWNLOAD’
EXPORTING
* bin_filesize =
filename = ‘C:\prueba.pdf’
filetype = ‘BIN’
TABLES
data_tab = objbin
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6.
Hola, tengo un smartforms con una imagen (sello de la empresa) y al momento de generar el PDF me aparece una pantalla indicando «CCD: Mensaje de sistema SAP: El proceso de trabajo ha sido reanudado -> Modo cancelado». Lo extraño es que si le quito la imagen al formulario NO me genera dicho error. Gracias por el apoyo.
Hola Edward,
Ese error nunca me paso. Pero se que varios tuvieron problemas con las imágenes en los PDF.
Te sugiero que busques en google por el nro de mensaje de error.
Y que también intente hacer un debug.
Por otro lado probaste crear la imagen en otro formato y subirla a SAP? (TIFF o BMP).
Saludos,
Daniel.
Hola, no puedo debugear, porque al darme el mensaje automaticamente termina con el modo que esta abierto en la ejection, y como te comente antes, no es un error que se puede localizar muy facil, ya que, no tiene un numero especifico. Te pregunto: Haz realizado la conversion de un smartforms con imagines a PDF? Gracias por el apoyo. Saludos.
Edward,
He realizado smartforms con imágenes a PDF. Pero, por suerte, no tuve problemas.
Probaste con otra imagen cualquiera? Así podes descartar si es algo general o es para tu imagen particular. También podrías probar subiendo la imagen en otro formato.
Saludos y a disposición,
Daniel Panaro.
Hola,
tengo una clase de mensaje de ventas que genera un formulario smartform y se quiere enviar por email, pero además se quiere poner en el cuerpo del email una información adicional. Podrías ayudarme como añadir esta información adicional en el cuerpo del email ? y si es un sapscript dnd usamos la función open_form??
Muchas gracias.
Carolina
Hola Carolina,
La información en el cuerpo del mail, el asunto, los destinatarios, archivos adjuntos (PDF).
Todo se maneja desde la función SO_NEW_DOCUMENT_ATT_SEND_API1
Hay mucha documentación y ejemplos si googleas un poco.
En caso que fuese un sapscript, como bien decis hay que usar la función open_form
Saludos,
Daniel.