Enviar smartform en pdf a email por medio de boton

Hola a Todos,
Hoy tengo un reto soy muy novata en ABAP y es que debo enviar un pdf de la visualización de un smartforms a una lista de distribución por medio de un botón “enviar email” ubicado en la dynpro de visualización del smartform, de un programa Z.
He buscado en varios post anteriores y solo aparece como modificar un STATUS GUI para un ALV, pero no cuando se visualice el smartform, algo mas y es que esta saliendo el smartforms directamente sin mostrar la ventana de dialogo para visualización o impresión, me solicitan que debe ser un botón para enviar el pdf por email.
agradezco me puedan sacar de la duda.
gracias un abrazo :upside_down_face:

Algo así como se muestra en la imagen

Buenas noches.

No se que tan fácil y posible sea que se muestre el botón donde tu lo indicas.

Aquí debes de revisar los parámetros con los que llamas el smartform, revisa la variable de tipo ssfctrlop, en ella se configura la visualización del smartform.

 wa_cparam-no_dialog = ''.  "Si lo marcas con X, no muestra la ventana de dialogo
 wa_cparam-getotf    = 'X'. "Lo necesitas para enviarlo por correo

 wa_output-tdnoprev  = ''.
 wa_output-tdnoprint = ''.
 wa_output-tddest    = 'LOCL'. "Impresera default

Lo que yo propondría es:

En una ventana emergente, antes de mostrar la ventana previa a la visualización, preguntar al usuario si desea enviarlo por correo

Espero te sirva
Saludos

2 Me gusta

Hola, como dijo Jack El Destripador: vamos por partes.

Para controlar la ventana de opciones de impresión, recuerda usar el parámetro “no_dialog”

En cuanto a colocar el boton donde dices, es técnicamente posible pero innecesariamente complicado, y peor aún, sería modificar el estándar (pantalla de visualización de formularios).

Lo que considero mas adecuado para cumplir con lo que dices, es abordarlo con una dynpro Z, que muestre el smartform y tenga un estatus-gui Z (menú-barra de herramientas) con el boton que quieres. Luego al botón se le coloca el código necesario para enviar el mail con el pdf adjunto.

Para visualizar el smartform en una dynpro Z básicamente se usa un “container” en la dynpro y se transforma el smartform en PDF para visualizarlo dentro. Puedes guiarte con uno de estos enlaces:
h_tps://blogs.sap.com/2018/02/26/classic-dynpro-display-a-pdf-document/
h_tps://answers.sap.com/questions/10019533/previous-next-buttons-in-smartform-print-preview.html
h_tps://answers.sap.com/questions/12036242/display-pdf-inside-a-container.html

Para colocar el botón, puedes hacerlo en el status-gui o directamente sobre la dynpro.

Para programar el evento de envio del mail, básicamente se llama al FM del smartform con ciertos parámetros para capturar la salida, convertirla, y adjuntarla a un mail que finalmente es enviado a uno o varios destinatarios. Puedes guiarte por uno de estos enlaces:
h_tps://sapyard.com/how-to-email-smartform-as-pdf-attachment-to-multiple-users/
h_tps://answers.sap.com/questions/11714261/sending-smartforms-in-email-attachment-with-an-ema.html
h_tps://www.samplecodeabap.com/smartform-email/
h_tps://wiki.scn.sap.com/wiki/display/Snippets/Smartform+to+Mail+as+PDF+attachment
h_tps://answers.sap.com/questions/3713391/sending-smartform-through-email-as-pdf-attachment.html

Finalmente, cuando tengas un prototipo que funcione, puedes afinar detalles como por ejemplo almacenar el formulario de forma temporal cuando se visualiza, para no tener que llamar otra vez el FM del smartform cuando el usuario pulse el botón de “enviar mail”. No intentes abarcar todo de una vez, mi consejo es el mismo de Jack El Destripador: “vamos por partes”.

Espero te sea de ayuda.

3 Me gusta

Hola @Alonso_mx, muchas gracias por tu aporte si me ha servido… :wink:

Hola @Tracer, gracias

Y pues… eso me lleva a otras preguntas, por ejemplo una… debo hacer de nuevo la Dynpro STANDAR que ya existe por que no se deja modificar, esto para decirle que la nueva Dynpro que haga en la cual estará el contenedor será la siguiente después de ejecutar esa?
O no es necesario es que no se como conectarlas para que enla Dynpro 1 es donde coloco los datos y en la Dynpro 2 sea la que cree nueva y contenga el smartform.
Gracias por la valiosa colaboración.

Hola. Puedes olvidarte de la dynpro estandar. Si tienes un programa Z que tiene una dympro 100 con un boton “ver formulario”, en ese boton llamas a una nueva dynpro 200 que es la que tiene el container que muestra el formulario.

La dynpro para mostrar el formulario solo necesita un container que ocupe casi toda el area, como este ejemplo:
h_tps://answers.sap.com/storage/attachments/925929-1.PNG

También puedes hacer como esta persona que colocó en la misma dynpro a la derecha el container para el formulario, y a la izquierda otros datos:
h_tps://blogs.sap.com/wp-content/uploads/2018/02/email-2-1.jpg

Saludos :slight_smile:

1 me gusta

Este tema se cerró automáticamente 91 días después de la última publicación. No se permiten nuevas respuestas.