PDA

Ver la Versión Completa : Como enviar un formulario SAPscript???


Alicia
22/03/06, 14:00:16
Hola a todos los integrantes de este foro, alguien sabe como o conoce de alguna función que me permita enviar un formulario sapscript (La orden de compra) a un correo electrónico?, es urgente!!! :eek: , de antemano muchas gracias..


Saludos,

Alicia

reijimher
22/03/06, 15:12:40
Hola Alicia, para enviar un formulario a través del correo electrónico, primero tienes que convertirlo a formato PDF, esto lo puedes lograr por la función que a continuación te describo:

1 -
*****************************************************************************
* VERIFICA EL TIPO DE SPOOL QUE TENEMOS
*****************************************************************************

call function 'RSPO_GET_TYPE_SPOOLJOB'
exporting
rqident = spool_id
importing
is_otf = i_otf
exceptions
can_not_access = 1
others = 2.
if sy-subrc <> 0.
message id 'Z1' type 'E' number 000
with text-002.
elseif i_otf eq 'X'.

*****************************************************************************
* Generar PDF de OTF
*****************************************************************************
call function 'CONVERT_OTFSPOOLJOB_2_PDF'
exporting
src_spoolid = spool_id
importing
pdf_bytecount = pbyte
tables
pdf = t_pdf
exceptions
err_no_otf_spooljob = 1
err_no_spooljob = 2
err_no_permission = 3
err_conv_not_possible = 4
err_bad_dstdevice = 5
user_cancelled = 6
err_spoolerror = 7
err_temseerror = 8
err_btcjob_open_failed = 9
err_btcjob_submit_failed = 10
err_btcjob_close_failed = 11
others = 12.
else. " Generar PDF de Abap

call function 'CONVERT_ABAPSPOOLJOB_2_PDF'
exporting
src_spoolid = spool_id
importing
pdf_bytecount = pbyte
tables
pdf = t_pdf
exceptions
err_no_abap_spooljob = 1
err_no_spooljob = 2
err_no_permission = 3
err_conv_not_possible = 4
err_bad_destdevice = 5
user_cancelled = 6
err_spoolerror = 7
err_temseerror = 8
err_btcjob_open_failed = 9
err_btcjob_submit_failed = 10
err_btcjob_close_failed = 11
others = 12.
if sy-subrc eq 0.
* Iniciamos la traducción por error en la funcion de conversion ABAP-PDF
loop at t_pdf into i_pdf.
translate i_pdf using ',.'.
modify t_pdf from i_pdf.
endloop.
endif.
endif. "De if sy-subrc


**********************************************************************************************

2- Bajas el PDF Generado a Disco

concatenate subdir '\' p_file '.PDF' into w_archivo.


call function 'WS_DOWNLOAD'
exporting
bin_filesize = pbyte
filename = w_archivo
filetype = 'BIN'
tables
data_tab = t_pdf
exceptions
invalid_filesize = 1
invalid_table_width = 2
invalid_type = 3
no_batch = 4
unknown_error = 5
gui_refuse_filetransfer = 6.

if sy-subrc <> 0.
message id 'Z1' type 'E' number '000' with text-003.
endif.

endform. " BAJAR_ARCHIVO

**********************************************************************************************
3- Buscas las Direcciones de Email en el Maestro de Proveedores

select single * from lfa1 where lifnr eq report_iii-lifnr.
if sy-subrc = 0.
select single * from adr6 where addrnumber = lfa1-adrnr.
if sy-subrc = 0.
p_to = adr6-smtp_addr.
else.
p_to = space.
message i999 with text-012 lfa1-adrnr text-013.
endif.
endif.

**************************************************************************************************
4- Envías el Correo a través de las siguiente instrucciones

data: appoutlook type ole2_object.
data: appout2 type ole2_object.
data: appitem type ole2_object.
data: namespace type ole2_object.
data: attachments type ole2_object.
data: frace01(45), frace02(45).
* Crear objeto OLE : outlook.application
create object appoutlook 'outlook.application' .
* Mensajes vía MAPI
call method of appoutlook 'GetNameSpace' = namespace
exporting #1 = 'MAPI'.
* Crea objeto nuevo ITEM ( nuevo mensaje )
call method of appoutlook 'CreateItem' = appitem
exporting #1 = '0'.
* Propiedades TO , SUBJECT y BODY
set property of appitem 'To' = 'xxxxxxx@xxx.com'.


