Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Is it possible to send by email a file to an external address In SAP 4.0B

Former Member
0 Kudos

Hi Friends,

I am trying to send a file to external email address using the function modules

SO_OBJECT_SEND or SO_NEW_DOCUMENT_ATT_SEND_API1

Is it possible SAP 4.0B version.

Please help me whether it is possible or not.

If it is possible,Do i need to do any settings.

Please help me with your valuable information ASAP.

Regards,

Kumar.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

It is posible to send the mail to external address. But some configurations have to be maitnaied in n

SCOT Tcode for INT (Internet) ->SMTP protocal. we need to give the Mail Host and Mail Port all this information is usually done by the BASIS. Please approach them for these settings and try again with the FM.

Regards

Lekha

3 REPLIES 3

Former Member
0 Kudos

Hi,

It is posible to send the mail to external address. But some configurations have to be maitnaied in n

SCOT Tcode for INT (Internet) ->SMTP protocal. we need to give the Mail Host and Mail Port all this information is usually done by the BASIS. Please approach them for these settings and try again with the FM.

Regards

Lekha

0 Kudos

Hi Lekha,

Thanks for your reply.

0 Kudos

Hi,

Well i did it and work...

I´m brasilian but I hope you understand my program.

try something like this: please: pay attention when reading Form envia_email

Thx and Rgrds ;]

REPORT zgehri001 NO STANDARD PAGE HEADING MESSAGE-ID zrh.

*----

-


  • Dicionário de Dados

*----

-


TABLES pernr. " Seleções standard p/reporting registros

*----

-


  • Type-Pools

*----

-


TYPE-POOLS abap.

*----

-


  • Infotipos

*----

-


INFOTYPES:

0000, " Registro mestre HR infotipo 0000 (Medidas)

0001, " Registro mestre HR: infotipo 0001 (atrib.org.)

0002, " Registro mestre HR infotipo 0002 (Dados pessoais)

0105. " Registro mestre HR infotipo 0105 (Comunicação)

*----

-


  • Estruturas

*----

-


TYPES:

BEGIN OF st_dados,

pernr(08) TYPE c, " Personal number

cname(40) TYPE c, " Nome funcionário

bukrs(04) TYPE c, " Empresa

kostl(04) TYPE c, " Centro de custo

user_rede(30) TYPE c, " Nome usuário na rede

user_sap(30) TYPE c, " Nome usuário no sistema SAP

END OF st_dados.

*----

-


  • Tabelas Internas e Work-areas

*----

-


DATA:

ti_dados TYPE TABLE OF st_dados INITIAL SIZE 0,

wa_dados TYPE st_dados.

*----

-


  • Ranges

*----

-


RANGES r_data FOR sy-datum.

*----

-


  • Constantes

*----

-


CONSTANTS:

c_e TYPE c VALUE 'E',

c_a TYPE c VALUE 'A',

c_type_raw(3) TYPE c VALUE 'RAW',

c_type_bin(3) TYPE c VALUE 'BIN',

c_com_type_int(3) TYPE c VALUE 'INT'.

*----

-


  • Tela de Seleção

*----

-


SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002.

PARAMETERS p_email TYPE somlreci1-receiver OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b1.

*----

-


  • Execução do programa

*----

-


INITIALIZATION.

REFRESH:

ti_dados,

r_data.

CLEAR:

wa_dados,

r_data.

START-OF-SELECTION.

PERFORM:

verifica_autorizacao,

monta_range.

GET pernr.

PERFORM get_pernr.

END-OF-SELECTION.

IF ti_dados[] IS INITIAL.

MESSAGE i035 WITH text-003. " Nenhum reg. encontrado

ELSE.

PERFORM envia_email.

ENDIF.

*&----


*

*& Form verifica_autorizacao

*&----


*

FORM verifica_autorizacao .

CONSTANTS c_tcode TYPE sy-tcode VALUE 'ZHR108'.

CALL FUNCTION 'AUTHORITY_CHECK_TCODE'

EXPORTING

tcode = c_tcode

EXCEPTIONS

ok = 1

not_ok = 2

OTHERS = 3.

IF sy-subrc <> 1 .

MESSAGE e035 WITH text-001. " Sem autorização para esta transação

ENDIF.

ENDFORM. " verifica_autorizacao

*&----


*

*& Form monta_range

*&----


*

FORM monta_range .

CLEAR r_data.

MOVE:

'I' TO r_data-sign,

'BT' TO r_data-option,

pn-begda TO r_data-low,

pn-endda TO r_data-high.

APPEND r_data.

ENDFORM. " monta_range

*&----


*

*& Form get_pernr

*&----


*

FORM get_pernr .

CLEAR wa_dados.

" Inicializa infotipos

CLEAR: p0000, p0001, p0105, p0002.

rp-provide-from-last p0001 space pn-begda pn-endda.

IF p0001-aedtm IN r_data.

rp-provide-from-last p0105 '0001' pn-begda pn-endda.

IF p0105-aedtm IN r_data.

MOVE p0105-usrid TO wa_dados-user_sap.

CLEAR p0105.

rp-provide-from-last p0105 '9002' pn-begda pn-endda.

IF p0105-aedtm IN r_data.

MOVE p0105-usrid TO wa_dados-user_rede.

rp-provide-from-last p0002 space pn-begda '31129999'.

MOVE:

p0001-pernr TO wa_dados-pernr,

p0002-cname TO wa_dados-cname,

p0001-bukrs TO wa_dados-bukrs,

p0001-kostl TO wa_dados-kostl.

APPEND wa_dados TO ti_dados.

ENDIF.

