02-26-2007 11:01 AM
Hi,
I am new in ABAP. My requirement is that i have to send an automatic mail which contains a table. I have to send this table in mail body itself, not as an attachment. And i tried this by appending my field values in i_contents_text which is like solisti1. I concatenated all field values and then appended. But the problem is in formatting. It is not showing the values in proper table. Moreover the no. of columns to display in the mail may get change according to requirements, so i cant fix the size of uline(tried in case of manual formatting) , allignment of fields is necessary. And last thing is that its not possible to concatenate field values other than characters, or numeric text etc. So how would i write all values in table.
Please suggest.
Thanks and Regards.
02-28-2007 2:55 PM
Hi Puneet,
here an example:
TABLES: MARA.
--- Parameter für SO_DOCUMENT_SEND_API1
DATA: OBJ_PACK LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,
OBJ_BIN LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
OBJ_TXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
REC_LIST LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE,
DOC_DATA LIKE SODOCCHGI1.
*
DATA: ITAB_LINES LIKE SY-TABIX.
DATA: strlen LIKE SY-TABIX.
*
DATA: BEGIN OF ITAB OCCURS 0,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
BRGEW LIKE MARA-BRGEW,
END OF ITAB.
*
DATA: BRGEW(18).
*
************************************************************************
*
START-OF-SELECTION.
*
SELECT MATNR MTART FROM MARA INTO TABLE ITAB UP TO 100 ROWS.
*
DESCRIBE TABLE ITAB LINES ITAB_LINES.
*
PERFORM EMAIL.
*
END-OF-SELECTION.
************************************************************************
FORM EMAIL.
*
email füllen
Betreff-Zeile
CLEAR: DOC_DATA.
DOC_DATA-OBJ_NAME = SY-REPID.
DOC_DATA-OBJ_DESCR = 'Materialdaten'.
Empfängerliste
email-User (U)
CLEAR REC_LIST.
REC_LIST-RECEIVER = 'test@test.de'. "email address
REC_LIST-REC_TYPE = 'U'.
APPEND REC_LIST.
*
PACKING_LIST: 1. Zeile gilt immer für email-Inhalt
CLEAR OBJ_PACK.
OBJ_PACK-BODY_START = 01.
OBJ_PACK-BODY_NUM = ITAB_LINES.
OBJ_PACK-DOC_TYPE = 'RAW'.
APPEND OBJ_PACK.
*
*emailinhalt
LOOP AT ITAB.
CLEAR: OBJ_TXT.
WRITE: ITAB-BRGEW TO BRGEW.
CONCATENATE ITAB-MATNR ITAB-MTART BRGEW INTO OBJ_TXT-LINE.
APPEND OBJ_TXT.
strlen = strlen( OBJ_TXT-LINE ).
OBJ_TXT-LINE = sy-uline(strlen).
APPEND OBJ_TXT.
ENDLOOP.
*
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
DOCUMENT_DATA = DOC_DATA
PUT_IN_OUTBOX = 'X'
COMMIT_WORK = 'X'
TABLES
PACKING_LIST = OBJ_PACK
CONTENTS_TXT = OBJ_TXT
RECEIVERS = REC_LIST
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.
*
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
WAIT UP TO 2 SECONDS.
*
SUBMIT RSCONN01 WITH MODE = 'INT'
WITH OUTPUT = ' '
AND RETURN.
*
ENDFORM. "EMAIL
Hope it helps.
Regards, Dieter
02-28-2007 2:22 PM
Hi,
If you want to send the table as attached Excel sheet, I have an abap for you.
Regards,
Dieu
02-28-2007 2:52 PM
hi
good
go through this link,hope this ll help you solve your problem
/people/gregor.wolf3/blog/2005/10/02/inbound-mail-processing-150-attach-files-to-opportunity
thanks
mrutyun^
02-28-2007 2:55 PM
Hi Puneet,
here an example:
TABLES: MARA.
--- Parameter für SO_DOCUMENT_SEND_API1
DATA: OBJ_PACK LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,
OBJ_BIN LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
OBJ_TXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
REC_LIST LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE,
DOC_DATA LIKE SODOCCHGI1.
*
DATA: ITAB_LINES LIKE SY-TABIX.
DATA: strlen LIKE SY-TABIX.
*
DATA: BEGIN OF ITAB OCCURS 0,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
BRGEW LIKE MARA-BRGEW,
END OF ITAB.
*
DATA: BRGEW(18).
*
************************************************************************
*
START-OF-SELECTION.
*
SELECT MATNR MTART FROM MARA INTO TABLE ITAB UP TO 100 ROWS.
*
DESCRIBE TABLE ITAB LINES ITAB_LINES.
*
PERFORM EMAIL.
*
END-OF-SELECTION.
************************************************************************
FORM EMAIL.
*
email füllen
Betreff-Zeile
CLEAR: DOC_DATA.
DOC_DATA-OBJ_NAME = SY-REPID.
DOC_DATA-OBJ_DESCR = 'Materialdaten'.
Empfängerliste
email-User (U)
CLEAR REC_LIST.
REC_LIST-RECEIVER = 'test@test.de'. "email address
REC_LIST-REC_TYPE = 'U'.
APPEND REC_LIST.
*
PACKING_LIST: 1. Zeile gilt immer für email-Inhalt
CLEAR OBJ_PACK.
OBJ_PACK-BODY_START = 01.
OBJ_PACK-BODY_NUM = ITAB_LINES.
OBJ_PACK-DOC_TYPE = 'RAW'.
APPEND OBJ_PACK.
*
*emailinhalt
LOOP AT ITAB.
CLEAR: OBJ_TXT.
WRITE: ITAB-BRGEW TO BRGEW.
CONCATENATE ITAB-MATNR ITAB-MTART BRGEW INTO OBJ_TXT-LINE.
APPEND OBJ_TXT.
strlen = strlen( OBJ_TXT-LINE ).
OBJ_TXT-LINE = sy-uline(strlen).
APPEND OBJ_TXT.
ENDLOOP.
*
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
DOCUMENT_DATA = DOC_DATA
PUT_IN_OUTBOX = 'X'
COMMIT_WORK = 'X'
TABLES
PACKING_LIST = OBJ_PACK
CONTENTS_TXT = OBJ_TXT
RECEIVERS = REC_LIST
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.
*
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
WAIT UP TO 2 SECONDS.
*
SUBMIT RSCONN01 WITH MODE = 'INT'
WITH OUTPUT = ' '
AND RETURN.
*
ENDFORM. "EMAIL
Hope it helps.
Regards, Dieter
03-01-2007 9:35 AM
03-03-2007 8:43 AM
Hi Dieter,
Thanks a lot for your help, but my problem was solved before you sent that that soln, i used some different method and its working fine. Even then thanks a lot for spending your precious time in solving my problem.
Regards
Puneet.