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

Report output to excel format

Former Member
0 Likes
416

Hi Experts,

My requriement is I have to send a mail with report output in excel format as an attachment.

I wrote the below subroutine for building excel sheet but I am getting output in the single row. I am using version 4.6

Please help me regarding this. ASAP

FORM BUILD_XLS_DATA .

CONSTANTS: CON_CRET TYPE STRING VALUE '0D', "OK for non Unicode

CON_TAB TYPE STRING VALUE '09'. "OK for non Unicode

CONCATENATE 'Vendor' 'Country' 'Name'

INTO IATTACH SEPARATED BY CON_TAB.

CONCATENATE CON_CRET IATTACH INTO IATTACH.

APPEND IATTACH.

LOOP AT IT_lfa1.

CONCATENATE IT_lfa1-lifnr IT_lfa1-land1 IT_lfa1-name1 INTO IATTACH

SEPARATED BY CON_TAB.

CONCATENATE CON_CRET IATTACH INTO IATTACH.

APPEND IATTACH.

ENDLOOP.

ENDFORM. "build_xls_data

Thanx,

Sudha

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
389

Hi Sudha,

I am sending the standard format of sending a mail along with an attachment in .xls format.

Try this code.

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

form sendmail.

CLEAR GV_DELIMIT.

GV_DELIMIT = CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.

TEMPREAD = LV_LNCNT1.

REFRESH OBJTXT.

CONCATENATE 'The no. of error records are : ' TEMPREAD

INTO OBJTXT-LINE.

APPEND OBJTXT.

CLEAR OBJPACK. REFRESH OBJPACK.

CONCATENATE C_CODE

C_CMMT

C_COMMENT1

INTO OBJTXT-LINE SEPARATED BY GV_DELIMIT.

APPEND OBJTXT.

LOOP AT IT_DATA INTO WA_DATA.

CONCATENATE WA_DATA-ZCODE

WA_DATA-ZCOMMENT

WA_DATA-ZREASON

INTO OBJTXT-LINE SEPARATED BY GV_DELIMIT.

APPEND OBJTXT.

ENDLOOP.

CLEAR GV_DELIMIT.

CLEAR OBJPACK. REFRESH OBJPACK.

CLEAR DOC_CHNG.

TAB_LINES = 0.

OBJHEAD = REJFILE. APPEND OBJHEAD.

DESCRIBE TABLE OBJTXT LINES TAB_LINES.

READ TABLE OBJTXT INDEX TAB_LINES.

DOC_CHNG-OBJ_NAME = REJFILE.

MOVE TEXT-006 TO

DOC_CHNG-OBJ_DESCR.

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

CLEAR OBJPACK-TRANSF_BIN.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 0.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = 1. " 3.

OBJPACK-DOC_TYPE = 'RAW'.

APPEND OBJPACK.

  • FOR ASCII TO BINARY OBJECT FUNCTION

TOTLINEXFER = 0.

TOTXFER = 0.

BINMAXLEN = 255.

REFRESH OBJBIN.

LV_CR = CL_ABAP_CHAR_UTILITIES=>CR_LF.

TGTMAXLEN = BINMAXLEN.

TGTLEN = 0.

LOOP AT OBJTXT FROM 2.

IF NOT OBJTXT-LINE CP 'The no. of records are '." AND

CONCATENATE OBJTXT-LINE LV_CR INTO BUFFER.

SRCOBJLEN = STRLEN( BUFFER ).

SRCOBJPTR = 0.

WHILE SRCOBJLEN > 0 .

XFERLEN = TGTMAXLEN - TGTLEN.

IF XFERLEN > SRCOBJLEN.

XFERLEN = SRCOBJLEN.

MOVE BUFFERSRCOBJPTR TO OBJBIN-LINETGTLEN.

TGTLEN = TGTLEN + SRCOBJLEN.

SRCOBJLEN = 0.

CLEAR BUFFER.

ELSE.

MOVE BUFFER+SRCOBJPTR(XFERLEN) TO

OBJBIN-LINE+TGTLEN(XFERLEN).

APPEND OBJBIN.

CLEAR OBJBIN-LINE.

TGTLEN = 0.

SRCOBJLEN = SRCOBJLEN - XFERLEN.

SRCOBJPTR = SRCOBJPTR + XFERLEN.

TOTLINEXFER = TOTLINEXFER + 1.

ENDIF.

TOTXFER = TOTXFER + XFERLEN.

ENDWHILE.

ENDIF.

ENDLOOP.

IF TGTLEN > 0.

APPEND OBJBIN.

TOTLINEXFER = TOTLINEXFER + 1.

ENDIF.

CLEAR OBJPACK-TRANSF_BIN.

OBJPACK-TRANSF_BIN = 'X'.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 0.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = TOTLINEXFER.

OBJPACK-DOC_TYPE = 'XLS'.

OBJPACK-OBJ_NAME = REJFILE.

OBJPACK-OBJ_DESCR = 'Rejected Entries File'.

