2007 May 26 2:48 AM
Hello,
Not to long I asked a question regarding making a message in SAP Mail interactive. Recently I stumbled upon a code that allows the proccessing of a program from the SAP Mail when clicking the execute command.
I am now able to run an Abap program in SAP Mail. Problem now is that while this works in some SAP Standard Reports and Programs (even the ones I copied from). Im having a difficult time passing the selected parameter/select-option.
The main culprit of the functionalities appears to be the table OBJECT_PARA and
DOCUMENT_DATA-PROC_NAME
Im hoping you guys can aid me in trying to find the problem. The code is as follows:
<b><u>EMAIL PROGRAM</u></b>
REPORT ZZEMAIL_PROGRAM MESSAGE-ID ZZ.
TABLES: SOMLRECI1, TRDIR, MARA.
data: length type i.
data: doc_chng like sodocchgi1.
data: tab_lines like sy-tabix.
DATA: BEGIN OF HTML_TAB OCCURS 0.
INCLUDE STRUCTURE W3HTML.
DATA: END OF HTML_TAB.
data: itab like abaplist occurs 0 with header line.
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: OBJPARA LIKE SOPARAI1 OCCURS 0 WITH HEADER LINE.
DATA: OBJPARB LIKE SOPARBI1 OCCURS 0 WITH HEADER LINE.
DATA: G_TEXT LIKE TRDIRT-TEXT.
DATA: BEGIN OF T_LIST OCCURS 0,
RECVD LIKE SOMLRECI1-RECEIVER.
DATA: END OF T_LIST.
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
PARAMETERS: TITLE(50).
PARAMETERS: KUNNR LIKE KNA1-KUNNR.
SELECTION-SCREEN END OF BLOCK BLK1.
SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-002.
SELECT-OPTIONS: RECEIVER FOR SOMLRECI1-RECEIVER.
SELECTION-SCREEN END OF BLOCK BLK2.
START-OF-SELECTION.
IF RECEIVER[] IS INITIAL.
MESSAGE I015 WITH 'Add at least (1) recipient'.
EXIT.
ENDIF.
PERFORM UPLOAD_RECIPIENTS.
DATA: IADDSMTP TYPE BAPIADSMTP OCCURS 0 WITH HEADER LINE.
data: ireturn type bapiret2 occurs 0 with header line.
DOC_CHNG-OBJ_DESCR = TITLE.
OBJTXT = 'This is a Testing Email to test the program'.
APPEND OBJTXT.
DESCRIBE TABLE OBJTXT LINES TAB_LINES.
read table objtxt index tab_lines.
<b> DOC_CHNG-PROC_TYPE = 'R'.
DOC_CHNG-PROC_NAME = 'ZTEST_CUST_NAME'.
DOC_CHNG-SKIP_SCREN = 'X'.
OBJPARA-NAME = 'SO_KUNNR'.
OBJPARA-LOW = KUNNR.
APPEND OBJPARA.
CLEAR OBJPARA.</b>
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.
LOOP AT T_LIST.
RECLIST-RECEIVER = T_LIST-RECVD.
RECLIST-REC_TYPE = 'B'.
APPEND RECLIST. CLEAR RECLIST.
ENDLOOP.
call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
exporting
document_data = doc_chng
put_in_outbox = 'X'
tables
packing_list = objpack
object_header = objhead
CONTENTS_BIN = HTML_TAB
contents_txt = objtxt
OBJECT_PARA = OBJPARA
object_parb = objparb
receivers = reclist
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.
case sy-subrc.
when 0.
loop at reclist.
message i014 with reclist-receiver.
endloop.
when 1.
message i015 with text-027.
when 2.
message i015 with text-028.
when 3.
message i015 with text-029.
when 4.
message i015 with text-030.
when 5.
message i015 with text-031.
when 6.
message i015 with text-032.
when 7.
message i015 with text-033.
when 8.
message i015 with text-036.
when others.
message i015 with text-036.
endcase.
&----
*& Form UPLOAD_RECIPIENTS
&----
FORM UPLOAD_RECIPIENTS.
LOOP AT RECEIVER.
T_LIST-RECVD = RECEIVER-LOW.
APPEND T_LIST. CLEAR T_LIST.
IF NOT RECEIVER-HIGH IS INITIAL.
T_LIST-RECVD = RECEIVER-HIGH.
APPEND T_LIST. CLEAR T_LIST.
ENDIF.
ENDLOOP.
ENDFORM. " UPLOAD_RECIPIENTS
<b><u>Program ZTEST_CUST_NAME</u></b>
REPORT ZTEST_CUST_NAME NO STANDARD PAGE HEADING.
TABLES: KNA1.
DATA: BEGIN OF NAME OCCURS 0,
NAME1 LIKE KNA1-NAME1,
END OF NAME.
SELECT-OPTIONS: SO_KUNNR FOR KNA1-KUNNR OBLIGATORY.
SELECT NAME1 FROM KNA1 INTO TABLE NAME WHERE KUNNR IN SO_KUNNR.
*WRITE: name1.
LOOP AT NAME.
WRITE: / NAME-NAME1.
ENDLOOP.
...
This has proven quite a head scratching problem. But I hope I can get some help soon. Thanks guys and good day.
Hello,
Not to long I asked a question regarding making a message in SAP Mail interactive. Recently I stumbled upon a code that allows the proccessing of a program from the SAP Mail when clicking the execute command.
I am now able to run an Abap program in SAP Mail. Problem now is that while this works in some SAP Standard Reports and Programs (even the ones I copied from). Im having a difficult time passing the selected parameter/select-option.
The main culprit of the functionalities appears to be the table OBJECT_PARA and
DOCUMENT_DATA-PROC_NAME
Im hoping you guys can aid me in trying to find the problem. The code is as follows:
<b><u>EMAIL PROGRAM</u></b>
REPORT ZZEMAIL_PROGRAM MESSAGE-ID ZZ.
TABLES: SOMLRECI1, TRDIR, MARA.
data: length type i.
data: doc_chng like sodocchgi1.
data: tab_lines like sy-tabix.
DATA: BEGIN OF HTML_TAB OCCURS 0.
INCLUDE STRUCTURE W3HTML.
DATA: END OF HTML_TAB.
data: itab like abaplist occurs 0 with header line.
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: OBJPARA LIKE SOPARAI1 OCCURS 0 WITH HEADER LINE.
DATA: OBJPARB LIKE SOPARBI1 OCCURS 0 WITH HEADER LINE.
DATA: G_TEXT LIKE TRDIRT-TEXT.
DATA: BEGIN OF T_LIST OCCURS 0,
RECVD LIKE SOMLRECI1-RECEIVER.
DATA: END OF T_LIST.
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
PARAMETERS: TITLE(50).
PARAMETERS: KUNNR LIKE KNA1-KUNNR.
SELECTION-SCREEN END OF BLOCK BLK1.
SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-002.
SELECT-OPTIONS: RECEIVER FOR SOMLRECI1-RECEIVER.
SELECTION-SCREEN END OF BLOCK BLK2.
START-OF-SELECTION.
IF RECEIVER[] IS INITIAL.
MESSAGE I015 WITH 'Add at least (1) recipient'.
EXIT.
ENDIF.
PERFORM UPLOAD_RECIPIENTS.
DATA: IADDSMTP TYPE BAPIADSMTP OCCURS 0 WITH HEADER LINE.
data: ireturn type bapiret2 occurs 0 with header line.
DOC_CHNG-OBJ_DESCR = TITLE.
OBJTXT = 'This is a Testing Email to test the program'.
APPEND OBJTXT.
DESCRIBE TABLE OBJTXT LINES TAB_LINES.
read table objtxt index tab_lines.
<b> DOC_CHNG-PROC_TYPE = 'R'.
DOC_CHNG-PROC_NAME = 'ZTEST_CUST_NAME'.
DOC_CHNG-SKIP_SCREN = 'X'.
OBJPARA-NAME = 'SO_KUNNR'.
OBJPARA-LOW = KUNNR.
APPEND OBJPARA.
CLEAR OBJPARA.</b>
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.
LOOP AT T_LIST.
RECLIST-RECEIVER = T_LIST-RECVD.
RECLIST-REC_TYPE = 'B'.
APPEND RECLIST. CLEAR RECLIST.
ENDLOOP.
call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
exporting
document_data = doc_chng
put_in_outbox = 'X'
tables
packing_list = objpack
object_header = objhead
CONTENTS_BIN = HTML_TAB
contents_txt = objtxt
OBJECT_PARA = OBJPARA
object_parb = objparb
receivers = reclist
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.
case sy-subrc.
when 0.
loop at reclist.
message i014 with reclist-receiver.
endloop.
when 1.
message i015 with text-027.
when 2.
message i015 with text-028.
when 3.
message i015 with text-029.
when 4.
message i015 with text-030.
when 5.
message i015 with text-031.
when 6.
message i015 with text-032.
when 7.
message i015 with text-033.
when 8.
message i015 with text-036.
when others.
message i015 with text-036.
endcase.
&----
*& Form UPLOAD_RECIPIENTS
&----
FORM UPLOAD_RECIPIENTS.
LOOP AT RECEIVER.
T_LIST-RECVD = RECEIVER-LOW.
APPEND T_LIST. CLEAR T_LIST.
IF NOT RECEIVER-HIGH IS INITIAL.
T_LIST-RECVD = RECEIVER-HIGH.
APPEND T_LIST. CLEAR T_LIST.
ENDIF.
ENDLOOP.
ENDFORM. " UPLOAD_RECIPIENTS
<b><u>Program ZTEST_CUST_NAME</u></b>
REPORT ZTEST_CUST_NAME NO STANDARD PAGE HEADING.
TABLES: KNA1.
DATA: BEGIN OF NAME OCCURS 0,
NAME1 LIKE KNA1-NAME1,
END OF NAME.
SELECT-OPTIONS: SO_KUNNR FOR KNA1-KUNNR OBLIGATORY.
SELECT NAME1 FROM KNA1 INTO TABLE NAME WHERE KUNNR IN SO_KUNNR.
*WRITE: name1.
LOOP AT NAME.
WRITE: / NAME-NAME1.
ENDLOOP.
...
This has proven quite a head scratching problem. But I hope I can get some help soon. Thanks guys and good day.
2007 May 26 3:14 AM
Can you compare with This Program and you will get some idea.Make sure the you should have access in SU01 ,when you go Su01 and maintain ur email id .
and check with SOST transaction and it has all settings
report zmail_0003.
data: itcpo like itcpo,
tab_lines like sy-tabix.
Variables for EMAIL functionality
data: maildata like sodocchgi1.
data: mailpack like sopcklsti1 occurs 2 with header line.
data: mailhead like solisti1 occurs 1 with header line.
data: mailbin like solisti1 occurs 10 with header line.
data: mailtxt like solisti1 occurs 10 with header line.
data: mailrec like somlrec90 occurs 0 with header line.
data: solisti1 like solisti1 occurs 0 with header line.
perform send_form_via_email.
************************************************************************
FORM SEND_FORM_VIA_EMAIL *
************************************************************************
form send_form_via_email.
clear: maildata, mailtxt, mailbin, mailpack, mailhead, mailrec.
refresh: mailtxt, mailbin, mailpack, mailhead, mailrec.
Creation of the document to be sent File Name
maildata-obj_name = 'TEST'.
Mail Subject
maildata-obj_descr = 'Subject'.
Mail Contents
mailtxt-line = 'Here is your file'.
append mailtxt.
Prepare Packing List
perform prepare_packing_list.
Set recipient - email address here!!!
mailrec-receiver = '[email protected]'.
mailrec-rec_type = 'U'.
append mailrec.
Sending the document
call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
exporting
document_data = maildata
put_in_outbox = ' '
tables
packing_list = mailpack
object_header = mailhead
contents_bin = mailbin
contents_txt = mailtxt
receivers = mailrec
exceptions
too_many_receivers = 1
document_not_sent = 2
operation_no_authorization = 4
others = 99.
endform.
************************************************************************
Form PREPARE_PACKING_LIST
************************************************************************
form prepare_packing_list.
clear: mailpack, mailbin, mailhead.
refresh: mailpack, mailbin, mailhead.
describe table mailtxt lines tab_lines.
read table mailtxt index tab_lines.
maildata-doc_size = ( tab_lines - 1 ) * 255 + strlen( mailtxt ).
Creation of the entry for the compressed document
clear mailpack-transf_bin.
mailpack-head_start = 1.
mailpack-head_num = 0.
mailpack-body_start = 1.
mailpack-body_num = tab_lines.
mailpack-doc_type = 'RAW'.
append mailpack.
mailhead = 'TEST.TXT'.
append mailhead.
File 1
mailbin = 'This is file 1'.
append mailbin.
describe table mailbin lines tab_lines.
mailpack-transf_bin = 'X'.
mailpack-head_start = 1.
mailpack-head_num = 1.
mailpack-body_start = 1.
mailpack-body_num = tab_lines.
mailpack-doc_type = 'TXT'.
mailpack-obj_name = 'TEST1'.
mailpack-obj_descr = 'Subject'.
mailpack-doc_size = tab_lines * 255.
append mailpack.
Reward Points if it is helpful
Thanks
Seshu
2007 Jul 10 7:43 AM
Hi Cheng,
you can't use the table OBJPARA with parameters of the report. You have to usel the table with set/get -parameters and only the first three characters are used!
Greetings
Jan
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |