Ver Mensaje Individual
  #5  
Viejo 30/08/10, 12:28:08
rochoa rochoa is offline
Junior Member
 
Fecha de Ingreso: jun 2007
Mensajes: 23

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.
Responder Con Cita