Application Development and Automation 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: 
Read only

send Email through abapprograming

Former Member
0 Likes
944

hi

actualy i have a document and i want to send it to sombody inbox through email in sap-abap.

i need step by step creation of email through abap

4 REPLIES 4
Read only

Former Member
0 Likes
680

Hi Pankaj,

Welcome To SDN!!

Check these links.

http://www.geocities.com/mpioud/Z_EMAIL_ABAP_REPORT.html

http://www.thespot4sap.com/Articles/SAP_Mail_SO_Object_Send.asp

http://www.sapdevelopment.co.uk/reporting/email/attach_xls.htm

Sending mail in background or spool mail

http://www.sap-basis-abap.com/sapac018.htm

Check these for SCOT configuration.

Check the following link:-

/people/thomas.jung3/blog/2004/09/08/sending-e-mail-from-abap--version-610-and-higher--bcs-interface

http://help.sap.com/saphelp_nw04/helpdata/en/2b/d925bf4b8a11d1894c0000e8323c4f/frameset.htm

Regards

Kiran Sure

Read only

Former Member
0 Likes
680

hi,

check this program, this program upload the file in 'BIN' binary form from presentation server into internal table and convert data in word formate and send as a mail to our inbox

Code

REPORT ztest_upload_worddata.

----


  • PROGRAM : ztest_upload_worddata *

  • PROGRAM TITLE : SALES ORDER REPORT *

  • AREA : SD *

  • AUTHOR : *

  • CREATED ON : 08/04/2008 *

  • OBJECT TYPE : abap object Report

*

----


  • DESCRIPTION : This report describes how to send a mail in "WORD

  • DOCUMENT" by uploading file from PRESENTATION

  • SERVER using GUI-UPLOAD.

************************************************************************

*Tables *

************************************************************************

TABLES: vbak.

************************************************************************

  • Internal-tables *

************************************************************************

DATA: BEGIN OF it_vbak OCCURS 0,

vbeln TYPE vbeln,

erdat TYPE erdat,

ernam TYPE ernam,

END OF it_vbak.

*DATA: it_vbak TYPE TABLE OF st_vbak WITH HEADER LINE.

************************************************************************

  • Variables *

************************************************************************

DATA: p_filename_str TYPE string.

PARAMETERS: p_mail TYPE ad_smtpadr OBLIGATORY DEFAULT

'enter concernd email here in single cotts'

*CLASS-DEFINITIONS *

----


DATA: send_request TYPE REF TO cl_bcs.

DATA: document TYPE REF TO cl_document_bcs.

DATA: sender TYPE REF TO cl_sapuser_bcs.

DATA: recipient TYPE REF TO if_recipient_bcs.

DATA: exception_info TYPE REF TO if_os_exception_info,

l_uname TYPE salrtdrcpt,

l_bcs_exception TYPE REF TO cx_document_bcs,

l_send_exception TYPE REF TO cx_send_req_bcs,

l_addr_exception TYPE REF TO cx_address_bcs,

bcs_exception TYPE REF TO cx_bcs.

----


  • INTERNAL TABLES *

----


DATA: l_mailtext TYPE soli_tab.

DATA: l_mailhex TYPE solix_tab.

DATA: iaddsmtp TYPE bapiadsmtp OCCURS 0 WITH HEADER LINE.

DATA: ireturn TYPE bapiret2 OCCURS 0 WITH HEADER LINE.

----


  • VARIABLES *

----


DATA: mail_line LIKE LINE OF l_mailtext.

DATA: mailx_line LIKE LINE OF l_mailhex.

DATA: bapiadsmtp TYPE bapiadsmtp.

DATA: l_lines TYPE i.

----


  • CONSTANTS *

----


*CONSTANTS:

  • intelli_domain(20) TYPE c VALUE '@intelligroup.com'.

*CLASS cl_cam_address_bcs DEFINITION LOAD.

*CLASS cl_abap_char_utilities DEFINITION LOAD.

