MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Mail a varios Destinatarios (foro/showthread.php?t=32127)

dpalavecino 03/09/09 14:36:03

Mail a varios Destinatarios
 
Buenos dias a todos, le comento que estoy teniendo problemas para enviar correos a Varios destinatarios ya que si le paso como parametro mas de una direccion de correo cancela en programa.
Agradeceria si alguien me puede orientar un poco.
Saludos

CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = w_doc_data
put_in_outbox = 'X'
sender_address = ld_sender_address
sender_address_type = ld_sender_address_type
commit_work = 'X'
IMPORTING
sent_to_all = w_sent_all
TABLES
packing_list = t_packing_list
contents_bin = t_attachment
contents_txt = it_message
receivers = t_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.

Demian M. Palavecino

martin89 03/09/09 16:42:20

Que tal,

mirá yo para enviar correos use esta función

* Sending the document
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = doc_chng
put_in_outbox = 'X'
commit_work = 'X'
TABLES
packing_list = lt_objpack
object_header = lt_objhead
contents_bin = lt_objbin
contents_txt = lt_objtxt
receivers = lt_reclist
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
operation_no_authorization = 4
OTHERS = 99.


IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.


donde en la tabla LT_RECLIST le paso los destinatarios
(la completé de esta manera). Seguramente vas a tener qe cambiar el campo REC_TYPE proqe yo use una lista de distribución.

LOOP AT lt_mails INTO le_mails.
lt_reclist-receiver = le_mails-grupo. "NOMBRE DE LA LISTA
lt_reclist-express = 'X'.
lt_reclist-rec_type = 'C'. "Usa lista de distribución.
lt_reclist-copy = 'X'.
APPEND lt_reclist.
ENDLOOP.




saludos!

darona 07/09/09 16:36:48

Esa es la buena
 
La función buena es la que usa Martin89, ya que usa una estructura para los destinatarios a la que puedes añadir todos los que quieras (además puede enviar documentos adjuntos).

Si prefieres seguir usando la tuya tendrás que crearte una tabla interna o rango en el que introducir todos los destinatarios y hacer un loop para ir cambiando el destinatario, pero eso lo que hará es enviar el mismo mail varias veces, no un único mail a todos los destinatarios.

Espero que te haya servido de ayuda.

Saludos,
David.

fvergara 02/10/09 21:10:37

Consulta maestros
 
Es posible tener un ejemplo de código de abap agradeceria mucho recien me inicio en el tema de abap y no veo un ejemplo mas completo.

Gracias de antemano

nievesmp 05/10/09 11:15:18

form rellena_destinatarios
tables receptores structure somlreci1
changing sw_alguno.
*
data: begin of usu_rec occurs 2,
email like zsd_info_interf-email,
end of usu_rec.
sw_alguno = 'X'.
clear receptores.
* receptores-receiver = usu_rec-email.
receptores-receiver = 'usuario@prueba.com'.
receptores-rec_type = 'U'. "dirección internet
receptores-express = 'X'.
append receptores.
sw_alguno = 'X'.
clear receptores.
* receptores-receiver = usu_rec-email.
receptores-receiver = 'usuario@prueba.com'.
receptores-rec_type = 'U'. "dirección internet
receptores-express = 'X'.
append receptores.

endform. "rellena_destinatarios
* Aqui se acaban de cargar dos destinatarios, también se puede hacer con un loop direccionando a una tabla.

* En la parte donde pases la funcíon pasa la tabla de dsitinatarios:


call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
exporting
document_data = dat_asunto
put_in_outbox = 'X'
*>>>>>>>>> OJO: cuando es a una dirección externa es necesario activar
* el commit work; sino no se enviará nada:
commit_work = 'X'
* IMPORTING
* SENT_TO_ALL =
* NEW_OBJECT_ID =
tables
packing_list = dat_pack
object_header = dat_cab
contents_bin = dat_bin
contents_txt = dat_cuerpo
* CONTENTS_HEX =
* OBJECT_PARA =
* OBJECT_PARB =
receivers = receptores " Aquí va la tabla de destinatarios
exceptions
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
others = 8.