concatenate p_subj 'OI' into p_subj separated by space.
set property of appitem 'Subject' = p_subj.

set property of appitem 'Body' = ‘Adjunto, Pedidos’.
* Se adjunta el archivo
if not w_archivo is initial.
call method of appitem 'Attachments' = attachments.
call method of attachments 'Add'
exporting #1 = w_archivo.
endif.

* Envíar directamente
call method of appitem 'Send'.
*Se muestra la pantalla del outlook
******** CALL METHOD OF appitem 'Display'.
* Libera Espacio del objeto
free object attachments.
free object appitem.
free object namespace.
* Cierra Outlook ( solo si se quiere que quede cerrado )
***CALL METHOD OF appoutlook 'Quit'.
free object appoutlook.


Espero que esto te ayude


Saludos....

Reiner Jiménez

tracer
22/03/06, 15:22:00
Hola Alicia,

No te preocupes es muy fácil y solo requiere unas pocas lineas de código abap ;) . Para enviar un formulario sapscript por email, tienes que incluir estas funciones en el programa que adjuntarán al correo tu formulario como un pdf.

*--- Define la dirección email del destinatario
LW_COMM_VALUES-ADSMTP-SMTP_ADDR = john.smith@yahoo.com

*--- Define el Título
LW_SNAST-TDCOVTITLE = SY-TITLE

*--- Define los detalles del emisor y del destinatario
CALL FUNCTION 'CONVERT_COMM_TYPE_DATA'
EXPORTING
PI_COMM_TYPE = 'INT'
PI_COMM_VALUES = LW_COMM_VALUES
PI_REPID = SY-REPID
PI_SNAST = LW_SNAST
PI_MAIL_SENDER = SY-UNAME
IMPORTING
PE_ITCPO = GW_ITCPO
PE_MAIL_RECIPIENT = LW_RECIPIENT
PE_MAIL_SENDER = LW_SENDER
EXCEPTIONS
COMM_TYPE_NOT_SUPPORTED = 1
RECIPIENT_CREATION_FAILED = 2
SENDER_CREATION_FAILED = 3
OTHERS = 4.

Los objetos usados aquí se definen como sigue:

LW_COMM_VALUES TYPE SZADR_COMM_VALUES
LW_SENDER TYPE SWOTOBJID
LW_RECIPIENT TYPE SWOTOBJID
LW_SNAST TYPE SNAST

Esto te dará los detalles del emisor y del. Ahora todo lo que tienes que hacer es llamar a la función OPEN_FORM como sigue:

CALL FUNCTION 'OPEN_FORM'
EXPORTING
DEVICE = 'MAIL' <--- Note: Device is PRINTER for printing
DIALOG = SPACE
FORM = SAPscript form name
LANGUAGE = SY-LANGU
OPTIONS = GW_ITCPO
MAIL_SENDER = LW_SENDER
MAIL_RECIPIENT = LW_RECIPIENT
EXCEPTIONS
CANCELED = 1
DEVICE = 2
FORM = 3
OPTIONS = 4
UNCLOSED = 5
MAIL_OPTIONS = 6
ARCHIVE_ERROR = 7
INVALID_FAX_NUMBER = 8
MORE_PARAMS_NEEDED_IN_BATCH = 9
SPOOL_ERROR = 10
CODEPAGE = 11
OTHERS = 12.


Varios comentarios:

- Recuerda poner el COMMIT WORK después de la llamada al CLOSE_FORM.

- Comprueba con tu equipo de BASIS que tiene corriendo el proceso de envió a email externos cada 5 minutos que llama al programa RSCONN01.

- Si envías correos a direcciones de Hotmail o Yahoo, debes poner alguna dirección de e-mail host en la transaccion SCOT, de lo contrario sus servidores lo rechazarán o lo consideraran como correo no deseado o malicioso. DE echo si chequeas el log de SCOT --> Utilities --> Overview of send orders --> Trace --> Choose tendrás una entrada que reza: "error 550 relaying is prohibited."

Pregunta a tu exchange administrator para permitir que SAP server IP address confie en tu exchange server y podras enviar correos a cualquier dirección de email.

Espero que te sea útil ya nos contaras.
Un saludo, vista, suerte y al toro :D

tracer
22/03/06, 15:24:02
Otros tres puntos para