Constants----


CONSTANTS: c_tab(1) TYPE c VALUE

cl_abap_char_utilities=>horizontal_tab,

" Tab Character

c_cr(1) TYPE c VALUE cl_abap_char_utilities=>cr_lf,

" Line Feed for End-Of_line

c_ext TYPE soodk-objtp VALUE 'BMP'. " doc Extension.

CLASS cl_cam_address_bcs DEFINITION LOAD.

CLASS cl_abap_char_utilities DEFINITION LOAD.

*DATA: CONTROL_PARAMETERS TYPE SSFCTRLOP,

  • OUTPUT_OPTIONS TYPE SSFCOMPOP,

  • JOB_OUTPUT_INFO TYPE SSFCRESCL,

  • JOB_OUTPUT_OPTIONS TYPE SSFCRESOP,

DATA: string_data TYPE xstring,

file_size TYPE i,

lines TYPE TABLE OF tline .

************************************************************************

*

    • selection-screen *

************************************************************************

*

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

PARAMETERS: p_filnam TYPE ibipparms-path.

SELECTION-SCREEN : END OF BLOCK b1.

************************************************************************

  • at selection-screen on value-request *

************************************************************************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_filnam.

PERFORM fareeda.

*LOOP AT it_xstring into ls_xstring.

*

*concatenate imp_xstring ls_xstring into imp_xstring.

*

*ENDLOOP.

&----


*& Form f4_help_p_filnam

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fareeda .

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

  • FIELD_NAME = ' '

IMPORTING

file_name = p_filnam

.

ENDFORM.

*----


*

  • START-OF-SELECTION

*----


*

START-OF-SELECTION.

************************************************************************

  • Start-of-selection *

************************************************************************

p_filename_str = p_filnam.

data: begin of it_bin occurs 0,

data(1028) type x,

end of it_bin.

*data : it_xstring type table of xstring,

  • ls_xstring like xstring,

data: imp_xstring type xstring.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = p_filename_str

filetype = 'BIN'

  • HAS_FIELD_SEPARATOR = 'X'

  • HEADER_LENGTH = 0

IMPORTING

filelength = l_lines

  • header = string_data

TABLES

data_tab = it_bin

EXCEPTIONS

file_open_error = 1

file_read_error = 2

no_batch = 3

gui_refuse_filetransfer = 4

invalid_type = 5

no_authority = 6

unknown_error = 7

bad_data_format = 8

header_not_allowed = 9

separator_not_allowed = 10

header_too_long = 11

unknown_dp_error = 12

access_denied = 13

dp_out_of_memory = 14

disk_full = 15

dp_timeout = 16

OTHERS = 17

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'

EXPORTING

input_length = l_lines

  • FIRST_LINE = 0

  • LAST_LINE = 0

IMPORTING

BUFFER = imp_xstring

TABLES

binary_tab = it_bin

  • EXCEPTIONS

  • FAILED = 1

  • OTHERS = 2

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

*

*--Using SOLIX Converting string data

DATA: lt_solix TYPE solix_tab.

DATA: LT_SOLI TYPE SOLI_TAB.

DATA: docdata TYPE sood-objdes.

DATA: l_size TYPE sood-objlen.

CALL METHOD cl_document_bcs=>xstring_to_solix

EXPORTING

ip_xstring = imp_xstring

RECEIVING

rt_solix = lt_solix

.

TRY.

*-- Create persistent send request

send_request = cl_bcs=>create_persistent( ).

DATA: first(1) TYPE c.

CLEAR first.

DATA: lt_text TYPE soli_tab.

DATA: ls_text TYPE soli.

ls_text-line = 'THIS IS TEST DATA'.

APPEND ls_text TO lt_text.

CLEAR ls_text.

ls_text-line = 'THIS IS TEST DATA'.

APPEND ls_text TO lt_text.

CLEAR ls_text.

document = cl_document_bcs=>create_document(

i_type = 'txt'

i_text = lt_text

i_subject = 'subject' ).

  • Preparing contents of attachment with Change Log

