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

Regarding SO_DOCUMENT_SEND_API1 function module

Former Member
0 Likes
470

Can u anyone explain me how to pass the parameters to this function module and how to mail if we want to send the data in excel format?

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
440

Refer to the below related threads

Regards,

Santosh

3 REPLIES 3
Read only

Former Member
0 Likes
441

Refer to the below related threads

Regards,

Santosh

Read only

Former Member
0 Likes
440

Hi,

Check this code.

FORM send_email .

INITIALIZATION .

CLASS cl_abap_char_utilities DEFINITION LOAD.

gf_etb = cl_abap_char_utilities=>horizontal_tab. "For horrizontal tab

gf_cr = cl_abap_char_utilities=>cr_lf. "For enter

gf_lf = cl_abap_char_utilities=>newline. "For new line

  • Declaration

DATA: lwa_hd_change TYPE sood1,

lt_objcont TYPE STANDARD TABLE OF soli,

lwa_objcont TYPE soli,

lt_receivers TYPE STANDARD TABLE OF soos1,

lwa_receivers TYPE soos1 ,

lt_att_cont TYPE STANDARD TABLE OF soli,

lwa_att_cont TYPE soli,

lt_packing TYPE STANDARD TABLE OF soxpl,

lwa_packing TYPE soxpl,

lf_sent TYPE sonv-flag,

lf_size TYPE i.

CONSTANTS: lc_obj(11) TYPE c VALUE 'BOMSouthco',

lc_desc(20) TYPE c VALUE 'BOM Download',

lc_lang(1) TYPE c VALUE 'E',

lc_raw(3) TYPE c VALUE 'RAW',

lc_net(1) TYPE c VALUE 'U',

lc_mail(4) TYPE c VALUE 'MAIL',

lc_xls(3) TYPE c VALUE 'XLS',

lc_ext(3) TYPE c VALUE 'EXT'.

  • Passing values to the strutures used in SO_OBJECT_SEND function module

lwa_hd_change-objla = lc_lang.

lwa_hd_change-objnam = lc_obj.

lwa_hd_change-objdes = lc_desc.

lwa_hd_change-objlen = 255.

lwa_objcont-line = text-t29.

APPEND lwa_objcont TO lt_objcont.

CLEAR lwa_objcont.

lwa_receivers-recextnam = text-t31.

lwa_receivers-recesc = lc_net.

lwa_receivers-sndart = lc_mail.

lwa_receivers-sndex = 'X'.

lwa_receivers-sndpri = 1.

lwa_receivers-mailstatus = 'E'.

APPEND lwa_receivers TO lt_receivers.

CLEAR lwa_receivers.

lwa_receivers-recextnam = text-t30.

lwa_receivers-recesc = lc_net.

lwa_receivers-sndart = lc_mail.

lwa_receivers-sndex = 'X'.

lwa_receivers-sndpri = 1.

lwa_receivers-mailstatus = 'E'.

APPEND lwa_receivers TO lt_receivers.

CLEAR lwa_receivers.

  • Passing values for the attachment file

LOOP AT gt_output INTO gwa_output.

CONCATENATE gf_lf gwa_output-matnr gf_etb gwa_output-idnrk gf_etb

gwa_output-type gf_etb gwa_output-menge gf_etb

gwa_output-meins gf_etb gwa_output-comp gf_etb

INTO lwa_att_cont-line.

APPEND lwa_att_cont TO lt_att_cont.

CLEAR lwa_att_cont.

ENDLOOP.

CHECK lt_att_cont IS NOT INITIAL.

DESCRIBE TABLE lt_att_cont LINES lf_size.

lwa_packing-transf_bin = ' '.

lwa_packing-head_start = 1.

lwa_packing-head_num = 0.

lwa_packing-body_start = 1.

lwa_packing-body_num = lf_size.

lwa_packing-file_ext = lc_xls.

lwa_packing-objlen = lf_size * 255.

lwa_packing-objtp = lc_ext.

lwa_packing-objdes = lc_desc.

lwa_packing-objnam = lc_obj.

