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

Problem while sending e-mail from SAP

Former Member
0 Likes
805

Hi,

I am trying to send one attachment from sap to my e-mail. thats comming as .Txt but i need in .XLS format. if i didn't select any delimeter and if i select any delimeter that delimeter occupying one more cell in XL sheet and corrupting the format. can anyone help me in this.

Thanks,

Yogesh

7 REPLIES 7
Read only

Former Member
0 Likes
774
Read only

0 Likes
774

Hi Naveen,

Actually i have 3 programs, two is for downloading and one is for sending e-mail. My problem is i can download as an .xls, but while sending if i didn't select any delimeter that attachment comming as .Txt file but i need as XLS. and if i select any delimeter, delimeter occupying onemore cell in xl sheet. can u plz guide m ein this.

Thanks,

yogesh

Read only

0 Likes
774

Hi Yogesh...

Is this a Z-Program or a standard sap program ?

Thanks,

Renjith

Read only

0 Likes
774

Hi Ranjit,

Its a z-program. But here we r using 3 programs. we r calling remaing 2-programs for downloading file into local disk .

Thanks,

yogesh

Read only

0 Likes
774

are you using the FM - SO_NEW_DOCUMENT_ATT_SEND_API1 to send mail with attachment ?

if yes, could you pls post the code where you are filling the attachment contents...

Thanks,

Renjith

Read only

0 Likes
774

Hi Renjith,

Here is the code

REPORT ZZEMAILREPORT MESSAGE-ID S1

NO STANDARD PAGE HEADING

LINE-SIZE 100

LINE-COUNT 65(0).

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

  • Source Code Documentation Section *

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

  • Program Name : ZZEMAILREPORT

  • Source Code Type : Report

  • Date : 10/31/2001

  • Programmer : Prashant Tyagi

  • Description : This report will allow the running of any SAP *

  • program and then send the output as an Email

  • attachment.

  • Tr. Request No : DEVK954522

======================================================================

  • Modification Log : *

  • ------------------ *

  • Date : 03/01/2002 *

  • Requested By : Steven P Willment *

  • Developer : Prashant Tyagi *

  • Changes Ref By : CNXT-01 *

  • Description : If no program name is entered then just the *

  • subject line and text body will be sent as an *

  • Email *

  • Transport No. : DEVK956294 *

----


  • Date : 03/21/2002 *

  • Requested By : Steven P Willment *

  • Developer : Prashant Tyagi *

  • Changes Ref By : CNXT-02 *

  • Description : Do not check for the program name in TRDIR if the *

  • user does not enter a value in the selection *

  • screen *

  • Transport No. : DEVK956770 *

----


  • Date : 06/06/2003 *

  • Requested By : Steven P Willment *

  • Developer : Ramandeep Singh *

  • Changes Ref By : CNXT-03 *

  • Description : Send as copy if "SEND_COPY" flag is set in *

  • ZEMAILADDR *

----


  • Date : 11/14/2005 *

  • Requested By : Tom Hutton *

  • Developer : Ramandeep Singh *

  • Changes Ref By : SKY-01 *

  • Description : Option to delimit a report. Program would delimit *

  • the report into different columns so that programs*

  • like Excel can read it *

----


  • Date : 04/24/2006 *

  • Requested By : Olga Cruz / Daniel *

  • Developer : Himanshu Aggarwal *

  • Changes Ref By : SKY-02 *

  • Description : Activate file delimited options for report. *

  • Transport No. : DEVK985197 *

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

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

  • T A B L E S *

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

TABLES : RLGRAP, ZEMAILADDR, TRDIR, VARID.

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

  • I N T E R N A L T A B L E S *

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

DATA: LISTOBJECT LIKE ABAPLIST OCCURS 0 WITH HEADER LINE.

DATA COMPRESSED_LIST LIKE SOLI OCCURS 0.

DATA: OBJPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.

DATA: OBJHEAD LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE.

DATA: OBJBIN LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE.

DATA: OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: RECLIST LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE.

  • Data for the status output after sending

DATA: USER_ADDRESS LIKE SOUSRADRI1 OCCURS 1 WITH HEADER LINE.

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

  • W O R K - F I E L D S *

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

DATA: RECIPIENT_INT LIKE SADRUD.

DATA: EMAIL_ADDR LIKE ZEMAILADDR-EMAIL_ADDR.

DATA G_DOC_TYPE LIKE SOODK-OBJTP VALUE 'ALI'.

