Mandar un pdf en mail
Hola mi consulta es como puedo enviar un pdf por mail, ósea yo trasformo el smanfromts en pdf pero ahora debo enviarlo por mail y no se como e visto por la red unas opciones pero no logro entenderlas bien si alguien me podria ayudar se lo agradecería hai les pongo el código donde trasformo a pdf
DATA: lv_solicitud TYPE zthr_0004-num_solicitud, i_pdf LIKE tline OCCURS 100 WITH HEADER LINE, W_CTRLOP TYPE SSFCTRLOP, V_LEN_IN LIKE SOOD-OBJLEN, I_OTF TYPE ITCOO OCCURS 0 WITH HEADER LINE, W_COMPOP TYPE SSFCOMPOP, I_TLINE TYPE TABLE OF TLINE," WITH HEADER LINE, W_RETURN TYPE SSFCRESCL, SPOOLNO type TSP01-RQIDENT. " Orden Spool W_CTRLOP-GETOTF = 'X'. W_CTRLOP-NO_DIALOG = 'X'. W_COMPOP-TDNOPREV = 'X'. W_COMPOP-TDDEST = 'LOCL'. W_COMPOP-TDARMOD = '1'. W_COMPOP-TDCOPIES = '1'. W_COMPOP-TDPRINTER = 'SAPWIN'. W_COMPOP-TDLIFETIME = '8'. CALL FUNCTION '/1BCDWB/SF00000006' EXPORTING CONTROL_PARAMETERS = W_CTRLOP OUTPUT_OPTIONS = W_COMPOP USER_SETTINGS = 'X' "Aca los parametros que necesita el smartform gp_logo = p_logo gp_n_solicitud = p_n_solicitud gp_nom_tra = p_nom_tra gp_rut_tra = p_rut_tra gp_empresa = p_empresa gp_fech_ing_emp = p_fech_ing_emp gp_sindicato = p_sindicato gp_tip_boni = p_tip_boni gp_fech_soli = p_fech_soli gp_rut_bene = p_rut_ben gp_nom_famil = p_nom_hc gp_ap_paterno = p_ap_paterno gp_ap_materno = p_ap_materno IMPORTING JOB_OUTPUT_INFO = W_RETURN "aca me devuelve el smartform TABLES tp_for001 = tp_001 EXCEPTIONS FORMATTING_ERROR = 1 INTERNAL_ERROR = 2 SEND_ERROR = 3 USER_CANCELED = 4 OTHERS = 5. IF SY-SUBRC NE 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. I_OTF[] = W_RETURN-OTFDATA[]. CALL FUNCTION 'CONVERT_OTF' EXPORTING FORMAT = 'PDF' MAX_LINEWIDTH = 132 IMPORTING BIN_FILESIZE = V_LEN_IN TABLES OTF = I_OTF LINES = I_TLINE EXCEPTIONS ERR_MAX_LINEWIDTH = 1 ERR_FORMAT = 2 ERR_CONV_NOT_POSSIBLE = 3 OTHERS = 4. IF SY-SUBRC EQ 0. ENDIF. |
Prueba...
Estimado prueba con este código, a mi me funko
Saludos. REPORT zkpi0020. *** TABLES: usr01. "Maestro de usuarios * DATA: d_lineas LIKE sy-tabix, i_pdf LIKE tline, fich_p_borrar LIKE tsp01-rqtitle, pbyte TYPE i, i_spoolreq LIKE rsporq, spool_id LIKE tsp01-rqident, respuesta LIKE sy-tabix, i_otf, fecha_w(16), indice LIKE sy-tabix, datc LIKE rsporq-rqcretime, l_comando LIKE sxpgcolist-name. * Tablas Internas DATA: t_pdf LIKE tline OCCURS 0, tspoolreq LIKE rsporq OCCURS 0, lista_sel LIKE spopli OCCURS 0 WITH HEADER LINE. DATA: BEGIN OF i_output OCCURS 10. INCLUDE STRUCTURE btcxpm. DATA: END OF i_output. DATA: d_status LIKE extcmdexex-status, d_exit LIKE extcmdexex-exitcode. DATA : p_to(60), p_subj(30), p_body(50). * Include Objetos OLE para envio de mensajes INCLUDE ole2incl. ***-------------------------------------------------------------------** ** PANTALLA DE SELECCION SELECTION-SCREEN SKIP. SELECTION-SCREEN BEGIN OF BLOCK datos WITH FRAME TITLE text-000. PARAMETERS: p_arch LIKE tsp01-rqtitle, p_fich LIKE rlgrap-filename OBLIGATORY DEFAULT 'C:\Envios\', usernam LIKE sy-uname DEFAULT sy-uname, disp LIKE rspotype-device OBLIGATORY, datum LIKE sy-datum DEFAULT sy-datum OBLIGATORY. SELECTION-SCREEN END OF BLOCK datos. * INITIALIZATION. PERFORM recuperar_impresora. ***------------------------------------------------------------------*** START-OF-SELECTION. PERFORM buscar_datos_seleccion. * IF respuesta NE 0. PERFORM tratamiento_pdf. DESCRIBE TABLE t_pdf LINES d_lineas. IF d_lineas NE 0. "solo hago el download si tengo datos PERFORM bajar_archivo. PERFORM envia-mail. OPEN DATASET p_fich FOR INPUT IN BINARY MODE. "IN TEXT MODE. DELETE DATASET p_fich. ENDIF. ENDIF. END-OF-SELECTION. *---------------------------------------------------------------------* * Form BUSCAR_DATOS_SELECCION *---------------------------------------------------------------------* FORM buscar_datos_seleccion. CONCATENATE sy-datum '00000000' INTO fecha_w. CALL FUNCTION 'RSPO_FIND_SPOOL_REQUESTS' " Leemos los spools EXPORTING allclients = ' ' authority = 'X' datatype = '*' has_output_requests = '*' rq0name = '*' rq1name = '*' rq2name = '*' rqdest = disp rqident = 0 rqowner = usernam * rqcretime = fecha_w TABLES spoolrequests = tspoolreq EXCEPTIONS no_permission = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE ID 'Z1' TYPE 'E' NUMBER 000 WITH text-001. respuesta = 4. ELSE. PERFORM elegir-spool. ENDIF. ENDFORM. " BUSCAR_DATOS_SELECCION *---------------------------------------------------------------------* * Form TRATAMIENTO_PDF *---------------------------------------------------------------------* FORM tratamiento_pdf. * Miramos qué tipo de spool 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 ENDFORM. " TRATAMIENTO_PDF *---------------------------------------------------------------------* * Form BAJAR_ARCHIVO *---------------------------------------------------------------------* FORM bajar_archivo. CONCATENATE p_fich p_arch '.pdf' INTO p_fich. CALL FUNCTION 'WS_DOWNLOAD' EXPORTING bin_filesize = pbyte filename = p_fich 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 *---------------------------------------------------------------------* * Form RECUPERAR_IMPRESORA *---------------------------------------------------------------------* FORM recuperar_impresora. SELECT SINGLE spld FROM usr01 INTO CORRESPONDING FIELDS OF usr01 WHERE bname = sy-uname. IF sy-subrc = 0. disp = usr01-spld. ENDIF. ENDFORM. " RECUPERAR_IMPRESORA *---------------------------------------------------------------------* * Form ELEGIR-SPOOL *---------------------------------------------------------------------* FORM elegir-spool. * Definimos la lista para elegir la orden spool SORT tspoolreq. LOOP AT tspoolreq INTO i_spoolreq. IF i_spoolreq-rqcretime+0(8) = datum. IF i_spoolreq-rqtitle IS INITIAL. CONCATENATE i_spoolreq-rqident i_spoolreq-rq0name i_spoolreq-rq1name i_spoolreq-rq2name INTO lista_sel-varoption SEPARATED BY space. ELSE. CONCATENATE i_spoolreq-rqident i_spoolreq-rqtitle INTO lista_sel-varoption SEPARATED BY space. ENDIF. APPEND lista_sel. ELSE. DELETE tspoolreq. ENDIF. ENDLOOP. * Y Pedimos que se seleccione la orden spool SORT lista_sel BY varoption+0(10) AS TEXT. IF sy-subrc = 0. respuesta = 0. CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY' EXPORTING endpos_col = 60 endpos_row = 10 startpos_col = 1 startpos_row = 1 titletext = text-010 IMPORTING choise = respuesta TABLES valuetab = lista_sel EXCEPTIONS break_off = 1 OTHERS = 2. IF ( sy-subrc = 1 ) OR ( sy-subrc = 2 ). LEAVE TO SCREEN 0. ELSE. IF respuesta NE 0. MOVE respuesta TO indice. ENDIF. READ TABLE lista_sel INTO i_spoolreq INDEX indice. SHIFT i_spoolreq LEFT DELETING LEADING space. spool_id = i_spoolreq-rqident. ENDIF. ENDIF. ENDFORM. " ELEGIR-SPOOL *&---------------------------------------------------------------------* *& Form ENVIA-MAIL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM envia-mail. 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. * 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' = p_to. SET PROPERTY OF appitem 'Subject' = p_subj. SET PROPERTY OF appitem 'Body' = p_body. **************************************** *Se adjunta el fichero IF NOT p_fich IS INITIAL. CALL METHOD OF appitem 'Attachments' = attachments. CALL METHOD OF attachments 'Add' EXPORTING #1 = p_fich. 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. ENDFORM. "ENVIA-MAIL |
Gracia s por tu ayuda pero no e s lo que estoy buscando en si lo que pasaste usa el Outlook lo cual no necesariamente van a usar, y la parte de pdf ya esta echa solo deseo saber como mandar el mail con el archivo pdf adjunto pero gracias de todas forma XD
|
Buscando por Internet lo que encuentro es esta función pero no entiendo bien como ago para cargarle el archivo pdf dado que en algunos lados lo convierten a bin y en otros no pero definen siempre una estructura objekpack o algo así pero n entiendo bien donde cargan ahí si me podrían ayudar agradecería
|
Husos Horarios son GMT. La hora en este momento es 11:58:44. |
www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web