enviar pdf por outlook desde proceso de fonfo
Hola estoy utilizando lo siguiente:
LOOP AT it_correo. * 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' = it_correo-correo. SET PROPERTY OF appitem 'Subject' = g_txt. SET PROPERTY OF appitem 'Body' = g_body. * Se adjunta el archivo IF NOT g_file IS INITIAL. CALL METHOD OF appitem 'Attachments' = attachments. CALL METHOD OF attachments 'Add' EXPORTING #1 = g_file. 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. ENDLOOP. me sirve de maravilla cuando corro el reporte en linea, una vez que agendo los jobs simplemente no funciona por favor alguien me puede indicar un metodo para enviar un pdf por correo en proceso de fondo? gracias |
Claro por que OLE está en el front-end, no en el servidor de aplicaciones.
Pregunta el PDF lo tienes a partir de que?: Una lista, un formulario, una orden spool, un PDF en tu disco local?...disco local imposible que lo puedas levantar en proceso de fondo. Saludos |
hola es un formulario (smartforms) |
Fijar lo siguientes atributos a la estructura de control de salida del formulario, parámetros CONTROL_PARAMETERS y OUTPUT_OPTIONS en el llamado del formulario .
control-getotf = 'X'. "con esto tendras el OTF para poder enviar el PDF control-no_dialog = 'X' "Sin dialogo para selección de impresora output-tdnoprev = 'X'. "sin vista previa Te adjunto rutina para armar el envio del correo. FORM ENVIAR_MAIL_Usuario. DATA: OBJPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE. DATA: OBJHEAD LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE. DATA: OBJBIN LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE. DATA: OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE. DATA: RECLIST LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE. DATA: DOC_CHNG LIKE SODOCCHGI1. DATA: TAB_LINES LIKE SY-TABIX. DATA L_NUM(3). DATA LARGO TYPE I. DATA SYSUBRC TYPE N. Data: v_ADDRNUMBER like ADRC-ADDRNUMBER, v_PERSNUMBER like ADRP-PERSNUMBER. DATA: BEGIN OF correo OCCURS 24. DATA: linea(255). DATA: END OF correo. DATA filesize TYPE I. * TOMAR OTF Y PASARLO A PDF CALL FUNCTION 'CONVERT_OTF' EXPORTING FORMAT = 'PDF' IMPORTING BIN_FILESIZE = FILESIZE TABLES OTF = T_OTF LINES = T_LINES EXCEPTIONS ERR_CONV_NOT_POSSIBLE = 1. * File Name DOC_CHNG-OBJ_NAME = 'MESSAGE'. * Mail Subject CONCATENATE 'Reclamo N° ' nast-objky into DOC_CHNG-OBJ_DESCR SEPARATED BY SPACE. * PACKING INFO TEXT DATA OBJTXT-LINE = 'Ver detalle de reclamo en Documento Adjunto.'. APPEND OBJTXT. DESCRIBE TABLE OBJTXT LINES TAB_LINES. READ TABLE OBJTXT INDEX TAB_LINES. DOC_CHNG-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJTXT ). * CLEAR OBJHEAD. * OBJHEAD = 'MiPDF.PDF'. * APPEND OBJHEAD. clear OBJPACK. OBJPACK-TRANSF_BIN = ''. OBJPACK-HEAD_START = 1. OBJPACK-HEAD_NUM = 0. OBJPACK-BODY_START = 1. OBJPACK-BODY_NUM = TAB_LINES. OBJPACK-DOC_TYPE = 'RAW'. APPEND OBJPACK. CALL FUNCTION 'QCE1_CONVERT' TABLES T_SOURCE_TAB = T_LINES T_TARGET_TAB = OBJBIN EXCEPTIONS CONVERT_NOT_POSSIBLE = 1. DESCRIBE TABLE OBJBIN LINES TAB_LINES. READ TABLE OBJBIN INDEX TAB_LINES. clear OBJPACK. OBJPACK-TRANSF_BIN = 'X'. OBJPACK-head_start = 1. OBJPACK-head_num = 0. OBJPACK-BODY_START = 1. OBJPACK-BODY_NUM = TAB_LINES. OBJPACK-DOC_TYPE = 'PDF'. OBJPACK-OBJ_NAME = 'COTIPDF'. CONCATENATE 'Cotizac_' nast-objky Into OBJPACK-OBJ_DESCR. * OBJPACK-OBJ_DESCR = 'Click para ver archivo'. OBJPACK-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJBIN ). APPEND OBJPACK. * Completing the recipient list target recipent clear RECLIST. select single ADDRNUMBER PERSNUMBER into (v_ADDRNUMBER, v_PERSNUMBER) from USR21 where BNAME = sy-uname. if sy-subrc eq 0. select single SMTP_ADDR into RECLIST-RECEIVER from ADR6 where ADDRNUMBER = v_ADDRNUMBER and PERSNUMBER = v_PERSNUMBER. if sy-subrc eq 0. RECLIST-REC_TYPE = 'U'. APPEND RECLIST. Else. * Si no encuentra el correo externo del usuario, * mandamos al correo interno de SAP. RECLIST-RECEIVER = sy-uname. RECLIST-REC_TYPE = 'B'. APPEND RECLIST. endif. ENDIF. * * Sending the document CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1' EXPORTING DOCUMENT_DATA = DOC_CHNG TABLES PACKING_LIST = OBJPACK * OBJECT_HEADER = OBJHEAD CONTENTS_BIN = OBJBIN CONTENTS_TXT = OBJTXT RECEIVERS = RECLIST EXCEPTIONS TOO_MANY_RECEIVERS = 1 DOCUMENT_NOT_SENT = 2 OPERATION_NO_AUTHORIZATION = 4 OTHERS = 99. ENDFORM. Con eso debería poder armar tu programa para que pueda correr en segundo plano. Saludos |
hola
Debo de tener algo de mas o me esta faltando algo porque no me genera el correo ni en linea ni en proceso de fondo, please si me puedes ayudar te anexo el codigo FORM f_generar_archivo_pdf. * Funcion para llamar el formulario CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = 'ZHRO_LSTD_NTFCCNS'(031) IMPORTING fm_name = g_funcion EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3. g_control_parameters-getotf = 'X'. g_control_parameters-no_dialog = 'X'. g_output_options-tdnoprev = 'X'. g_output_options-tddest = 'PDF '. g_output_options-tdnewid = 'X'. g_output_options-tdimmed = 'X'. CALL FUNCTION g_funcion EXPORTING indicador = g_indicador texto = g_texto output_options = g_output_options control_parameters = g_control_parameters user_settings = space IMPORTING job_output_info = t_otf_from_fm TABLES it_data = it_data EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 OTHERS = 5. IF sy-subrc EQ 0. t_otf[] = t_otf_from_fm-otfdata[]. ENDIF. ENDFORM. "f_generar_archivo_pdf FORM f_enviar_correo. SELECT * FROM pa0105 INTO TABLE it_pa0105a WHERE pernr IN p_remit AND endda EQ '99991231' AND subty EQ '0010'. LOOP AT it_pa0105a. MOVE: it_pa0105a-usrid_long TO it_correo-correo. APPEND it_correo. ENDLOOP. LOOP AT it_correo. * TOMAR OTF Y PASARLO A PDF CALL FUNCTION 'CONVERT_OTF' EXPORTING format = 'PDF' IMPORTING bin_filesize = filesize TABLES otf = t_otf lines = t_lines EXCEPTIONS err_conv_not_possible = 1. * File Name doc_chng-obj_name = 'MESSAGE'. * Mail Subject CONCATENATE 'Reclamo N° ' sy-datum INTO doc_chng-obj_descr SEPARATED BY space. * PACKING INFO TEXT DATA objtxt-line = 'Anexo Listado de Notificacion.'. APPEND objtxt. DESCRIBE TABLE objtxt LINES tab_lines. READ TABLE objtxt INDEX tab_lines. doc_chng-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ). * CLEAR OBJHEAD. * OBJHEAD = 'MiPDF.PDF'. * APPEND OBJHEAD. CLEAR objpack. objpack-transf_bin = ''. objpack-head_start = 1. objpack-head_num = 0. objpack-body_start = 1. objpack-body_num = tab_lines. objpack-doc_type = 'RAW'. APPEND objpack. CALL FUNCTION 'QCE1_CONVERT' TABLES t_source_tab = t_lines t_target_tab = objbin EXCEPTIONS convert_not_possible = 1. DESCRIBE TABLE objbin LINES tab_lines. READ TABLE objbin INDEX tab_lines. CLEAR objpack. objpack-transf_bin = 'X'. objpack-head_start = 1. objpack-head_num = 0. objpack-body_start = 1. objpack-body_num = tab_lines. objpack-doc_type = 'PDF'. objpack-obj_name = 'COTIPDF'. CONCATENATE 'Listado Notificacion' sy-datum INTO objpack-obj_descr. * OBJPACK-OBJ_DESCR = 'Click para ver archivo'. objpack-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objbin ). APPEND objpack. * Completing the recipient list target recipent CLEAR reclist. * SELECT SINGLE addrnumber persnumber * INTO (v_addrnumber, v_persnumber) * FROM usr21 * WHERE bname = sy-uname. * * IF sy-subrc EQ 0. * SELECT SINGLE smtp_addr INTO reclist-receiver * FROM adr6 * WHERE addrnumber = v_addrnumber * AND persnumber = v_persnumber. * IF sy-subrc EQ 0. * reclist-rec_type = 'U'. * APPEND reclist. * ELSE. ** Si no encuentra el correo externo del usuario, ** mandamos al correo interno de SAP. * reclist-receiver = sy-uname. * reclist-rec_type = 'B'. * APPEND reclist. * ENDIF. * ENDIF. reclist-receiver = it_correo-correo. reclist-rec_type = 'B'. APPEND reclist. * Sending the document CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1' EXPORTING document_data = doc_chng TABLES packing_list = objpack * OBJECT_HEADER = OBJHEAD contents_bin = objbin contents_txt = objtxt receivers = reclist EXCEPTIONS too_many_receivers = 1 document_not_sent = 2 operation_no_authorization = 4 OTHERS = 99. ENDLOOP. |
Quita esto:
g_output_options-tddest = 'PDF '. g_output_options-tdnewid = 'X'. g_output_options-tdimmed = 'X'. Son correos SAP Office?...porque si son externo el tipo debe ser 'U' no 'B'. Saludos |
Husos Horarios son GMT. La hora en este momento es 22:25:36. |
www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web