reijimher http://www.mundosap.com/foro/images/statusicon/user_online.gif
El mas rápido del oeste.

que se me ha adelantado antes de escribir el post que por cierto me parece muy correcto :D :D :D .

Alicia
22/03/06, 21:03:34
reijimher, Tracer muchas gracias por la ayuda dejenme decirles que ya una de sus respuestas dio resultado, mañana voy a probar la solución de Tracer, nuevamente muchas gracias, espero poder colaborales algún día...

Saludos

Alicia :p

Octaviano
23/03/06, 12:25:36
Buenos Dias a Todos en el Pequeño y Gran Mundo de SAp..!
Dejenme informarles que Yo soy ell Abap de Alicia, que tal..?

y como ella les dijo antes, muchas gracias reijimher y tracer, la solución dada por reijimher nos funcionó perfectamente en 4.7, ahora la de tracer estoy por probarla por que no entiendo muy bien, de todas formas estaré intentandolo..!

Ahora, tendo dos pregunticas para reijimher si no es mucha molestia, claro si otro sabe, bien recibido será..!
1.- en la instrucción:
set property of appitem 'Body' = ‘Adjunto, Pedidos’.
que debe ser colocado? una variable tipo char que contenga un texto para acompañar el correo..? xq con el texto directo como por ejemplo ‘Adjunto, Pedidos’ me da el error "comma without preceding colon (after SET ?)".

2.- Sabes como adjuntar a este correo, un archivo adicional al de la orden de compra distinto a PDF..?

Gracias de antemano..!

vlcavazos3FBN
25/07/06, 20:50:10
Necesito Mandar Un Formlario Pdf Por Mail

Y Vi Este Mensaje Pero Me Marca Error En Los Ole2_object

Alguien Me Puede Decir Como Solucionar Esto?

Gracias

CarlosjulioMM
26/08/06, 14:14:08
Tracer o quien primerlo lea este mensaje:

Me pueden ayudar con carácter urgente a ubicar los formatos de especificaciones de los sapscript de Pedidos de Compra y Peticiones de Oferta, donde aparecen las tablas, Estructuras y nombres de los campos técnicos.

Igual si tienen especificaciones de las cargas de Maestro de Materiales y Carga de ordenes de compra vigentes en SAP.

Agradezco su valiosa ayuda,

Cordialmente

CJ



Otros tres puntos para

reijimher http://www.mundosap.com/foro/images/statusicon/user_online.gif
El mas rápido del oeste.

que se me ha adelantado antes de escribir el post que por cierto me parece muy correcto :D :D :D .

zehiter
16/05/11, 21:16:59
Hola

Yo tengo la solución de Tracer y me funciona perfectamente bien, le envío a mi proveedor un correo electrónico con la orden de compra adjunta en formato PDF desde la tx ME22N.

Solo que ahora tengo un detalle que no logro solucionar :S.. quiero enviar un texto como cuerpo en el correo, que diga por ejemplo: "Le envio la orden de compra adjunto a este correo para su revision. Gracias" pero no logro ingresar este texto :(

Estoy usando las funciones:
ADDR_GET_NEXT_COMM_TYPE
CONVERT_COMM_TYPE_DATA
OPEN_FORM

Tracer o alguién que haya usado este mismo código podria darme una idea?

Saludos


Hola Alicia,

No te preocupes es muy fácil y solo requiere unas pocas lineas de código abap ;) . Para enviar un formulario sapscript por email, tienes que incluir estas funciones en el programa que adjuntarán al correo tu formulario como un pdf.

*--- Define la dirección email del destinatario
LW_COMM_VALUES-ADSMTP-SMTP_ADDR = john.smith@yahoo.com

*--- Define el Título
LW_SNAST-TDCOVTITLE = SY-TITLE

*--- Define los detalles del emisor y del destinatario
CALL FUNCTION 'CONVERT_COMM_TYPE_DATA'
EXPORTING
PI_COMM_TYPE = 'INT'
PI_COMM_VALUES = LW_COMM_VALUES
PI_REPID = SY-REPID
PI_SNAST = LW_SNAST
PI_MAIL_SENDER = SY-UNAME
IMPORTING
PE_ITCPO = GW_ITCPO
PE_MAIL_RECIPIENT = LW_RECIPIENT
PE_MAIL_SENDER = LW_SENDER
EXCEPTIONS
COMM_TYPE_NOT_SUPPORTED = 1
RECIPIENT_CREATION_FAILED = 2
SENDER_CREATION_FAILED = 3
OTHERS = 4.

