|
#1
|
|||
|
|||
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 Úlima edición por Mauricio Hidalgo fecha: 09/07/13 a las 18:47:41. |
#2
|
|||
|
|||
hola es un formulario (smartforms) |
#3
|
|||
|
|||
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 |
#4
|
|||
|
|||
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. |
#5
|
|||
|
|||
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 |
Herramientas | Buscar en Tema |
Desplegado | |
|
|