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: 

To send email from Abap code in which we have notepad as an attachment.

Former Member
0 Kudos

Hi All,

I am facing one problem. I am sending a notepad as an attachment to a mail.

The reciepents name is in the distribution list. When I checked the notepad, Headers and the record are coming in the same line .

But it should come in the different line.

Here is the code.....

TYPE-POOLS: SLIS.

My final table is i_output.

TYPES: begin of TY_EMAIL,

field1(1) type c,

field2(8) type c,

field3(12) type c,

field4(34) type c,

field5(10) type c,

end of TY_EMAIL.

DATA: IT_ATTACH TYPE STANDARD TABLE OF SOLISTI1 INITIAL SIZE 0

WITH HEADER LINE.

DATA: T_PACKING_LIST LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,

T_CONTENTS LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

T_RECEIVERS LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE,

T_ATTACHMENT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

T_OBJECT_HEADER LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

W_CNT TYPE I,

W_SENT_ALL(1) TYPE C,

W_DOC_DATA LIKE SODOCCHGI1,

GD_ERROR TYPE SY-SUBRC,

GD_RECIEVER TYPE SY-SUBRC.

DATA: IT_EMAIL TYPE STANDARD TABLE OF TY_EMAIL WITH HEADER LINE.

START-OF-SELECTION.

PERFORM get_data.

PERFORM SEND_FILE_AS_EMAIL_ATTACHMENT

TABLES IT_MESSAGE

IT_ATTACH

USING 'subject of mail'

'TXT'

'FILENAME'

CHANGING GD_ERROR

GD_RECIEVER.

END-OF-SELECTION.

form get_data.

CONCATENATE 'HEADER1'

'HEADER2'

'HEADER3'

'HEADER4'

'HEADER5'

INTO IT_ATTACH SEPARATED BY '~'

APPEND IT_ATTACH.

LOOP AT I_OUTPUT INTO WA_OUTPUT.

IT_EMAIL-FIELD1 = WA_OUPUT-FIELD1.

IT_EMAIL-FIELD2 = WA_OUPUT-FIELD2.

IT_EMAIL-FIELD3 = WA_OUPUT-FIELD3.

IT_EMAIL-FIELD4 = WA_OUPUT-FIELD4.

IT_EMAIL-FIELD5 = WA_OUPUT-FIELD5.

CONDENSE: IT_EMAIL-FIELD1,

IT_EMAIL-FIELD2,

IT_EMAIL-FIELD3,

IT_EMAIL-FIELD4,

IT_EMAIL-FIELD5.

CONCATTENATE: IT_EMAIL-FIELD1

IT_EMAIL-FIELD2

IT_EMAIL-FIELD3

IT_EMAIL-FIELD4

IT_EMAIL-FIELD5

INTO IT_ATTACH SEPERATED BY '~'

APPEND IT_ATTACH.

ENDLOOP.

FORM SEND_FILE_AS_EMAIL_ATTACHMENT TABLES PIT_MESSAGE

PIT_ATTACH

USING P_MTITLE

P_FORMAT

P_FILENAME

CHANGING P_ERROR

P_RECIEVER.

DATA: BEGIN OF OBJPARA OCCURS 10 . "

INCLUDE STRUCTURE SELC. "

DATA: END OF OBJPARA. "

*

DATA: LD_ERROR TYPE SY-SUBRC,

LD_RECIEVER TYPE SY-SUBRC,

LD_MTITLE LIKE SODOCCHGI1-OBJ_DESCR,

LD_EMAIL LIKE SOMLRECI1-RECEIVER,

LD_FORMAT TYPE SO_OBJ_TP ,

LD_ATTFILENAME TYPE SO_OBJ_DES ,

LD_RECEIVER LIKE SY-SUBRC.

DATA SENT_ALL LIKE SONV-FLAG.

DATA WARNING_MAIL LIKE SOODK.

LD_MTITLE = P_MTITLE.

LD_FORMAT = P_FORMAT.

LD_ATTFILENAME = P_FILENAME.

  • Fill the document data and get size of attachment

CLEAR OBJECT_HD.

READ TABLE IT_ATTACH INDEX W_CNT.

OBJECT_HD-DOC_SIZE =

( W_CNT - 1 ) * 255 + STRLEN( IT_ATTACH ).

OBJECT_HD-OBJ_LANGU = SY-LANGU.

OBJECT_HD-OBJ_NAME = 'SAPRPT'.

OBJECT_HD-OBJ_DESCR = LD_MTITLE.

OBJECT_HD-SENSITIVTY = 'F'.

CLEAR T_ATTACHMENT.

REFRESH T_ATTACHMENT.

T_ATTACHMENT[] = PIT_ATTACH[].

  • Describe the body of the message

CLEAR T_PACKING_LIST.

REFRESH T_PACKING_LIST.

T_PACKING_LIST-TRANSF_BIN = SPACE.