Los objetos usados aquí se definen como sigue:

LW_COMM_VALUES TYPE SZADR_COMM_VALUES
LW_SENDER TYPE SWOTOBJID
LW_RECIPIENT TYPE SWOTOBJID
LW_SNAST TYPE SNAST

Esto te dará los detalles del emisor y del. Ahora todo lo que tienes que hacer es llamar a la función OPEN_FORM como sigue:

CALL FUNCTION 'OPEN_FORM'
EXPORTING
DEVICE = 'MAIL' <--- Note: Device is PRINTER for printing
DIALOG = SPACE
FORM = SAPscript form name
LANGUAGE = SY-LANGU
OPTIONS = GW_ITCPO
MAIL_SENDER = LW_SENDER
MAIL_RECIPIENT = LW_RECIPIENT
EXCEPTIONS
CANCELED = 1
DEVICE = 2
FORM = 3
OPTIONS = 4
UNCLOSED = 5
MAIL_OPTIONS = 6
ARCHIVE_ERROR = 7
INVALID_FAX_NUMBER = 8
MORE_PARAMS_NEEDED_IN_BATCH = 9
SPOOL_ERROR = 10
CODEPAGE = 11
OTHERS = 12.


Varios comentarios:

- Recuerda poner el COMMIT WORK después de la llamada al CLOSE_FORM.

- Comprueba con tu equipo de BASIS que tiene corriendo el proceso de envió a email externos cada 5 minutos que llama al programa RSCONN01.

- Si envías correos a direcciones de Hotmail o Yahoo, debes poner alguna dirección de e-mail host en la transaccion SCOT, de lo contrario sus servidores lo rechazarán o lo consideraran como correo no deseado o malicioso. DE echo si chequeas el log de SCOT --> Utilities --> Overview of send orders --> Trace --> Choose tendrás una entrada que reza: "error 550 relaying is prohibited."

Pregunta a tu exchange administrator para permitir que SAP server IP address confie en tu exchange server y podras enviar correos a cualquier dirección de email.

Espero que te sea útil ya nos contaras.
Un saludo, vista, suerte y al toro :D

Ariel-StaFe
27/09/11, 17:51:17
Estimados:
Estoy con este tema.
Me incliné por probar con la opción de Tracer pero no logro que envíe el mail.
Me da Exceptions = 6 = MAIL_OPTIONS
Al salir de la funcion OPEN_FORM

La estructura GW_ITCPO al salir de la funcion CONVERT_COMM_TYPE_DATA"
queda en blanco.
(pruebo con la impresion comun en lugar de enviar por mail, y tambien dicha estructura queda en blanco)

El resto esta todo igual.
Alguien me podria dar una mano ?
Que me puede estar faltando ?

Muchas gracias.
Saludos

Ariel-StaFe
24/10/11, 16:10:27
Gente:
Solo para dejar cerrado mi tema.
Les comento que no podia enviar mails por el firewall de mi empresa.
Lo resolvimos guardando en disco C los PDF y enviandolos con un programa externo
Saludos

josetaerre
08/08/13, 13:28:57
Buen día Tracer.

Una consulta. Y como hacer la relación del formulario con el pedido de compra? no veo como le indicas cual será el pedido que enviará...

Saludos

SidV
08/08/13, 13:53:12
Buen día Tracer.

Una consulta. Y como hacer la relación del formulario con el pedido de compra? no veo como le indicas cual será el pedido que enviará...

Saludos

Bienvenido al foro... pero...
Qué tiene que ver tu duda con "enviar PDF x mail" ?

Por favor, considera abrir un nuevo tema para dudas que no tienen que ver con el tema que se conversa. :rolleyes:

ngm
14/02/14, 17:36:42
Buenas tardes,
una consulta ya me funciona el envio del formulario por email, ahora me gustaria saber como haria para colocar un texto en el detalle del email.

Gracias!!!

SidV
14/02/14, 17:51:29
Buenas tardes,
una consulta ya me funciona el envio del formulario por email, ahora me gustaria saber como haria para colocar un texto en el detalle del email.

Gracias!!!
Abre un nuevo tema haciendo referencia a este tema, y brinda más detalles de lo que quieres, así los ABAPers te pueden ayudar mejor.

Saludos