DATA: DOC_CHNG LIKE SODOCCHGI1.

DATA: TAB_LINES LIKE SY-TABIX.

DATA: SENT_TO_ALL LIKE SONV-FLAG.

DATA : W-LINE TYPE I.

DATA: MESSAGE_VAR(200).

DATA: VAR(50).

DATA: SEP VALUE '-'.

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

  • S E L E C T - O P T I O N S / P A R A M E T E R S *

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

SELECTION-SCREEN BEGIN OF BLOCK STATUS WITH FRAME TITLE TEXT-001.

SELECTION-SCREEN SKIP.

PARAMETERS : P_SEND AS CHECKBOX.

SELECTION-SCREEN SKIP.

PARAMETERS : P_SUBJ(50) " like RLGRAP-FILENAME DEFAULT

DEFAULT 'Report sent from SAP'.

PARAMETERS : P_TEXT LIKE RLGRAP-FILENAME,

P_TEXT1 LIKE RLGRAP-FILENAME,

P_TEXT2 LIKE RLGRAP-FILENAME.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN END OF BLOCK STATUS.

SELECTION-SCREEN BEGIN OF BLOCK SENDTO WITH FRAME TITLE TEXT-013.

SELECT-OPTIONS: S_EMAIL FOR RECIPIENT_INT-ADDRESS NO INTERVALS

LOWER CASE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(45) TEXT-002 FOR FIELD P_TABLE.

PARAMETERS : P_TABLE AS CHECKBOX.

SELECTION-SCREEN END OF LINE.

PARAMETERS : P_KEY LIKE ZEMAILADDR-ADDR_KEY.

SELECTION-SCREEN END OF BLOCK SENDTO.

SELECTION-SCREEN BEGIN OF BLOCK ABC WITH FRAME TITLE TEXT-004.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN POSITION 10.

PARAMETERS : P_PROG LIKE RS38M-PROGRAMM." OBLIGATORY. "CNXT-01

SELECTION-SCREEN COMMENT 1(7) TEXT-005 FOR FIELD P_PROG.

SELECTION-SCREEN POSITION 70.

PARAMETERS : P_VAR LIKE RS38M-SELSET.

SELECTION-SCREEN COMMENT 63(7) TEXT-006 FOR FIELD P_VAR.

SELECTION-SCREEN END OF LINE.

*BEGIN OF SKY-01

SELECTION-SCREEN SKIP.

SELECTION-SCREEN COMMENT /1(72) TEXT-C04 FOR FIELD P_SEP.

SELECTION-SCREEN COMMENT /1(72) TEXT-C02 FOR FIELD P_SEP.

SELECTION-SCREEN SKIP.

PARAMETERS: P_NO RADIOBUTTON GROUP G1,

P_TAB RADIOBUTTON GROUP G1,

P_COMMA RADIOBUTTON GROUP G1.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(10) TEXT-C01 FOR FIELD P_OTHER.

SELECTION-SCREEN POSITION POS_LOW.

PARAMETERS: P_OTHER RADIOBUTTON GROUP G1.

SELECTION-SCREEN POSITION 40.

PARAMETERS: P_SEP TYPE X.

SELECTION-SCREEN COMMENT (11) TEXT-C03 FOR FIELD P_SEP.

SELECTION-SCREEN END OF LINE.

PARAMETERS: P_REM AS CHECKBOX.

PARAMETERS: P_NAME LIKE VAR.

*END OF SKY-01

SELECTION-SCREEN END OF BLOCK ABC.

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

  • A T S E L E C T I O N - S C R E E N *

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

AT SELECTION-SCREEN.

SELECT COUNT(*) INTO W-LINE FROM ZEMAILADDR

WHERE ADDR_KEY = P_KEY.

IF NOT P_TABLE IS INITIAL AND

NOT S_EMAIL IS INITIAL AND

NOT P_KEY IS INITIAL.

MESSAGE W000(0K) WITH TEXT-010.

ENDIF.

IF NOT P_TABLE IS INITIAL AND W-LINE EQ 0.

MESSAGE E000(0K) WITH TEXT-007.

ENDIF.

IF P_TABLE IS INITIAL AND S_EMAIL IS INITIAL.

MESSAGE E000(0K) WITH TEXT-011.

ENDIF.

IF NOT P_PROG IS INITIAL. "CNXT-02