OBJPACK-DOC_SIZE = TOTXFER.

APPEND OBJPACK.

REFRESH RECLIST.

MAIL1 = Recepient Mail Id

RECLIST-RECEIVER = MAIL1.

RECLIST-REC_TYPE = 'U'.

APPEND RECLIST.

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.

IF SY-SUBRC <> 0.

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

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

ENDIF.

endform.

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

Hope this is helpful to you. If you need further information, revert back.

Reward all the helpful answers.

Regards

Nagaraj T

2 REPLIES 2
Read only

Former Member
0 Likes
390

Hi Sudha,

I am sending the standard format of sending a mail along with an attachment in .xls format.

Try this code.

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

form sendmail.

CLEAR GV_DELIMIT.

GV_DELIMIT = CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.

TEMPREAD = LV_LNCNT1.

REFRESH OBJTXT.

CONCATENATE 'The no. of error records are : ' TEMPREAD

INTO OBJTXT-LINE.

APPEND OBJTXT.

CLEAR OBJPACK. REFRESH OBJPACK.

CONCATENATE C_CODE

C_CMMT

C_COMMENT1

INTO OBJTXT-LINE SEPARATED BY GV_DELIMIT.

APPEND OBJTXT.

LOOP AT IT_DATA INTO WA_DATA.

CONCATENATE WA_DATA-ZCODE

WA_DATA-ZCOMMENT

WA_DATA-ZREASON

INTO OBJTXT-LINE SEPARATED BY GV_DELIMIT.

APPEND OBJTXT.

ENDLOOP.

CLEAR GV_DELIMIT.

CLEAR OBJPACK. REFRESH OBJPACK.

CLEAR DOC_CHNG.

TAB_LINES = 0.

OBJHEAD = REJFILE. APPEND OBJHEAD.

DESCRIBE TABLE OBJTXT LINES TAB_LINES.

READ TABLE OBJTXT INDEX TAB_LINES.

DOC_CHNG-OBJ_NAME = REJFILE.

MOVE TEXT-006 TO

DOC_CHNG-OBJ_DESCR.

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

CLEAR OBJPACK-TRANSF_BIN.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 0.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = 1. " 3.

OBJPACK-DOC_TYPE = 'RAW'.

APPEND OBJPACK.

  • FOR ASCII TO BINARY OBJECT FUNCTION

TOTLINEXFER = 0.

TOTXFER = 0.

BINMAXLEN = 255.

REFRESH OBJBIN.

LV_CR = CL_ABAP_CHAR_UTILITIES=>CR_LF.

TGTMAXLEN = BINMAXLEN.

TGTLEN = 0.

LOOP AT OBJTXT FROM 2.

IF NOT OBJTXT-LINE CP 'The no. of records are '." AND

CONCATENATE OBJTXT-LINE LV_CR INTO BUFFER.

SRCOBJLEN = STRLEN( BUFFER ).

SRCOBJPTR = 0.

WHILE SRCOBJLEN > 0 .

XFERLEN = TGTMAXLEN - TGTLEN.

IF XFERLEN > SRCOBJLEN.

XFERLEN = SRCOBJLEN.

MOVE BUFFERSRCOBJPTR TO OBJBIN-LINETGTLEN.

TGTLEN = TGTLEN + SRCOBJLEN.

SRCOBJLEN = 0.

CLEAR BUFFER.

ELSE.

MOVE BUFFER+SRCOBJPTR(XFERLEN) TO

OBJBIN-LINE+TGTLEN(XFERLEN).

APPEND OBJBIN.

CLEAR OBJBIN-LINE.

TGTLEN = 0.

SRCOBJLEN = SRCOBJLEN - XFERLEN.

SRCOBJPTR = SRCOBJPTR + XFERLEN.

TOTLINEXFER = TOTLINEXFER + 1.

ENDIF.

TOTXFER = TOTXFER + XFERLEN.

ENDWHILE.

ENDIF.

ENDLOOP.

IF TGTLEN > 0.

APPEND OBJBIN.

TOTLINEXFER = TOTLINEXFER + 1.

ENDIF.

CLEAR OBJPACK-TRANSF_BIN.

OBJPACK-TRANSF_BIN = 'X'.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 0.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = TOTLINEXFER.

OBJPACK-DOC_TYPE = 'XLS'.

OBJPACK-OBJ_NAME = REJFILE.

OBJPACK-OBJ_DESCR = 'Rejected Entries File'.

OBJPACK-DOC_SIZE = TOTXFER.

APPEND OBJPACK.

REFRESH RECLIST.

MAIL1 = Recepient Mail Id

RECLIST-RECEIVER = MAIL1.

RECLIST-REC_TYPE = 'U'.

APPEND RECLIST.

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.

IF SY-SUBRC <> 0.

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

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

ENDIF.

endform.

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

Hope this is helpful to you. If you need further information, revert back.

Reward all the helpful answers.

Regards

Nagaraj T

Read only

Former Member
0 Likes
389

thanx...