APPEND lwa_packing TO lt_packing.

CLEAR lwa_packing.

CHECK gf_error IS NOT INITIAL. "Check if unix file is written

  • FM to send email to the intended recipients

CALL FUNCTION 'SO_OBJECT_SEND'

EXPORTING

object_hd_change = lwa_hd_change

object_type = lc_raw

IMPORTING

sent_to_all = lf_sent

TABLES

objcont = lt_objcont

receivers = lt_receivers

packing_list = lt_packing

att_cont = lt_att_cont

EXCEPTIONS

active_user_not_exist = 1

communication_failure = 2

component_not_available = 3

folder_not_exist = 4

folder_no_authorization = 5

forwarder_not_exist = 6

note_not_exist = 7

object_not_exist = 8

object_not_sent = 9

object_no_authorization = 10

object_type_not_exist = 11

operation_no_authorization = 12

owner_not_exist = 13

parameter_error = 14

substitute_not_active = 15

substitute_not_defined = 16

system_failure = 17

too_much_receivers = 18

user_not_exist = 19

originator_not_exist = 20

x_error = 21

OTHERS = 22.

IF sy-subrc = 0.

MESSAGE s004 WITH text-t34.

ENDIF.

COMMIT WORK.

ENDFORM. " SEND_EMAIL

Reward if helpful.

regards,

Ramya

Read only

Former Member
0 Likes
440

Check the below code...................

DATA: NUMBYTES TYPE TST01-DSIZE,

PDFSPOOLID TYPE TSP01-RQIDENT.

DATA: BEGIN OF PDFDATA OCCURS 0.

INCLUDE STRUCTURE TLINE.

DATA: END OF PDFDATA.

DATA: G1_LINES_TXT TYPE I.

DATA : L_DOCUMENT_DATA TYPE SODOCCHGI1,

T_PACKING_LIST TYPE STANDARD TABLE OF SOPCKLSTI1,

W_OBJHEAD TYPE SOLI_TAB,

T_OBJBIN TYPE STANDARD TABLE OF SOLISTI1,

T_OBJTXT TYPE STANDARD TABLE OF SOLISTI1,

LW_PACKING_LIST TYPE SOPCKLSTI1,

L_LINES TYPE I,

W_RECEIVER TYPE SOMLRECI1,

T_RECEIVER TYPE STANDARD TABLE OF SOMLRECI1.

DATA: OBJPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.

DATA: OBJHEAD LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE.

DATA: OBJBIN LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: RECLIST LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE.

DATA: DOC_CHNG LIKE SODOCCHGI1.

DATA: TAB_LINES LIKE SY-TABIX.

SELECT MAX( RQIDENT ) INTO G_SPOOL_NUM

FROM TSP01

WHERE RQCLIENT = SY-MANDT AND

RQOWNER = SY-UNAME.

*....Convert Spool to PDF

CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'

EXPORTING

SRC_SPOOLID = G_SPOOL_NUM

NO_DIALOG = 'X'

DST_DEVICE = G_PDEST

IMPORTING

PDF_BYTECOUNT = NUMBYTES

TABLES

PDF = PDFDATA

EXCEPTIONS

ERR_NO_ABAP_SPOOLJOB = 1

ERR_NO_SPOOLJOB = 2

ERR_NO_PERMISSION = 3

ERR_CONV_NOT_POSSIBLE = 4

ERR_BAD_DESTDEVICE = 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.

*...Convert 132 char to 255 char

LOOP AT PDFDATA.

TRANSLATE PDFDATA USING ' ~'.

CONCATENATE GD_BUFFER PDFDATA INTO GD_BUFFER.

ENDLOOP.

TRANSLATE GD_BUFFER USING '~ '.

DO.

IT_MESS_ATT = GD_BUFFER.

APPEND IT_MESS_ATT.

SHIFT GD_BUFFER LEFT BY 255 PLACES.

IF GD_BUFFER IS INITIAL.

EXIT.

ENDIF.

ENDDO.

  • Creating the document attachment