T_PACKING_LIST-HEAD_START = 1.

T_PACKING_LIST-HEAD_NUM = 0.

T_PACKING_LIST-BODY_START = 1.

DESCRIBE TABLE IT_MESSAGE LINES T_PACKING_LIST-BODY_NUM.

T_PACKING_LIST-DOC_TYPE = 'RAW'.

APPEND T_PACKING_LIST.

  • Create attachment notification

T_PACKING_LIST-TRANSF_BIN = 'X'.

T_PACKING_LIST-HEAD_START = 1.

T_PACKING_LIST-HEAD_NUM = 1.

T_PACKING_LIST-BODY_START = 1.

DESCRIBE TABLE T_ATTACHMENT LINES T_PACKING_LIST-BODY_NUM.

T_PACKING_LIST-DOC_TYPE = LD_FORMAT.

T_PACKING_LIST-OBJ_NAME = LD_ATTFILENAME.

T_PACKING_LIST-DOC_SIZE = T_PACKING_LIST-BODY_NUM * 255.

APPEND T_PACKING_LIST.

  • Receipient Information for SAP Office.

MOVE: 'ZDIPIKA' TO RECEIVERS-RECNAM, "Receipient Name

'C ' TO RECEIVERS-RECESC, "Repeipient Type

' ' TO RECEIVERS-SNDEX, "Send Express

SY-DATUM TO RECEIVERS-RCDAT, "Message Date

SY-UZEIT TO RECEIVERS-RCTIM, "Message Time

'X' TO RECEIVERS-SNDCP. "Send Copy

APPEND RECEIVERS.

  • Add the recipients email address

CLEAR T_RECEIVERS.

REFRESH T_RECEIVERS.

T_RECEIVERS-RECEIVER = 'ZDIPIKA'. "LD_EMAIL.

T_RECEIVERS-REC_TYPE = 'C'.

T_RECEIVERS-COM_TYPE = 'INT'.

T_RECEIVERS-NOTIF_DEL = 'X'.

T_RECEIVERS-NOTIF_NDEL = 'X'.

APPEND T_RECEIVERS.

CALL FUNCTION 'SO_DOCUMENT_SEND_API1'

EXPORTING

DOCUMENT_DATA = OBJECT_HD

PUT_IN_OUTBOX = 'X'

  • SENDER_ADDRESS = LD_SENDER_ADDRESS

  • SENDER_ADDRESS_TYPE = LD_SENDER_ADDRESS_TYPE

COMMIT_WORK = 'X'

IMPORTING

SENT_TO_ALL = W_SENT_ALL

TABLES

PACKING_LIST = T_PACKING_LIST

CONTENTS_BIN = T_ATTACHMENT

CONTENTS_TXT = IT_MESSAGE

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.

  • Populate zerror return code

LD_ERROR = SY-SUBRC.

*

IF SY-SUBRC NE 0.

MESSAGE A095(ZZ) WITH LD_ERROR.

ENDIF.

*

COMMIT WORK.

-- DEQUEUE THE LOCK CREATED BY SO_OBJECT_SEND -


CALL FUNCTION 'SO_DEQUEUE_UPDATE_LOCKS'.

endform. " SEND_FILE_AS_EMAIL_ATTACHMENT

Thanks,

Dipika

4 REPLIES 4

Former Member
0 Kudos

Hi Dipika,

Check this out

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

Regards,

Santosh

0 Kudos

Hi Santosh,

I tried this, but it is not working. Actually I want data into excel sheet. I tried the same logic but it didn't work. then I went for notepad . So, that from Excess i will upload it into excel format. In case of excel all the data is coming into single line.

Also Header length is more than 255. So, header is not coming completely in Notepad. Here also the same problem...Please provide the Quick solution.. Its very urgent.

Regards,

Dipika.

Former Member
0 Kudos

Hi Deepika,

recently i struggled on this and i achieved success by doing as below

remember to keep packlist as RAW type like below:

t_packing_list-doc_type = 'RAW'.

do like this

CALL FUNCTION 'SO_SOLITAB_TO_SOLIXTAB'

EXPORTING

ip_solitab = t_attachment[]

IMPORTING

EP_SOLIXTAB = xtext[].

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

document_data = w_doc_data

PUT_IN_OUTBOX = 'X'

  • COMMIT_WORK = 'X'

tables

packing_list = t_packing_list

  • OBJECT_HEADER =

  • CONTENTS_BIN = objbin

CONTENTS_TXT = it_message

CONTENTS_HEX = xtext

  • OBJECT_PARA =

  • OBJECT_PARB =

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

<b>Kindly Reward points if you found this reply helpful</b>,

Cheers,

Chaitanya.

0 Kudos

Hi Raju,

Also, Length of heder is more than 255 characters...Please look into this. Because whatever data i am geeting into attachment , it is coming into one line and Data is not coming full because it is more than 255 characters..

Thanks,

Dipika.