PERFORM prepare_attachment.

  • DESCRIBE TABLE it_vbak LINES l_lines.

  • Size to multiplied by 2 for UNICODE enabled systems

  • l_size = l_lines * 2 * 255.

REFRESH l_mailhex.

move l_lines to l_size .

CALL METHOD document->add_attachment

EXPORTING

i_attachment_type = c_ext

i_attachment_subject = docdata

i_attachment_size = l_size

  • i_att_content_text = l_mailtext

i_att_content_hex = lt_solix.

  • i_attachment_header = LT_SOLI.

  • CALL METHOD document->add_attachment

  • EXPORTING

  • i_attachment_type = c_ext

  • i_attachment_subject = docdata

  • i_attachment_size = l_size

  • i_att_content_text = l_mailtext

  • i_att_content_hex = lt_solix

  • i_attachment_header = l_mailtext.

*--Add document to send request

CALL METHOD send_request->set_document( document ).

*-- Get sender object

sender = cl_sapuser_bcs=>create( sy-uname ).

*--Add sender

l_uname = sy-uname.

CALL METHOD send_request->set_sender

EXPORTING

i_sender = sender.

recipient = cl_cam_address_bcs=>create_internet_address( p_mail

).

*--Add recipient with its respective attributes to send request

CALL METHOD send_request->add_recipient

EXPORTING

i_recipient = recipient

i_express = 'U'

i_copy = 'X'

i_blind_copy = ' '

i_no_forward = 'X'.

*--set send immediately flag

send_request->set_send_immediately( 'X' ).

*--Send document

CALL METHOD send_request->send( ).

COMMIT WORK.

CATCH cx_document_bcs INTO l_bcs_exception.

CATCH cx_send_req_bcs INTO l_send_exception.

CATCH cx_address_bcs INTO l_addr_exception.

ENDTRY.

&----


*& Form PREPARE_ATTACHMENT

&----


FORM prepare_attachment.

FIELD-SYMBOLS: <lfs_table>, " Internal table structure

<lfs_con>. " Field Content

DATA: l_text TYPE char1024. " Text content for mail attachment

DATA: l_con(50) TYPE c. " Field Content in character format

  • Columns to be tab delimeted

LOOP AT it_vbak ASSIGNING <lfs_table>.

DO.

ASSIGN COMPONENT sy-index OF STRUCTURE <lfs_table>

TO <lfs_con>.

IF sy-subrc NE 0.

CONCATENATE c_cr l_text INTO l_text.

APPEND l_text TO l_mailtext.

EXIT.

ELSE.

CLEAR: l_con.

MOVE <lfs_con> TO l_con.

CONDENSE l_con.

IF sy-index = 1.

CLEAR: l_text.

MOVE l_con TO l_text.

ELSE.

CONCATENATE l_text l_con INTO l_text

SEPARATED BY c_tab.

ENDIF.

ENDIF.

ENDDO.

ENDLOOP.

ENDFORM. " PREPARE_ATTACHMENT

Reward Ponts To All Helpfull Answers

Regards

Fareeeda

Read only

Former Member
0 Likes
680

Hi,

Refer the following code.

REPORT ZEMAIL.

TABLES: USR02.

DATA: C(15).

DATA: SENT LIKE SONV-FLAG.

DATA: EMAIL_ID LIKE SOFOLENTI1-OBJECT_ID.

DATA: BEGIN OF EMAIL_DATA.

INCLUDE STRUCTURE SODOCCHGI1.

DATA: END OF EMAIL_DATA.

DATA: BEGIN OF EMAIL_SEND OCCURS 10.

INCLUDE STRUCTURE SOMLRECI1.

DATA: END OF EMAIL_SEND.

DATA: BEGIN OF EMAIL_TEXT OCCURS 10.

INCLUDE STRUCTURE SOLISTI1.

DATA: END OF EMAIL_TEXT.