SELECT SINGLE * FROM TRDIR WHERE NAME = P_PROG.

IF SY-SUBRC <> 0.

MESSAGE E000(0K) WITH TEXT-015.

ENDIF.

ENDIF. "CNXT-02

IF NOT P_VAR IS INITIAL.

SELECT SINGLE * FROM VARID WHERE REPORT = P_PROG AND VARIANT = P_VAR.

IF SY-SUBRC <> 0.

MESSAGE E000(0K) WITH TEXT-014.

ENDIF.

ENDIF.

*BEGIN OF SKY-01

CASE 'X'.

WHEN P_NO.

CLEAR P_SEP.

WHEN P_TAB.

P_SEP = '09'.

WHEN P_COMMA.

P_SEP = '2C'.

ENDCASE.

*END OF SKY-01

----


Main Program -

----


  • Report Headers *

----


  • Top of page event to create report headers and column headings

*CNXT-01 {

TOP-OF-PAGE.

PERFORM WRITE_HEADER.

*CNXT-01 }

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

  • S T A R T - O F - S E L E C T I O N *

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

START-OF-SELECTION.

IF P_SEND IS INITIAL.

WRITE : / TEXT-008.

PERFORM PRINT_RECIPIENT_LIST.

WRITE : / TEXT-009.

ENDIF.

SKIP 1.

*BEGIN OF SKY-01

IF NOT P_NAME IS INITIAL AND NOT P_SEP IS INITIAL.

VAR = P_NAME.

ELSE.

*END OF SKY-01

CONCATENATE P_PROG P_VAR INTO VAR SEPARATED BY SEP.

ENDIF. "SKY-01

*CNXT-01 {

IF NOT P_PROG IS INITIAL.

IF NOT P_VAR IS INITIAL.

WRITE: /5 'REPORT : ', 18 P_PROG, 35 'USING', 43 'VARIANT : '

,55 P_VAR.

ELSE.

WRITE: /5 'REPORT : ', 18 P_PROG.

ENDIF.

SKIP 3.

PERFORM SEND_EMAIL.

ENDIF.

IF P_PROG IS INITIAL AND ( NOT S_EMAIL IS INITIAL

OR NOT P_TEXT IS INITIAL

OR NOT P_TEXT1 IS INITIAL

OR NOT P_TEXT2 IS INITIAL ).

PERFORM NOT_SEND_REPORT.

ENDIF.

*CNXT-01 }

&----


*& Form SEND_EMAIL

&----


  • text

----


FORM SEND_EMAIL.

DATA: ASCITAB(255) OCCURS 0 WITH HEADER LINE. "SKY-01

SUBMIT (P_PROG) USING SELECTION-SET P_VAR EXPORTING LIST

TO MEMORY AND

RETURN.

CALL FUNCTION 'LIST_FROM_MEMORY'

TABLES

LISTOBJECT = LISTOBJECT

EXCEPTIONS

NOT_FOUND = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

WRITE 'Error in list_from_memory.'.

ENDIF.

DESCRIBE TABLE LISTOBJECT LINES TAB_LINES.

IF P_SEND IS INITIAL OR TAB_LINES EQ 0.

EXIT.

ENDIF.

CALL FUNCTION 'LIST_FREE_MEMORY'

TABLES

LISTOBJECT = LISTOBJECT

EXCEPTIONS

OTHERS = 1.

IF SY-SUBRC <> 0.

WRITE 'Error in list_free_memory.'.

ENDIF.

*BEGIN OF SKY-01

IF NOT P_SEP IS INITIAL.

CALL FUNCTION 'LIST_TO_ASCI'

TABLES

LISTASCI = ASCITAB

LISTOBJECT = LISTOBJECT.

PERFORM REFORMAT_DATA TABLES ASCITAB OBJBIN USING P_SEP P_REM .

ELSE.

*END OF SKY-01

CALL FUNCTION 'TABLE_COMPRESS'

TABLES

IN = LISTOBJECT

OUT = COMPRESSED_LIST

EXCEPTIONS

COMPRESS_ERROR = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

WRITE: 'Error in table_compress.'.

ENDIF.

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

MOVE COMPRESSED_LIST[] TO OBJBIN[].

ENDIF. "SKY-01

DOC_CHNG-OBJ_NAME = 'List'.

DOC_CHNG-OBJ_DESCR = P_SUBJ.

OBJTXT = P_TEXT.

APPEND OBJTXT.

