Ver la Versión Completa : Envío de correo desde cuenta genérica
felix_cid
23/09/08, 19:37:27
Hola a todos:
Por casualidad conoce alguien de Uds. la manera de poder enviar correo desde SAP a uno a varios destinatarios, pero cuyo origen sea SIEMPRE una cuenta genérica, independiente de la cuenta del usuario que está ejecutando el programa.
Espero sus noticias y muchas gracias a todos por vuestra ayuda.
Saludos.:confused: :confused: :eek:
Jotabin
23/09/08, 19:44:32
si usás la función estándar SO_DOCUMENT_SEND_API1 para el envío de mails, el remitente se define vía parámetros
felix_cid
25/09/08, 21:18:17
¿Me podrías dar un ejemplo de como poder utilizar la función SO_DOCUMENT_SEND_API1?.....he tratado de probar de diferentes maneras y parámetros, pero no he logrado que pueda enviar un correo EXTERNO, sólo me envía correos al inbox de SAP. Probé cambiando parámetros e indicando que es un correo tipo U y del tipo INT, pero no me aparece en ningún momento en la transacción SCOT.
Espero tus comentarios, de antemano muchas gracias.
tomasap
23/10/09, 09:08:11
Buenas, ¿Encontrste algo felix?
Gracais
A ver si puedo ayudar.
Yo uso este código para mandar a varias personas.
El q lo envía lo puedes poner tú o te lo coge la mákina del usuario actual.
Luego hay q liberarlo desde la transacción SCOT, o tardará un rato en hacerlo sólo.
Si aún así no te llega el email, es porque han de modificar algo en SAP para q deje mandar correos fuera.
Eso es otra historia.
Saludos
**********************************************
* Email
**********************************************
* Declaraciones de tablas internas
DATA: i_receivers TYPE TABLE OF somlreci1 WITH HEADER LINE,
** Objetos a mandar por email
i_objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
i_objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,
i_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,
i_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
* Declaraciones de estructuras
wa_objhead TYPE soli_tab,
wa_doc_chng TYPE sodocchgi1,
w_data TYPE sodocchgi1,
* Declaración de variables
v_len_out TYPE so_obj_len,
v_len_outn TYPE i,
v_lines_txt TYPE i,
v_lines_bin TYPE i,
* Importar de la bapi
zsend_to_all TYPE so_text001,
znew_order TYPE so_obj_id.
*******************************************************************
*/////////////////////////////////////////////////////////////
* A S U N T O , R E M I T E N T E y D E S T I N A T A R I O
*/////////////////////////////////////////////////////////////
DATA: asunto_email(255) TYPE c VALUE 'Asunto EMAIL'.
DATA: remitente TYPE so_rec_ext. "kien envía, se puede poner uno fijo
DATA: destinatario TYPE ad_smtpadr
VALUE 'direccion ARROBA direccion.com'.
* Si no se pone remitente, el sistema lo coge automáticamente
* de la sesión del usuario, de este usuario
*******************************************************************
* Variable del texto a enviar
DATA: v_texto TYPE string.
TYPES: BEGIN OF t_texttable,
line(255) TYPE c,
END OF t_texttable.
* Estructura del texto a enviar
DATA: w_texttable TYPE t_texttable.
* Tabla donde estará el texto a enviar
DATA: i_texttable TYPE TABLE OF t_texttable.
REFRESH: i_reclist, i_objtxt, i_objbin, i_objpack.
CLEAR wa_objhead.
*******************************************************************
*////////////////////////////////////////
* T E X T O D E L E M A I L
*////////////////////////////////////////
*-----1ª línea
v_texto = 'Prueba del cuerpo del email, primera línea.'.
w_texttable-line = v_texto.
APPEND w_texttable TO i_texttable.
*-----2ª línea
v_texto = 'Podemos seguir escribindo, segunda línea.'.
w_texttable-line = v_texto.
APPEND w_texttable TO i_texttable.
*******************************************************************
* i_texttable es una tabla con un campo texto ( 255 caracteres )
* cargamos el cuerpo del email en la tabla a mandar
i_objtxt[] = i_texttable[].
DESCRIBE TABLE i_objtxt LINES v_lines_txt.
READ TABLE i_objtxt INDEX v_lines_txt.
wa_doc_chng-obj_name = asunto_email.
wa_doc_chng-expiry_dat = sy-datum + 10.
wa_doc_chng-obj_descr = asunto_email.
wa_doc_chng-sensitivty = 'F'.
wa_doc_chng-doc_size = v_lines_txt * 255.
CLEAR i_objpack-transf_bin.
i_objpack-head_start = 1.
i_objpack-head_num = 0.
i_objpack-body_start = 1.
i_objpack-body_num = v_lines_txt.
i_objpack-doc_type = 'RAW'.
APPEND i_objpack.
* ---> Destinatario del correo
CLEAR i_reclist.
i_reclist-receiver = destinatario.
i_reclist-rec_type = 'U'. "Usuario de internet
APPEND i_reclist.
** Akí puedes apendear los usuarios q kieras
** con un loop a una tabla ...
*CLEAR i_reclist.
*i_reclist-receiver = destinatario2.
*i_reclist-rec_type = 'U'. "Usuario de internet
*APPEND i_reclist.
* ---> Envio de correo al destinatario
CLEAR i_objpack.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = wa_doc_chng
put_in_outbox = 'X'
sender_address = remitente
sender_address_type = 'SMTP'
commit_work = 'X'
IMPORTING
sent_to_all = zsend_to_all
new_object_id = znew_order
TABLES
packing_list = i_objpack
object_header = wa_objhead
contents_bin = i_objbin
contents_txt = i_objtxt
* contents_hex = contents_hex "no uso
* object_para = object_para "no uso
* object_parb = object_parb "no uso
receivers = i_reclist
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.
Belerophonte
11/11/09, 22:51:56
Hola , yo mande correos de esta forma, solo que hay que pasarle como parametro el correo al cual sera enviado, ojala te sirva.
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
www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web