endform. "ENVIA_MENSAJE

ALNICO 05/10/09 13:40:37

Saludos a todos y disculpen la intromision , pero ya que estan hablando de esta funcion me parecio pertinente pedir ayuda con este referente , estoy tratando de automatizar la transaccion sost que es donde va el correo una vez que se usa la funcion que se habla aqui , ahora el problema es que por mas que hago la grabacion no procesa el envio , podrian darme algunos tips o decirme como podria hacerlo ( sin neceisdad de job ) porque lo que se quiere que una vez que se envie envie el correo usando la funcion esta salga de una vez sin tener que esperar en sost .

Belerophonte 11/11/09 23:06:31

Envio de correo a diferentes destinatarios
 
Hola a todos yo utilice lo siguiente, saludos

FORM send .
DATA lv_texto(30) TYPE c.

REFRESH main_text.

TRY.

* -------- create persistent send request ------------------------
send_request = cl_bcs=>create_persistent( ).

* -------- create and set document with attachment ---------------
* create document object from internal table with text
APPEND 'Pedidos próximos a vencer y vencidos' TO main_text.
CONCATENATE 'Grupo de Compras:' gc_tab
gv_ekgrp gc_tab
INTO lv_texto.
APPEND lv_texto TO main_text.
APPEND 'El contenido del reporte esta incluido en el archivo anexo' TO main_text.

document = cl_document_bcs=>create_document(
i_type = 'RAW'
i_text = main_text
i_subject = 'Pedidos próximos a vencer y vencidos' ).

* add the spread sheet as attachment to document object
document->add_attachment(
i_attachment_type = 'xls'
i_attachment_subject = 'Pedidos'
i_attachment_size = size
i_att_content_hex = binary_content ).

* add document object to send request
send_request->set_document( document ).

* --------- add recipient (e-mail address) -----------------------
* create recipient object
LOOP AT t_mailto INTO w_mailto.
recipient = cl_cam_address_bcs=>create_internet_address( w_mailto-mailto ).
* add recipient object to send request
send_request->add_recipient( recipient ).
ENDLOOP.



* ---------- send document ---------------------------------------
sent_to_all = send_request->send( i_with_error_screen = 'X' ).

COMMIT WORK.

IF sent_to_all IS INITIAL.
MESSAGE i500(sbcoms) WITH mailto.
ELSE.
MESSAGE s022(so).
ENDIF.

* ------------ exception handling ----------------------------------
* replace this rudimentary exception handling with your own one !!!
CATCH cx_bcs INTO bcs_exception.
MESSAGE i865(so) WITH bcs_exception->error_type.
ENDTRY.
ENDFORM. " SEND

yapbig 12/11/09 11:59:05

ALNICO:
Luego de que se ejecute todo el código que genera tu correo agrega el siguiente código y se va a enviar el mismo

SUBMIT rsconn01 WITH mode = 'INT'
WITH output = 'X'
AND RETURN.

Saludos cordiales,

sereyo 02/06/11 10:03:50

hola,

quería haceros una consulta. Tengo el código tal y como lo tenéis puesto aquí para enviar un mail a varios destinatarios. El proble es que cuando se envían, lo hace correctamente, pero si yo entro en la SOST a visualizar el correo, veo que me crea un correo por cada destinatario que le paso a la función SO_DOCUMENT_SEND_API1.
En cada correo me pone la lista de destinatarios correcta, pero ¿por qué manda tantos correos como destinatarios? ¿me podrían ayudar?

Un saludo.

sereyo 02/06/11 10:04:47

duda mail variso destinatarios
 
hola,

quería haceros una consulta. Tengo el código tal y como lo tenéis puesto aquí para enviar un mail a varios destinatarios. El proble es que cuando se envían, lo hace correctamente, pero si yo entro en la SOST a visualizar el correo, veo que me crea un correo por cada destinatario que le paso a la función SO_DOCUMENT_SEND_API1.
En cada correo me pone la lista de destinatarios correcta, pero ¿por qué manda tantos correos como destinatarios? ¿me podrían ayudar?

Un saludo.


Husos Horarios son GMT. La hora en este momento es 18:52:47.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web