OBJTXT = P_TEXT1.

APPEND OBJTXT.

OBJTXT = P_TEXT2.

APPEND OBJTXT.

DESCRIBE TABLE OBJTXT LINES TAB_LINES.

READ TABLE OBJTXT INDEX TAB_LINES.

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

OBJPACK-DOC_TYPE = 'RAW'.

APPEND OBJPACK.

DESCRIBE TABLE OBJBIN LINES TAB_LINES.

OBJPACK-TRANSF_BIN = 'X'.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 0.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = TAB_LINES.

*BEGIN OF SKY-01

DATA: FILE(50), XTN(3).

IF NOT P_SEP IS INITIAL.

SPLIT P_NAME AT '.' INTO FILE XTN.

IF NOT XTN IS INITIAL.

TRANSLATE XTN TO UPPER CASE.

OBJPACK-DOC_TYPE = XTN.

ELSE.

OBJPACK-DOC_TYPE = 'TXT'.

ENDIF.

ELSE.

*END OF SKY-01

OBJPACK-DOC_TYPE = G_DOC_TYPE.

ENDIF. "SKY-01

OBJPACK-OBJ_NAME = 'Attachment'.

OBJPACK-OBJ_DESCR = VAR.

OBJPACK-DOC_SIZE = TAB_LINES * 255.

APPEND OBJPACK.

IF P_SEND = 'X' AND P_TABLE IS INITIAL AND NOT S_EMAIL IS INITIAL.

LOOP AT S_EMAIL.

RECIPIENT_INT-ADDRESS = S_EMAIL-LOW.

RECLIST-RECEIVER = RECIPIENT_INT.

RECLIST-REC_TYPE = 'U'.

APPEND RECLIST.

CLEAR RECLIST.

ENDLOOP.

ELSEIF P_TABLE = 'X'.

SELECT * FROM ZEMAILADDR WHERE ADDR_KEY = P_KEY.

RECIPIENT_INT-ADDRESS = ZEMAILADDR-EMAIL_ADDR .

RECLIST-RECEIVER = RECIPIENT_INT.

RECLIST-REC_TYPE = 'U'.

RECLIST-COPY = ZEMAILADDR-SEND_COPY. "CNXT-03

APPEND RECLIST.

CLEAR RECLIST.

ENDSELECT.

ENDIF.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = DOC_CHNG

PUT_IN_OUTBOX = 'X'

IMPORTING

SENT_TO_ALL = SENT_TO_ALL

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.

CASE SY-SUBRC.

WHEN 0.

WRITE: / 'Result of the sendprocess:'.

IF NOT SENT_TO_ALL IS INITIAL.

WRITE: / 'Successfully sent to all recipients.'.

PERFORM PRINT_RECIPIENT_LIST.

ELSE.

LOOP AT RECLIST WHERE RETRN_CODE NE 0.

REFRESH USER_ADDRESS.

CLEAR USER_ADDRESS.

USER_ADDRESS-USERID = RECLIST-REC_ID.

APPEND USER_ADDRESS.

CALL FUNCTION 'SO_USER_ADDRESS_READ_API1'

TABLES

USER_ADDRESS = USER_ADDRESS

EXCEPTIONS

ENQUEUE_ERRROR = 1

PARAMETER_ERROR = 2

X_ERROR = 3

OTHERS = 4.

IF SY-SUBRC <> 0.

USER_ADDRESS-LONG_NAME = RECLIST-REC_ID.

ENDIF.

WRITE: / 'Could not send to: '.

WRITE: USER_ADDRESS-LONG_NAME(48).

ENDLOOP.

LOOP AT RECLIST WHERE RETRN_CODE EQ 0.

ENDLOOP.

IF SY-SUBRC = 0.

WRITE: / 'Successfully sent to all other recipients.'.

PERFORM PRINT_RECIPIENT_LIST.

ENDIF.

ENDIF.

WHEN 1.

WRITE: / 'No permission to sent to the specified ',

'amount of recipients !'.

WHEN 2.

WRITE: / 'Document could not be sent to any recipient !'.

WHEN 4.

WRITE: / 'No permission to send !'.

WHEN OTHERS.

WRITE: / 'Error while sending !'.

ENDCASE.

ENDFORM. " SEND_EMAIL

&----


*& Form PRINT_RECIPIENT_LIST

&----


  • text

----


FORM PRINT_RECIPIENT_LIST.

