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

Code for a report with email,download and FTP functionality

Former Member
0 Likes
594

Can anyone send me the code for a sample report that has email,download and FTP functionality...Such that these are with check boxs.

Edited by: murali ko on Mar 13, 2008 7:25 AM

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
557

Please use the SDN for Technical help. If you start work , and in the middle you struck with some problem you come to SDN. but how you are asking the Program with all these options. I am sure you can do it. start work on that. If you have any issues then come back.

Please use the SDN for Technical help. If you start work , and in the middle you struck with some problem you come to SDN. but how you are asking the Program with all these options. I am sure you can do it. start work on that. If you have any issues then come back.

3 REPLIES 3
Read only

Former Member
0 Likes
557

Hi,

To download data from SAP to excel, use

CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT'

EXPORTING

i_filename = gf_file

TABLES

i_tab_sap_data = gt_output

EXCEPTIONS

conversion_failed = 1

OTHERS = 2.

To send this excel as email attachment, use the below reference code.

  • 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. "Success message

ENDIF.

COMMIT WORK.

Reward if helpful.

Regards,

Ramya

Read only

Former Member
0 Likes
558

Please use the SDN for Technical help. If you start work , and in the middle you struck with some problem you come to SDN. but how you are asking the Program with all these options. I am sure you can do it. start work on that. If you have any issues then come back.

Read only

Former Member
0 Likes
557

Hope the below code will resolve ur purpose.

to download the report pass the internal table content to the below function module.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

FILENAME = L_FILE " File location

FILETYPE = 'DAT'

  • IMPORTING

  • FILELENGTH =

TABLES

DATA_TAB = T_DOWNLOAD "Internal table

EXCEPTIONS

FILE_WRITE_ERROR = 1

NO_BATCH = 2

GUI_REFUSE_FILETRANSFER = 3

INVALID_TYPE = 4

NO_AUTHORITY = 5

UNKNOWN_ERROR = 6

HEADER_NOT_ALLOWED = 7

SEPARATOR_NOT_ALLOWED = 8

FILESIZE_NOT_ALLOWED = 9

HEADER_TOO_LONG = 10

DP_ERROR_CREATE = 11

DP_ERROR_SEND = 12

DP_ERROR_WRITE = 13

UNKNOWN_DP_ERROR = 14

ACCESS_DENIED = 15

DP_OUT_OF_MEMORY = 16

DISK_FULL = 17

DP_TIMEOUT = 18

FILE_NOT_FOUND = 19

DATAPROVIDER_EXCEPTION = 20

CONTROL_FLUSH_ERROR = 21

OTHERS = 22

.

For Email option follow the below process.

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.

Function module to send email.

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 points if helpful.................