****************************************************

PARAMETERS: ALL__CLI RADIOBUTTON GROUP RADI.

PARAMETERS: THIS_CLI RADIOBUTTON GROUP RADI.

PARAMETERS: SELECT__ RADIOBUTTON GROUP RADI.

SELECT-OPTIONS SEND_TO FOR C NO INTERVALS.

SELECTION-SCREEN SKIP.

PARAMETERS: SUBJECT(30).

SELECTION-SCREEN SKIP.

SELECTION-SCREEN COMMENT /1(20) TEXT-999.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: L1(84).

SELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: L2(84).

SELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: L3(84).

SELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: L4(84).

SELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: L5(84).

SELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: L6(84).

SELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: L7(84).

SELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: L8(84).

SELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: L9(84).

SELECTION-SCREEN END OF LINE.

***********************************************

EMAIL_TEXT-LINE = L1.

APPEND EMAIL_TEXT.

EMAIL_TEXT-LINE = L2.

APPEND EMAIL_TEXT.

EMAIL_TEXT-LINE = L3.

APPEND EMAIL_TEXT.

EMAIL_TEXT-LINE = L4.

APPEND EMAIL_TEXT.

EMAIL_TEXT-LINE = L5.

APPEND EMAIL_TEXT.

EMAIL_TEXT-LINE = L6.

APPEND EMAIL_TEXT.

EMAIL_TEXT-LINE = L7.

APPEND EMAIL_TEXT.

EMAIL_TEXT-LINE = L8.

APPEND EMAIL_TEXT.

EMAIL_TEXT-LINE = L9.

APPEND EMAIL_TEXT.

EMAIL_DATA-OBJ_NAME = 'MESSAGE'.

EMAIL_DATA-OBJ_DESCR = SUBJECT.

EMAIL_DATA-OBJ_LANGU = 'E'.

EMAIL_DATA-SENSITIVTY = 'P'.

EMAIL_DATA-OBJ_PRIO = '1'.

EMAIL_DATA-NO_CHANGE = 'X'.

EMAIL_DATA-PRIORITY = '1'.

BREAK-POINT.

IF SELECT__ = 'X'.

LOOP AT SEND_TO.

EMAIL_SEND-RECEIVER = SEND_TO-LOW.

EMAIL_SEND-REC_TYPE = 'U'.

EMAIL_SEND-EXPRESS = 'X'.

APPEND EMAIL_SEND.

ENDLOOP.

ELSEIF THIS_CLI = 'X'.

SELECT * FROM USR02.

IF USR02-USTYP = 'A' AND USR02-BNAME NE 'SAP*'

AND USR02-BNAME NE 'DDIC'.

EMAIL_SEND-RECEIVER = USR02-BNAME.

EMAIL_SEND-REC_TYPE = 'U'.

EMAIL_SEND-EXPRESS = 'X'.

APPEND EMAIL_SEND.

ENDIF.

ENDSELECT.

ELSEIF ALL__CLI = 'X'.

SELECT * FROM USR02 CLIENT SPECIFIED.

IF USR02-USTYP = 'A' AND USR02-BNAME NE 'SAP*'

AND USR02-BNAME NE 'DDIC'.

EMAIL_SEND-RECEIVER = USR02-BNAME.

EMAIL_SEND-REC_TYPE = 'U'.

EMAIL_SEND-EXPRESS = 'X'.

APPEND EMAIL_SEND.

ENDIF.

ENDSELECT.

ENDIF.

BREAK-POINT.

EXIT.

*****************************************************

CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'

EXPORTING

DOCUMENT_DATA = EMAIL_DATA

DOCUMENT_TYPE = 'RAW'

PUT_IN_OUTBOX = 'X'

IMPORTING

SENT_TO_ALL = SENT

NEW_OBJECT_ID = EMAIL_ID

TABLES

OBJECT_CONTENT = EMAIL_TEXT

RECEIVERS = EMAIL_SEND

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.