#5
|
|||
|
|||
Buen Día, Nosotros resolvimos de la siguiente forma: - Se debe tener activo el envío de Correos desde SAP a direecciones externas (SapConnect), esto se valida con un BASIS. - El usuario SAP que va a realizar el envío de correos debe tener en sus datos de Usuarios (tx:SU01) el correo electrónico que el sistema va a considerar como la dirección que envía el email (DE). - Los acreedores en su dato maestro (FK03) deben tener actualizada una dirección de correo electrónico que va a recibir el email. - El ABAP creó un punto de ampliación dentro del include LFQSRTOOLF05 y luego dentro de este punto de ampliación creó un include llamado z_GENPDFEMAIL y colocó este código: *&---------------------------------------------------------------------* *& Include Z_GENPDFEMAIL *&---------------------------------------------------------------------* data: lt_adr6 TYPE TABLE OF adr6, lt_lfa1 TYPE TABLE OF lfa1, lt_partner TYPE ty_idwtpartner, lt_fidoc TYPE ty_idwtfidoc, lr_lifnr TYPE RANGE OF lifnr, lv_email TYPE AD_SMTPADR, lt_usr21 TYPE usr21. DATA: w_output_options TYPE ssfcompop, w_control_parameters TYPE ssfctrlop, w_job_output_info TYPE ssfcrescl, w_job_output_options TYPE ssfcresop, w_spoolid LIKE LINE OF w_job_output_info-spoolids, w_src_spoolid LIKE tsp01-rqident, w_pdf_bytecount TYPE i, w_pdf_spoolid LIKE tsp01-rqident, w_otf_pagecount TYPE i, w_btc_jobname TYPE tbtcjob-jobname, w_btc_jobcount TYPE tbtcjob-jobcount, t_pdf LIKE tline OCCURS 0 WITH HEADER LINE, w_document_output_info TYPE ssfcrespd. DATA: w_document_data LIKE sodocchgi1, w_sender_address LIKE soextreci1-receiver, w_sender_address_type LIKE soextreci1-adr_typ, t_contents_txt LIKE solisti1 OCCURS 0 WITH HEADER LINE, t_contents_bin LIKE solisti1 OCCURS 0 WITH HEADER LINE, t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE, t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE. DATA: gd_buffer TYPE string. FIELD-SYMBOLS: <partner> TYPE LINE OF ty_idwtpartner, <partner2> TYPE LINE OF ty_idwtpartner, <fidoc> TYPE LINE OF ty_idwtfidoc, <fidoc2> TYPE LINE OF ty_idwtfidoc, <adr6> TYPE adr6, <wr_lifnr> LIKE LINE OF lr_lifnr, <lfa1> TYPE lfa1, <compcd> LIKE LINE OF p_compcd. break abap02. CHECK sy-ucomm EQ 'PRNT'. SELECT * FROM adr6 INTO TABLE lt_adr6 FOR ALL ENTRIES IN p_partner WHERE addrnumber EQ p_partner-addrnumber AND flgdefault EQ 'X'. LOOP AT p_partner ASSIGNING <partner>. APPEND INITIAL LINE TO lr_lifnr ASSIGNING <wr_lifnr>. <wr_lifnr>-sign = 'I'. <wr_lifnr>-option = 'EQ'. <wr_lifnr>-low = <partner>-partnerno. <wr_lifnr>-high = ''. ENDLOOP. SELECT * FROM lfa1 INTO TABLE lt_lfa1 WHERE lifnr in lr_lifnr. LOOP AT p_partner ASSIGNING <partner>. REFRESH: lt_partner, lt_fidoc, t_packing_list, t_contents_bin, t_contents_txt, t_receivers. APPEND INITIAL LINE TO lt_partner ASSIGNING <partner2>. MOVE-CORRESPONDING <partner> TO <partner2>. LOOP AT p_fidoc ASSIGNING <fidoc> WHERE partnerno EQ <partner>-partnerno. APPEND INITIAL LINE TO lt_fidoc ASSIGNING <fidoc2>. MOVE-CORRESPONDING <fidoc> TO <fidoc2>. ENDLOOP. w_output_options-tddest = 'LP01'. "Device Name w_output_options-tdnewid = 'X'. "New Spool w_output_options-tdimmed = ''. "Print Immediately w_control_parameters-no_dialog = 'X'. CALL FUNCTION h_fmname EXPORTING * archive_index = * archive_parameters = control_parameters = w_control_parameters * mail_appl_obj = * mail_recipient = * mail_sender = output_options = w_output_options user_settings = ' ' wtinterfaceall = h_interfaceall wtinterfaceform = h_interfaceform importing document_output_info = w_document_output_info job_output_info = w_job_output_info job_output_options = w_job_output_options TABLES wtcompcd = p_compcd wtpartner = lt_partner wtfidoc = lt_fidoc EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 OTHERS = 5. IF sy-subrc <> 0. * get the detailed error list for smart forms wa_formname = h_formname. CALL FUNCTION 'SSF_READ_ERRORS' IMPORTING errortab = it_errorlist. * error handling PERFORM exception_set TABLES p_error[] USING '1' p_glob CHANGING p_exception. ELSE. LOOP AT w_job_output_info-spoolids INTO w_spoolid. w_src_spoolid = w_spoolid. EXIT. ENDLOOP. CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF' EXPORTING src_spoolid = w_src_spoolid IMPORTING pdf_bytecount = w_pdf_bytecount pdf_spoolid = w_pdf_spoolid otf_pagecount = w_otf_pagecount btc_jobname = w_btc_jobname btc_jobcount = w_btc_jobcount 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. IF sy-subrc <> 0. ENDIF. ***JMCR: Se prepara y envía en Correo w_document_data-obj_name = 'DOMIC'. READ TABLE lt_lfa1 ASSIGNING <lfa1> WITH KEY lifnr = <partner>-partnerno. IF sy-subrc EQ 0. CONCATENATE 'Comp. Ret. ISLR' <lfa1>-name1 INTO w_document_data-obj_descr SEPARATED BY space. ENDIF. w_document_data-obj_langu = sy-langu. t_contents_txt-line = 'Estimado proveedor,'. APPEND t_contents_txt. READ TABLE p_compcd ASSIGNING <compcd> INDEX 1. IF sy-subrc EQ 0. CONCATENATE 'Adjunto enviamos los comprobantes de retención de' <compcd>-butxt INTO t_contents_txt-line SEPARATED BY space. ENDIF. APPEND t_contents_txt. DATA: tot_line TYPE i. DESCRIBE TABLE t_contents_txt LINES tot_line. t_packing_list-transf_bin = ' '. t_packing_list-head_start = '000000000000001'. t_packing_list-head_num = '000000000000000'. t_packing_list-body_start = '000000000000001'. t_packing_list-body_num = tot_line. t_packing_list-doc_type = 'RAW'. t_packing_list-obj_descr = space. APPEND t_packing_list. LOOP AT t_pdf. TRANSLATE t_pdf USING ' ~'. CONCATENATE gd_buffer t_pdf INTO gd_buffer. ENDLOOP. TRANSLATE gd_buffer USING '~ '. DO. t_contents_bin = gd_buffer. APPEND t_contents_bin. SHIFT gd_buffer LEFT BY 255 PLACES. IF gd_buffer IS INITIAL. EXIT. ENDIF. ENDDO. CLEAR tot_line. DESCRIBE TABLE t_contents_bin LINES tot_line. t_packing_list-transf_bin = 'X'. t_packing_list-head_start = '000000000000001'. t_packing_list-head_num = '000000000000001'. t_packing_list-body_start = '000000000000001'. t_packing_list-body_num = tot_line. t_packing_list-doc_type = 'PDF'. t_packing_list-obj_descr = H_INTERFACEFORM. "p_anexo Nomb. del Anexo t_packing_list-doc_size = w_pdf_bytecount. APPEND t_packing_list. READ TABLE lt_adr6 ASSIGNING <adr6> WITH KEY addrnumber = <partner>-addrnumber. IF sy-subrc EQ 0. t_receivers-receiver = <adr6>-smtp_addr. t_receivers-rec_type = 'U'. t_receivers-com_type = 'INT'. t_receivers-notif_del = 'X'. APPEND t_receivers. SELECT SINGLE * FROM usr21 INTO lt_usr21 WHERE bname EQ sy-uname. IF sy-subrc EQ 0. SELECT SINGLE smtp_addr FROM adr6 INTO lv_email WHERE addrnumber EQ lt_usr21-addrnumber AND persnumber EQ lt_usr21-persnumber AND flgdefault EQ 'X'. ENDIF. w_sender_address = lv_email. w_sender_address_type = 'INT'. * ** Envío de Mail CALL FUNCTION 'SO_DOCUMENT_SEND_API1' EXPORTING document_data = w_document_data put_in_outbox = 'X' sender_address = w_sender_address sender_address_type = w_sender_address_type commit_work = 'X' TABLES packing_list = t_packing_list contents_bin = t_contents_bin contents_txt = t_contents_txt 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. IF sy-subrc EQ 0. SUBMIT rsconn01 WITH mode EQ 'INT' AND RETURN. WAIT UP TO 2 SECONDS. ENDIF. ENDIF. ENDIF. ENDLOOP. Espero te sirva de ayuda. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|