IF NOT S_EMAIL IS INITIAL.

LOOP AT S_EMAIL.

WRITE : / S_EMAIL-LOW.

ENDLOOP.

ELSEIF P_TABLE = 'X'.

SELECT * FROM ZEMAILADDR WHERE ADDR_KEY = P_KEY.

WRITE : / ZEMAILADDR-EMAIL_ADDR .

*BEGIN OF CNXT-03

IF ZEMAILADDR-SEND_COPY = 'X'.

WRITE: ', As Copy'.

ENDIF.

*END OF CNXT-03

ENDSELECT.

ENDIF.

ENDFORM. " PRINT_RECIPIENT_LIST

&----


*& Form NOT_SEND_REPORT CNXT-01

&----


*

----


FORM NOT_SEND_REPORT.

IF P_SEND IS INITIAL.

EXIT.

ENDIF.

DOC_CHNG-OBJ_NAME = 'List'.

DOC_CHNG-OBJ_DESCR = P_SUBJ.

OBJTXT = P_TEXT.

APPEND OBJTXT.

OBJTXT = P_TEXT1.

APPEND OBJTXT.

OBJTXT = P_TEXT2.

APPEND OBJTXT.

DESCRIBE TABLE OBJTXT LINES TAB_LINES.

READ TABLE OBJTXT INDEX TAB_LINES.

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

OBJPACK-DOC_TYPE = 'RAW'.

APPEND OBJPACK.

IF P_SEND = 'X' AND P_TABLE IS INITIAL AND NOT S_EMAIL IS INITIAL.

LOOP AT S_EMAIL.

RECIPIENT_INT-ADDRESS = S_EMAIL-LOW.

RECLIST-RECEIVER = RECIPIENT_INT.

RECLIST-REC_TYPE = 'U'.

APPEND RECLIST.

CLEAR RECLIST.

ENDLOOP.

ELSEIF P_TABLE = 'X'.

SELECT * FROM ZEMAILADDR WHERE ADDR_KEY = P_KEY.

RECIPIENT_INT-ADDRESS = ZEMAILADDR-EMAIL_ADDR .

RECLIST-RECEIVER = RECIPIENT_INT.

RECLIST-REC_TYPE = 'U'.

RECLIST-COPY = ZEMAILADDR-SEND_COPY. "CNXT-03

APPEND RECLIST.

CLEAR RECLIST.

ENDSELECT.

ENDIF.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = DOC_CHNG

PUT_IN_OUTBOX = 'X'

IMPORTING

SENT_TO_ALL = SENT_TO_ALL

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.

CASE SY-SUBRC.

WHEN 0.

WRITE: / 'Result of the sendprocess:'.

IF NOT SENT_TO_ALL IS INITIAL.

WRITE: / 'Successfully sent to all recipients.'.

PERFORM PRINT_RECIPIENT_LIST.

ELSE.

LOOP AT RECLIST WHERE RETRN_CODE NE 0.

REFRESH USER_ADDRESS.

CLEAR USER_ADDRESS.

USER_ADDRESS-USERID = RECLIST-REC_ID.

APPEND USER_ADDRESS.

CALL FUNCTION 'SO_USER_ADDRESS_READ_API1'

TABLES

USER_ADDRESS = USER_ADDRESS

EXCEPTIONS

ENQUEUE_ERRROR = 1

PARAMETER_ERROR = 2

X_ERROR = 3

OTHERS = 4.

IF SY-SUBRC <> 0.

USER_ADDRESS-LONG_NAME = RECLIST-REC_ID.

ENDIF.

WRITE: / 'Could not send to: '.

WRITE: USER_ADDRESS-LONG_NAME(48).

ENDLOOP.

LOOP AT RECLIST WHERE RETRN_CODE EQ 0.

ENDLOOP.

IF SY-SUBRC = 0.

WRITE: / 'Successfully sent to all other recipients.'.

PERFORM PRINT_RECIPIENT_LIST.

ENDIF.

ENDIF.

WHEN 1.

WRITE: / 'No permission to sent to the specified ',

'amount of recipients !'.

WHEN 2.

WRITE: / 'Document could not be sent to any recipient !'.

WHEN 4.

WRITE: / 'No permission to send !'.

WHEN OTHERS.

WRITE: / 'Error while sending !'.

ENDCASE.

ENDFORM. "NOT_SEND_REPORT

&----


*& Form WRITE_HEADER

&----


  • Report heading. Top-of-page.