ENDIF.

ENDIF.

ENDFORM. " get_pernr

*&----


*

*& Form envia_email

*&----


*

FORM envia_email .

DATA :

document_data TYPE sodocchgi1,

ti_packing_list TYPE TABLE OF sopcklsti1 INITIAL SIZE 0,

ti_contents_txt TYPE TABLE OF solisti1 INITIAL SIZE 0,

ti_receivers TYPE TABLE OF somlreci1 INITIAL SIZE 0,

ti_objhead TYPE TABLE OF solisti1 INITIAL SIZE 0.

DATA:

wa_packing_list TYPE sopcklsti1,

wa_contents_txt TYPE solisti1,

wa_receivers TYPE somlreci1,

wa_objhead TYPE solisti1.

  • teste

DATA:

ti_contents_bin TYPE TABLE OF solisti1 INITIAL SIZE 0,

wa_contents_bin TYPE solisti1.

  • fim teste

DATA:

vl_smtp_addr TYPE adr6-smtp_addr,

vl_lines TYPE sy-tabix,

vl_data_beg(10) TYPE c,

vl_data_end(10) TYPE c.

CLEAR:

document_data,

ti_packing_list,

ti_contents_txt,

ti_receivers,

ti_objhead,

wa_packing_list,

wa_contents_txt,

wa_receivers,

wa_objhead,

vl_smtp_addr,

vl_data_beg,

vl_data_end.

REFRESH:

ti_packing_list,

ti_contents_txt,

ti_receivers,

ti_objhead.

  • Parâmetros do E-mail

document_data-obj_name = 'EMAIL'.

document_data-obj_descr = text-004. "Assunto E-mail

document_data-no_change = abap_true.

document_data-sensitivty = 'O'.

document_data-priority = '1'.

  • Lista de Destinatário(s)

MOVE p_email TO vl_smtp_addr.

TRANSLATE vl_smtp_addr TO UPPER CASE.

IF NOT vl_smtp_addr IS INITIAL. " Usuário do e-mail externo, outlook

wa_receivers-receiver = vl_smtp_addr.

wa_receivers-rec_type = c_e.

wa_receivers-com_type = c_com_type_int.

wa_receivers-express = abap_true.

APPEND wa_receivers TO ti_receivers.

ENDIF.

  • Conteúdo do E-mail

CONCATENATE pn-begda6(2) '.' pn-begda4(2) '.' pn-begda(4)

INTO vl_data_beg.

CONCATENATE pn-endda6(2) '.' pn-endda4(2) '.' pn-endda(4)

INTO vl_data_end.

CONCATENATE

text-005 vl_data_beg c_a vl_data_end

INTO wa_contents_txt-line SEPARATED BY space.

APPEND wa_contents_txt TO ti_contents_txt.

CLEAR vl_lines.

DESCRIBE TABLE ti_contents_txt LINES vl_lines.

READ TABLE ti_contents_txt INDEX vl_lines INTO wa_contents_txt.

document_data-doc_size =

( vl_lines - 1 ) * 255 + STRLEN( wa_contents_txt-line ).

  • Atributos para conteúdo do E-mail

wa_packing_list-head_start = 1.

wa_packing_list-head_num = 1.

wa_packing_list-body_start = 1.

wa_packing_list-body_num = vl_lines.

wa_packing_list-doc_type = c_type_raw.

APPEND wa_packing_list TO ti_packing_list.

  • Anexar arquivo

CLEAR: wa_dados, wa_contents_txt.

LOOP AT ti_dados INTO wa_dados.

CONCATENATE

wa_dados-pernr

wa_dados-cname

wa_dados-bukrs

wa_dados-kostl

wa_dados-user_rede

wa_dados-user_sap

INTO wa_contents_bin-line.

APPEND wa_contents_bin TO ti_contents_bin. CLEAR wa_contents_bin.

ENDLOOP.

  • Atributos para anexo do E-mail

CLEAR vl_lines.

DESCRIBE TABLE ti_contents_bin LINES vl_lines.

wa_packing_list-doc_size = vl_lines * 255.

wa_packing_list-transf_bin = abap_true.

wa_packing_list-head_start = 1.

wa_packing_list-head_num = 0.

wa_packing_list-body_start = 1.

wa_packing_list-body_num = vl_lines.

wa_packing_list-doc_type = c_type_raw.

wa_packing_list-obj_name = 'TESTE'.

CONCATENATE sy-sysid sy-datlo '.txt' INTO wa_packing_list-obj_descr.

APPEND wa_packing_list TO ti_packing_list.

  • Nome do arquivo

CONCATENATE sy-sysid sy-datlo '.TXT' INTO wa_objhead-line.

APPEND wa_objhead TO ti_objhead.

  • Função para envio de email

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

document_data = document_data

put_in_outbox = abap_true

commit_work = abap_true

TABLES

packing_list = ti_packing_list

object_header = ti_objhead

contents_bin = ti_contents_bin

contents_txt = ti_contents_txt

receivers = ti_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 <> 0.

MESSAGE e035 WITH text-006. " Erro enviando e-mail...

ELSE.

SUBMIT rsconn01 WITH mode = c_com_type_int AND RETURN.

MESSAGE i035 WITH text-007. " E-mail enviado com sucesso...

ENDIF.

" Libera objetos locais

FREE:

document_data,

ti_packing_list,

ti_contents_txt,

ti_receivers,

wa_packing_list,

wa_contents_txt,

wa_receivers,

vl_smtp_addr,

vl_lines,

vl_data_beg,

vl_data_end.

ENDFORM. " envia_email

thx and regrds