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 SO_NEW_DOCUMENT_ATT_SEND_API1 ... PROC_NAME ... and OBJECT_PARA

Former Member
0 Likes
610

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.

2 REPLIES 2
Read only

Former Member
0 Likes
526

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

Read only

Former Member
0 Likes
526

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