LOOP AT IT_MESS_ATT.

OBJBIN = IT_MESS_ATT.

APPEND OBJBIN.

CLEAR: OBJBIN,

IT_MESS_ATT.

ENDLOOP.

  • Creating the document to be sent

DOC_CHNG-OBJ_NAME = 'IG Balance'.

*.....Subject of the email.

CONCATENATE 'Intragroup Confirmation from AoO: ' P_ZAOO INTO DOC_CHNG-OBJ_DESCR.

  • DOC_CHNG-OBJ_DESCR = 'Intragroup Confirmation from AoO '.

*...Body of the email

OBJTXT = 'Please find attached a summary and details for intragroup transactions for the referenced AoOs.'.

APPEND OBJTXT.

OBJTXT = 'Any queries regarding the attached should be addressed to the contact names on the Summary Report.'.

APPEND OBJTXT.

DESCRIBE TABLE OBJTXT LINES TAB_LINES.

READ TABLE OBJTXT INDEX TAB_LINES.

DOC_CHNG-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJTXT ).

  • Creating the entry for the compressed document

CLEAR OBJPACK-TRANSF_BIN.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 0.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = TAB_LINES.

OBJPACK-DOC_TYPE = 'RAW'.

APPEND OBJPACK.

DESCRIBE TABLE OBJBIN LINES TAB_LINES.

OBJHEAD = 'IG Balace.PDF'. APPEND OBJHEAD.

  • Creating the entry for the compressed attachment

OBJPACK-TRANSF_BIN = 'X'.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 1.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = TAB_LINES.

OBJPACK-DOC_TYPE = 'PDF'.

OBJPACK-OBJ_NAME = 'ATTACHMENT'.

OBJPACK-OBJ_DESCR = 'IG Balance Report'.

OBJPACK-DOC_SIZE = TAB_LINES * 255.

APPEND OBJPACK..

  • Entering names in the distribution list

DATA: L_CNT TYPE I.

LOOP AT T_EMAIL INTO W_EMAIL.

IF W_EMAIL-ZCONTACT1 IS NOT INITIAL.

RECLIST-RECEIVER = W_EMAIL-ZCONTACT1.

RECLIST-REC_TYPE = 'U'.

L_CNT = L_CNT + 1.

ELSEIF W_EMAIL-ZCONTACT2 IS NOT INITIAL.

RECLIST-RECEIVER = W_EMAIL-ZCONTACT2.

RECLIST-REC_TYPE = 'U'.

L_CNT = L_CNT + 1.

ENDIF.

APPEND RECLIST.

CLEAR: RECLIST,

W_EMAIL.

ENDLOOP.

SELECT SINGLE ZAOO

ZCONTACT1

ZCONTACT2 FROM ZFI_MT_RPTRMAP INTO W_EMAIL

WHERE ZAOO EQ P_ZAOO.

IF W_EMAIL-ZCONTACT1 IS NOT INITIAL.

RECLIST-RECEIVER = W_EMAIL-ZCONTACT1.

RECLIST-REC_TYPE = 'U'.

L_CNT = L_CNT + 1.

APPEND RECLIST.

ELSEIF W_EMAIL-ZCONTACT2 IS NOT INITIAL.

RECLIST-RECEIVER = W_EMAIL-ZCONTACT2.

RECLIST-REC_TYPE = 'U'.

L_CNT = L_CNT + 1.

APPEND RECLIST.

ENDIF.

  • Sending the document

IF L_CNT > 0.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = DOC_CHNG

PUT_IN_OUTBOX = 'X'

COMMIT_WORK = 'X'

TABLES

PACKING_LIST = OBJPACK

OBJECT_HEADER = OBJHEAD

CONTENTS_BIN = OBJBIN

CONTENTS_TXT = OBJTXT

RECEIVERS = RECLIST

EXCEPTIONS

TOO_MANY_RECEIVERS = 1

DOCUMENT_NOT_SENT = 2

OPERATION_NO_AUTHORIZATION = 4

OTHERS = 99.

Reward if useful.......................