Ver Mensaje Individual
  #3  
Viejo 06/02/14, 20:22:17
CESARCAES01 CESARCAES01 is offline
Member
 
Fecha de Ingreso: nov 2013
Mensajes: 46
FORM f_send_mail.
" Local data
DATA: ld_sender_address LIKE soextreci1-receiver. " Mail data
DATA: ld_sender_address_type LIKE soextreci1-adr_typ. " Mail data
DATA: ld_sent_to_all LIKE sonv-flag. " Mail data
DATA: ld_lname TYPE string.
DATA: ld_index TYPE string.
DATA: ld_cont TYPE I.

" WA's
DATA: ls_doc_data LIKE sodocchgi1. " Mail Data
DATA: ls_packing_list TYPE sopcklsti1. " Mail Data
DATA: ls_receivers TYPE somlreci1. " Mail Data
" IT'S
DATA: lt_packing_list TYPE TABLE OF sopcklsti1. " Mail Data
DATA: lt_contents_bin TYPE TABLE OF solisti1. " Mail Data
DATA: lt_contents_txt TYPE TABLE OF solisti1. " Mail Data
DATA: lt_contents_hex TYPE TABLE OF solisti1. " Mail Data
DATA: lt_receivers TYPE TABLE OF somlreci1. " Mail Data
" FS's
FIELD-SYMBOLS: <lfs_line> TYPE solisti1. " Mail Data
FIELD-SYMBOLS: <lfs_packing_list> TYPE sopcklsti1. " Mail Data
FIELD-SYMBOLS: <lfs_receivers> TYPE somlreci1. " Mail Data
FIELD-SYMBOLS: <lfs_report> LIKE LINE OF gt_report.

" Contenido del mensaje LT_CONTENTS_TXT
DO.
" Se debe crear una constante por cada linea.
" El nombre debe comenzar por lo indicado en GC_BEG_LINE_NAME y seguidamente un número consecutivo
MOVE sy-index TO ld_index. CONDENSE ld_index.
CONCATENATE gc_beg_line_name ld_index INTO ld_lname.
ASSIGN (ld_lname) TO <lfs_line>.
IF <lfs_line> IS ASSIGNED.
APPEND <lfs_line> TO lt_contents_txt.
UNASSIGN <lfs_line>.
ELSE.
EXIT.
ENDIF.
ENDDO.

" Document data - Common part
MOVE sy-langu TO ls_doc_data-obj_langu.
MOVE 'SAPRPT' TO ls_doc_data-obj_name.
MOVE gc_mail_title TO ls_doc_data-obj_descr.
MOVE 'F' TO ls_doc_data-sensitivty.

" Describe the message body
MOVE space TO ls_packing_list-transf_bin.
MOVE 1 TO ls_packing_list-head_start.
MOVE 0 TO ls_packing_list-head_num.
MOVE 1 TO ls_packing_list-body_start.
MOVE 'RAW' TO ls_packing_list-doc_type.
DESCRIBE TABLE lt_contents_txt LINES ls_packing_list-body_num.
APPEND ls_packing_list TO lt_packing_list.

" Attachment notif
MOVE 'X' TO ls_packing_list-transf_bin.
MOVE 1 TO ls_packing_list-head_start.
MOVE 0 TO ls_packing_list-head_num.
MOVE 1 TO ls_packing_list-body_start.
MOVE 'PDF' TO ls_packing_list-doc_type.
CONCATENATE gc_fileprefix sy-datum INTO ls_packing_list-obj_name.
APPEND ls_packing_list TO lt_packing_list.

" Send to - Common part
MOVE 'U' TO ls_receivers-rec_type.
MOVE 'INT' TO ls_receivers-com_type.
MOVE 'X' TO ls_receivers-notif_del.
MOVE 'X' TO ls_receivers-notif_ndel.
APPEND ls_receivers TO lt_receivers.


" Loop employees
LOOP AT gt_report ASSIGNING <lfs_report>.

" Document data - Employee specific part
MOVE <lfs_report>-file_size TO ls_doc_data-doc_size.
" Attachment notif
READ TABLE lt_packing_list ASSIGNING <lfs_packing_list> INDEX 2.
DESCRIBE TABLE lt_contents_bin LINES <lfs_packing_list>-body_num.
" Pay receipt
MOVE <lfs_report>-file_size TO <lfs_packing_list>-doc_size.
* MOVE <lfs_report>-pay_receipt TO lt_contents_bin.
" Send TO - Mail
READ TABLE lt_receivers ASSIGNING <lfs_receivers> INDEX 1.
* MOVE <lfs_report>-email TO <lfs_receivers>-receiver.
MOVE 'cesarcaes01@gmail.com' TO <lfs_receivers>-receiver.

"convert 132 to 255
CALL FUNCTION 'SX_TABLE_LINE_WIDTH_CHANGE'
EXPORTING
line_width_src = 132
line_width_dst = 255
TABLES
CONTENT_IN = <lfs_report>-pay_receipt
CONTENT_OUT = lt_contents_bin
EXCEPTIONS
err_line_width_src_too_long = 1
err_line_width_dst_too_long = 2
err_conv_failed = 3
OTHERS = 4.


CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
DOCUMENT_DATA = ls_doc_data
* PUT_IN_OUTBOX = PUT_IN_OUTBOX
* SENDER_ADDRESS = SPACE
* SENDER_ADDRESS_TYPE = SPACE
COMMIT_WORK = 'X'
IMPORTING
SENT_TO_ALL = ld_sent_to_all
TABLES
PACKING_LIST = lt_packing_list
CONTENTS_BIN = lt_contents_bin
CONTENTS_TXT = lt_contents_txt
RECEIVERS = lt_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 NE 0.
MESSAGE 'Error al enviar mail' TYPE 'W'.

else.
MESSAGE 'Mensaje enviado' TYPE 'W'.
ENDIF.

ENDLOOP.

ENDFORM.
Responder Con Cita