----


FORM WRITE_HEADER.

DATA : LINE01(100) TYPE C,

LINE02 LIKE LINE01,

LINE03 LIKE LINE01,

LINE04 LIKE LINE01.

  • function call to create report headers

CALL FUNCTION 'Z_REPORT_HEADERS'

EXPORTING

COLUMNS = 100

PERIOD = ' '

RPT_NAME = 'ZZEMAILREPORT'

RPT_TITLE1 = SY-TITLE

RPT_TITLE3 = ' '

IMPORTING

TEXT01 = LINE01

TEXT02 = LINE02

TEXT03 = LINE03

TEXT04 = LINE04.

  • output report header lines

WRITE: / LINE01, LINE02, LINE03, LINE04.

SKIP.

ULINE.

SKIP .

ENDFORM. " WRITE_HEADER

----


  • FORM REFORMAT_DATA *

----


  • ........ *

----


  • --> ASCITAB *

  • --> OBJBIN *

  • --> P_SEP *

  • --> P_REM *

----


FORM REFORMAT_DATA TABLES ASCITAB

OBJBIN STRUCTURE OBJBIN

USING P_SEP P_REM .

DATA: SEP_INDEX LIKE SY-TABIX.

DATA: ITAB(1000) OCCURS 0 WITH HEADER LINE.

DATA: STR LIKE ITAB.

DATA X TYPE I.

DATA COUNT TYPE I.

DATA CNT TYPE I. "SKY-02

DATA LINES_PER_RECORD TYPE I.

DATA FLAG.

DATA: BEGIN OF STRUC,

HEX TYPE X,

END OF STRUC.

STRUC-HEX = P_SEP.

  • BEGIN OF SKY-02 {

*Count how many lines does the report have for each record

  • LOOP AT ASCITAB.

  • X = STRLEN( ASCITAB ).

  • IF ASCITAB(X) CO '-'.

  • LINES_PER_RECORD = SY-TABIX - 1.

  • DELETE ASCITAB. "delete separator line

  • EXIT.

  • ENDIF.

  • ENDLOOP.

  • Modify ASCITAB so it can have complete group of 3 Records.

DESCRIBE TABLE ASCITAB LINES SY-TABIX.

CNT = SY-TABIX MOD 3.

IF CNT <> 0.

CNT = 3 - CNT.

DO CNT TIMES.

ASCITAB = ' '.

APPEND ASCITAB.

ENDDO.

ENDIF.

  • } END OF SKY-02.

*all lines for one record to be brought in one line

LOOP AT ASCITAB.

X = ( COUNT * 255 ).

IF NOT X IS INITIAL. X = X + 1. ENDIF.

MOVE ASCITAB TO ITAB+X(255).

COUNT = COUNT + 1.

  • { BEGIN OF SKY-02.

  • IF COUNT = LINES_PER_RECORD.

IF COUNT = 3.

  • } END OF SKY-02.

CLEAR COUNT.

APPEND ITAB.

CLEAR ITAB.

ENDIF.

ENDLOOP.

*insert separtor characters in header

READ TABLE ITAB INDEX 1.

X = STRLEN( ITAB ).

DO.

X = X - 1.

IF X < 0. EXIT. ENDIF.

IF ITAB+X(1) IS INITIAL.

IF FLAG IS INITIAL.

STRX(1) = ITABX(1) = STRUC.

ENDIF.

FLAG = 'X'.

ELSE.

CLEAR FLAG.

ENDIF.

ENDDO.

*remove the extra separator character in the beginning(if any)

CLEAR X.

DO.

IF ITABX(1) <> STRUC AND NOT ITABX(1) IS INITIAL.

EXIT.

ENDIF.

IF ITAB+X(1) = STRUC.

CLEAR ITAB+X(1).

CLEAR STR+X(1).

ENDIF.

X = X + 1.

ENDDO.

  • MODIFY ITAB INDEX 1.

LOOP AT ITAB.

AT FIRST.

IF P_REM = 'X'.

CONTINUE.

ENDIF.

ENDAT.

OVERLAY ITAB WITH STR.

PERFORM CONVERT_TO_BIN IN PROGRAM ZZEMAILFILE TABLES OBJBIN

USING ITAB.

ENDLOOP.

ENDFORM.

thanks,

yogesh

Read only

0 Likes
774

Hi Renjith,

Can i have u r mail id

thnaks,

yogesh