Send ALV output as attachment (exceeding 255 columns) to Inbox or email
Hello,
My requirement is to send the ALV output as attachment (csv or xls) to either Office Inbox or external email. The trick is the ALV output is way more than the 255 columns (about 2000).
I have read a number of threads on this matter. It seems that it is either SO_NEW_DOCUMENT_ATT_SEND_API1 or class BCS (cl_document_bcs=>create_document) but both has restriction on the line size (max 255 chars) (please correct me if I am wrong).
Could anyone suggest other approaches? Your input is much appreciated.
Regards
Calvin
Hi,
Comapare with your code,
DATA: docdata LIKE sodocchgi1,
objpack LIKE sopcklsti1 OCCURS 1 WITH HEADER LINE,
objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE,
objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
objbin LIKE solisti1 OCCURS 10 WITH HEADER LINE,
objhex LIKE solix OCCURS 10 WITH HEADER LINE,
reclist LIKE somlreci1 OCCURS 1 WITH HEADER LINE.
DATA: tab_lines TYPE i,
doc_size TYPE i,
att_type LIKE soodk-objtp.
DATA: listobject LIKE abaplist OCCURS 1 WITH HEADER LINE.
TABLE objtxt LINES tab_lines.
READ TABLE objtxt INDEX tab_lines.
docdata-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 = 'TXT'.
APPEND objpack.
Packing Info Attachment
att_type = whatatt_type..
DESCRIBE TABLE objbin LINES tab_lines.
READ TABLE objbin INDEX tab_lines.
objpack-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objbin ).
objpack-transf_bin = 'X'.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = att_type.
objpack-obj_name = 'ATTACHMENT'.
objpack-obj_descr = whatname.
APPEND objpack.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = docdata
put_in_outbox = 'X'
commit_work = 'X' "used from rel. 6.10
IMPORTING
SENT_TO_ALL =
NEW_OBJECT_ID =
TABLES
packing_list = objpack
object_header = objhead
contents_bin = objbin
contents_txt = objtxt
CONTENTS_HEX = objhex
OBJECT_PARA =
object_parb =
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
IF sy-subrc 0.
MESSAGE ID 'SO' TYPE 'S' NUMBER '023'
WITH docdata-obj_name.
ENDIF.
Similar Messages
-
How To Send ALV Output By Email.
Hi !
I wanted to ask how to send ALV output of report by email.
I know that i have to use the fms :
1. 'WWW_HTML_FROM_LISTOBJECT' - in order to convert the table to HTML.
2. 'SO_NEW_DOCUMENT_ATT_SEND_API1' - in order to send the HTML file.
My problem is how to convert the ALV screen output to the apropriate table parameter of the function 'WWW_HTML_FROM_LISTOBJECT' to listobject type ?
thanks
mosheHi look at the following program.
*& Report ZSM17_EMAIL1
REPORT zsm17_email.
tables : mara.
data: begin of it_mara occurs 0,
matnr like mara-matnr,
ernam like mara-ernam,
mtart like mara-mtart,
matkl like mara-matkl,
end of it_mara.
data: begin of it_final occurs 0,
v_string(255),
end of it_final.
*DATA: objpack LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE,
objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE,
objbin LIKE solisti1 OCCURS 10 WITH HEADER LINE,
objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
reclist LIKE somlreci1 OCCURS 5 WITH HEADER LINE.
DATA: objpack LIKE sopcklsti1 OCCURS 0 with header line,
objhead LIKE solisti1 OCCURS 0 WITH HEADER LINE,
objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,
objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,
reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE.
data: wa_objbin like line of objbin.
DATA: doc_chng LIKE sodocchgi1.
DATA: tab_lines LIKE sy-tabix.
select-options s_matnr for mara-matnr.
*--- Selecting data from mara
select matnr
ernam
mtart
matkl
into table it_mara
from mara
where matnr in s_matnr.
if sy-subrc ne 0.
write:/ 'no data found'.
exit.
else.
loop at it_mara.
concatenate it_mara-matnr
it_mara-ernam
it_mara-mtart
it_mara-matkl
into it_final-v_string separated by '~'.
append it_final.
clear it_final.
endloop.
endif.
Creating the document to be sent
doc_chng-obj_name = 'TEST'. "name of the document
title of document or subject
doc_chng-obj_descr = 'Test Email program'.
body of the mail
objtxt = 'A test report'.
APPEND objtxt.
objtxt = 'is enclosed as an attachment.'.
APPEND objtxt.
*clear objtxt.
DESCRIBE TABLE objtxt LINES tab_lines.
Size of SAPoffice Document (for API1)
doc_chng-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).
Creating the entry for the compressed attachment
objpack-transf_bin = 'X'.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = 'RAW'.
*objpack-obj_name = 'ATTACHMENT'.
*objpack-obj_descr = 'Test Email Program'.
*objpack-doc_size = tab_lines * 255.
APPEND objpack..
*--- Populating the records in the attachment
data: w_str(255) TYPE c.
loop at it_final into wa_objbin.
append wa_objbin to objbin.
append objbin.
clear wa_objbin.
endloop.
DESCRIBE TABLE objbin LINES tab_lines.
tab_lines = tab_lines + 1.
objhead = 'test_report.txt'.
append objhead.
Creating the entry for the compressed attachment
objpack-transf_bin = 'X'.
objpack-head_start = 1.
objpack-head_num = 1.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = 'txt'.
objpack-obj_name = 'txt'.
objpack-obj_descr = 'Test Email Program'.
objpack-doc_size = tab_lines * 255.
APPEND objpack..
*write:/ 'object text', objtxt.
Entering names in the distribution list
reclist-receiver = '[email protected]'.
reclist-rec_type = 'U'.
APPEND reclist.
Sending the document
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
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
operation_no_authorization = 4
OTHERS = 99.
CASE sy-subrc.
WHEN 0.
WRITE: / 'Result of the send process:'.
LOOP AT reclist.
WRITE: reclist-receiver(48), ':'.
IF reclist-retrn_code = 0.
WRITE 'sent successfully'.
ELSE.
WRITE 'not sent'.
ENDIF.
ENDLOOP.
loop at objbin.
write: objbin-line.
endloop.
WHEN 1.
WRITE: / 'no authorization to send to the specified number of' .
"'recipients!'.
WHEN 2.
WRITE: / 'document could not be sent to any of the recipients!'.
WHEN 4.
WRITE: / 'no authorization to send !'.
WHEN OTHERS.
WRITE: / 'error occurred during sending !'.
ENDCASE. -
ALV: Send ALV output as mail - background processing
Hi all,
I'm a newbie in SDC and try to implement the following functionality (Version 4.0B):
A ABAP report (to be scheduled as e.g. a daily job run) with ALV output should send an automated email containing the ALV informations to a receiver specified in the selection criterias.
I already have the following pieces:
1) The report with ALV output (running online and clicking on List/send/office works perfectly, the alv-output is attached to the mail). The report runs also in background and generates a spool.
2) A subroutine wich sends a email (input has to be in an itab)
Now I try to put them together.
Question: How can I automate the send process?
I did a little bit of debugging, but got lost in the SAP Office functions.
Any help appreciated!
ThomasHi Michael,
thank you again a helpfull reply. To solve the issue I ended up writing a second little report.
Here is a short description of my solution just in case anybody else is also interested in.
I set up a Job with two steps.
Step 1 is the ABAP that creates e.g. a ALV output (anything that goes to spool).
Step 2 is a little ABAP that does nothing else than reading the output of step 1 (Spool) and send it as SAP Office Document. (To be a little more flexible I added some selection criterias for step 2 like Jobstep number, receiver, sendmode, ...).
It works fine online (by keying in the spool number manually) and in batch mode (by determining the spool number based on the job number). I think this solution is flexible and lightwight.
Kind regards,
Thomas
Message was edited by: Thomas Hager
Message was edited by: Thomas Hager -
Strange behaviour in alv output display for a date column!
hi friends,
my alv output list display contains a column for budat (posting date), if this field has no value, then it displays a blank cell (space) in the output in my user login...but when the same report is run in another user login, even though the value of the column is null, it displays 00000000 (8 zeroes) rather than displaying a blank cell...i have set the field catalog property NO_ZERO = 'X'; is this property has anything to do with authorization to achieve its funcionality? am not sure...this is strange, as it is the same report, same field catalog that is being used..need some inputs on this
thanks in advance
SathishThere are 2 solutions for an adhoc solution you can change the field to a char10 field, this will solve your immediate problem of the 0 display. For a permanent solution you can check the user profile setting for the date for you as well as the concerned user.
Hope That Helps
Anirban M. -
How to send ALV output data into Excel sheet format via Mail to the user?
Hi friends,
I have a doubt ie,
How to send ALV output data into Excel sheet format via Mail to the user?
regards
MoosaHi,
Provide the output internal table to the objbin in the below FM
Send Message
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = i_docdata
put_in_outbox = c_x
TABLES
packing_list = i_objpack
object_header = i_objhead
contents_bin = i_objbin
contents_txt = i_objtxt
receivers = i_reclist
and specify the document type
i_objpack-doc_type = 'XLS'.
and try.
Regards,
Nandha -
Send ALV report as attachment in EXCEL format
Hi SAP Guru,
I had a report output as ALV format.
Currently, when the background job ended, it would be send out to the recipent thru SAPconnect as PDF format using internet mailing address.
I tried to search for a configuraiton for EXCEL output but there don;t seems to be any option availble.
I can only choose from PDF/TEXT/HTM/PS in the output document type selection in SOST.
How can I configure to allow the system to send out the ALV report to my recipent in EXCEL format instead of PDF or HTML?
ThanksHi,
By Using OOPS Concept you can send ALV Output as Excel Format by using Class Interface: CL_BCS.
Do some search on CL_BCS.
There are some demo Program, sreach for BCS* on SE38.
Thanks & Regards
M Nair -
How to send SMARTFORMS output as attachment through?
how to send SMARTFORMS output as attachment through e-mail?
after executing SMARTFORMS how to send that output via e-mail.
Help me.
thanks
surya.
Moderator Message: Please search for available information first
Edited by: kishan P on Nov 7, 2010 7:19 PMhi Vinod,
Can you please tell me how you have zipped the file.
I am having a text file in application server. I need to zip that file. Then the middleware moves it to Legacy system.
I used the following code. With this I am having the data in Binary format which my midleware cannot understand.
What I need on the whole is just to reduce the size of the file.
form ZIP_FILE .
DATA: lt_data TYPE TABLE OF x255,
lt_textdata TYPE TABLE OF x255.
DATA: ls_data LIKE LINE OF lt_data.
DATA: lv_dsn1(100) VALUE '/ECD/120/GIS/FTP/IB/DNBPAYDEX.TXT'.
DATA: lv_dsn3(100) VALUE '/ECD/120/GIS/FTP/IB/DNBPAYDEXZIP.zip'.
*DATA: lv_dsn3(100) VALUE '/interfaces/SM5/test.zip'. " Contains sample1.xls and sample2.xls
DATA: lv_file_length TYPE i.
DATA: lv_content TYPE xstring.
DATA: lo_zip TYPE REF TO cl_abap_zip.
CREATE OBJECT lo_zip.
Read the data as a string
clear lv_content .
OPEN DATASET lv_dsn1 FOR INPUT IN BINARY MODE.
READ DATASET lv_dsn1 INTO lv_content .
CLOSE DATASET lv_dsn1.
lo_zip->add( name = 'sample.TXT' content = lv_content ).
lv_content = lo_zip->save( ).
*clear lv_content .
Conver the xstring content to binary
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_content
IMPORTING
output_length = lv_file_length
TABLES
binary_tab = lt_data.
OPEN DATASET lv_dsn3 FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
LOOP AT lt_textdata INTO ls_data.
TRANSFER ls_data TO lv_dsn3.
ENDLOOP.
CLOSE DATASET lv_dsn3.
IF sy-subrc EQ '0'.
MESSAGE s999(zfi_ap_gl) WITH text-t10.
ENDIF.
Can you please help.
Thanks Aravind -
Send ALV output to SAP user unbox..
Hi Friends..
I want to send the ALV output to the SAP users inbox.
So plz anyone give the sample code for that..
With regards
GowrishankarHi
Check this sample report
*& Report ZTESTMAIL *
REPORT ZTESTMAIL .
tables: ekko.
parameters: p_email type somlreci1-receiver default
'[email protected]'.
types: begin of t_ekpo,
ebeln type ekpo-ebeln,
ebelp type ekpo-ebelp,
aedat type ekpo-aedat,
matnr type ekpo-matnr,
end of t_ekpo.
data: it_ekpo type standard table of t_ekpo initial size 0,
wa_ekpo type t_ekpo.
types: begin of t_charekpo,
ebeln(10) type c,
ebelp(5) type c,
aedat(8) type c,
matnr(18) type c,
end of t_charekpo.
data: wa_charekpo type t_charekpo.
data: it_message type standard table of solisti1 initial size 0
with header line.
data: it_attach type standard table of solisti1 initial size 0
with header line.
data: t_packing_list like sopcklsti1 occurs 0 with header line,
t_contents like solisti1 occurs 0 with header line,
t_receivers like somlreci1 occurs 0 with header line,
t_attachment like solisti1 occurs 0 with header line,
t_object_header like solisti1 occurs 0 with header line,
w_cnt type i,
w_sent_all(1) type c,
w_doc_data like sodocchgi1,
gd_error type sy-subrc,
gd_reciever type sy-subrc.
t_object_header = 'Text.xls'. append t_object_header.
*START_OF_SELECTION
start-of-selection.
* Retrieve sample data from table ekpo
perform data_retrieval.
* Populate table with detaisl to be entered into .xls file
perform build_xls_data_table.
*END-OF-SELECTION
end-of-selection.
* Populate message body text
perform populate_email_message_body.
* Send file by email as .xls speadsheet
perform send_file_as_email_attachment
tables it_message
it_attach
using p_email
'Example .xls documnet attachment'
'XLS'
'filename'
changing gd_error
gd_reciever.
* Instructs mail send program for SAPCONNECT to send email(rsconn01)
perform initiate_mail_execute_program.
*& Form DATA_RETRIEVAL
* Retrieve data form EKPO table and populate itab it_ekko
form data_retrieval.
select ebeln ebelp aedat matnr
up to 10 rows
from ekpo
into table it_ekpo.
endform. " DATA_RETRIEVAL
*& Form BUILD_XLS_DATA_TABLE
* Build data table for .xls document
form build_xls_data_table.
*CONSTANTS: con_cret TYPE x VALUE '0D', "OK for non Unicode
*con_tab TYPE x VALUE '09'. "OK for non Unicode
*If you have Unicode check active in program attributes thnen you will
*need to declare constants as follows
*class cl_abap_char_utilities definition load.
constants:
con_tab type c value cl_abap_char_utilities=>horizontal_tab,
con_cret type c value cl_abap_char_utilities=>cr_lf.
concatenate 'EBELN' 'EBELP' 'AEDAT' 'MATNR'
into it_attach separated by con_tab.
concatenate con_cret it_attach into it_attach.
append it_attach.
loop at it_ekpo into wa_charekpo.
concatenate wa_charekpo-ebeln wa_charekpo-ebelp
wa_charekpo-aedat wa_charekpo-matnr
into it_attach separated by con_tab.
concatenate con_cret it_attach into it_attach.
append it_attach.
endloop.
endform. " BUILD_XLS_DATA_TABLE
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
* Send email
form send_file_as_email_attachment tables pit_message
pit_attach
using p_email
p_mtitle
p_format
p_filename
p_attdescription
p_sender_address
p_sender_addres_type
changing p_error
p_reciever.
data: ld_error type sy-subrc,
ld_reciever type sy-subrc,
ld_mtitle like sodocchgi1-obj_descr,
ld_email like somlreci1-receiver,
ld_format type so_obj_tp ,
ld_attdescription type so_obj_nam ,
ld_attfilename type so_obj_des ,
ld_sender_address like soextreci1-receiver,
ld_sender_address_type like soextreci1-adr_typ,
ld_receiver like sy-subrc.
ld_email = p_email.
ld_mtitle = p_mtitle.
ld_format = p_format.
ld_attdescription = p_attdescription.
ld_attfilename = p_filename.
ld_sender_address = p_sender_address.
ld_sender_address_type = p_sender_addres_type.
* Fill the document data.
w_doc_data-doc_size = 1.
* Populate the subject/generic message attributes
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle .
w_doc_data-sensitivty = 'F'.
* Fill the document data and get size of attachment
clear w_doc_data.
read table it_attach index w_cnt.
w_doc_data-doc_size =
( w_cnt - 1 ) * 255 + strlen( it_attach ).
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle.
w_doc_data-sensitivty = 'F'.
clear t_attachment.
refresh t_attachment.
t_attachment[] = pit_attach[].
* Describe the body of the message
clear t_packing_list.
refresh t_packing_list.
t_packing_list-transf_bin = space.
t_packing_list-head_start = 1.
t_packing_list-head_num = 0.
t_packing_list-body_start = 1.
describe table it_message lines t_packing_list-body_num.
t_packing_list-doc_type = 'RAW'.
append t_packing_list.
* Create attachment notification
t_packing_list-transf_bin = 'X'.
t_packing_list-head_start = 1.
t_packing_list-head_num = 1.
t_packing_list-body_start = 1.
describe table t_attachment lines t_packing_list-body_num.
t_packing_list-doc_type = ld_format.
t_packing_list-obj_descr = ld_attdescription.
t_packing_list-obj_name = ld_attfilename.
t_packing_list-doc_size = t_packing_list-body_num * 255.
append t_packing_list.
* Add the recipients email address
clear t_receivers.
refresh t_receivers.
t_receivers-receiver = ld_email.
t_receivers-rec_type = 'U'.
t_receivers-com_type = 'INT'.
t_receivers-notif_del = 'X'.
t_receivers-notif_ndel = 'X'.
append t_receivers.
call function 'SO_DOCUMENT_SEND_API1'
exporting
document_data = w_doc_data
put_in_outbox = 'X'
sender_address = ld_sender_address
sender_address_type = ld_sender_address_type
commit_work = 'X'
importing
sent_to_all = w_sent_all
tables
object_header = t_object_header
packing_list = t_packing_list
contents_bin = t_attachment
contents_txt = it_message
receivers = t_receivers
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.
* Populate zerror return code
ld_error = sy-subrc.
* Populate zreceiver return code
loop at t_receivers.
ld_receiver = t_receivers-retrn_code.
endloop.
endform.
*& Form INITIATE_MAIL_EXECUTE_PROGRAM
* Instructs mail send program for SAPCONNECT to send email.
form initiate_mail_execute_program.
wait up to 2 seconds.
submit rsconn01 with mode = 'INT'
with output = 'X'
and return.
endform. " INITIATE_MAIL_EXECUTE_PROGRAM
*& Form POPULATE_EMAIL_MESSAGE_BODY
* Populate message body text
form populate_email_message_body.
refresh it_message.
it_message = 'Please find attached a list test ekpo records'.
append it_message.
endform. " POPULATE_EMAIL_MESSAGE_BODY
*PARAMETERS: psubject(40) type c default 'Testing',
*p_email(40) type c default '[email protected]'. "use ur email id
*data: it_packing_list like sopcklsti1 occurs 0 with header line,
*it_contents like solisti1 occurs 0 with header line,
*it_receivers like somlreci1 occurs 0 with header line,
*it_attachment like solisti1 occurs 0 with header line,
*gd_cnt type i,
*gd_sent_all(1) type c,
*gd_doc_data like sodocchgi1,
*gd_error type sy-subrc.
*data: it_message type standard table of SOLISTI1 initial size 0
*with header line.
**START-OF-SELECTION.
*START-OF-SELECTION.
*Perform populate_message_table.
**Send email message, although is not sent from SAP until mail send
**program has been executed(rsconn01)
*PERFORM send_email_message.
**Instructs mail send program for SAPCONNECT to send email(rsconn01)
*perform initiate_mail_execute_program.
**& Form POPULATE_MESSAGE_TABLE
** Adds text to email text table
*form populate_message_table.
*Append 'Line1' to it_message.
*Append 'Line2' to it_message.
*Append 'Line3' to it_message.
*Append 'Test- 1' to it_message.
*endform. " POPULATE_MESSAGE_TABLE
**& Form SEND_EMAIL_MESSAGE
** Send email message
*form send_email_message.
** Fill the document data.
*gd_doc_data-doc_size = 1.
** DATA: TAB_LINES LIKE sy-tabix.
** DESCRIBE TABLE it_message LINES TAB_LINES.
** READ TABLE it_message INDEX TAB_LINES.
** gd_doc_data-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( it_message )
** Populate the subject/generic message attributes
*gd_doc_data-obj_langu = sy-langu.
*gd_doc_data-obj_name = 'SAPRPT'.
*gd_doc_data-obj_descr = psubject.
*gd_doc_data-sensitivty = 'F'.
** Describe the body of the message
** Information about structure of data tables
*clear it_packing_list.
*refresh it_packing_list.
*it_packing_list-transf_bin = space.
*it_packing_list-head_start = 1.
*it_packing_list-head_num = 0.
*it_packing_list-body_start = 1.
*describe table it_message lines it_packing_list-body_num.
*it_packing_list-doc_type = 'RAW'.
*append it_packing_list.
** Add the recipients email address
*clear it_receivers.
*refresh it_receivers.
*it_receivers-receiver = p_email.
*it_receivers-rec_type = 'U'.
** it_receivers-com_type = 'INT'.
** it_receivers-notif_del = 'X'.
** it_receivers-notif_ndel = 'X'.
*append it_receivers.
** Call the FM to post the message to SAPMAIL
*call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
*exporting
*document_data = gd_doc_data
*put_in_outbox = 'X'
*importing
*sent_to_all = gd_sent_all
*tables
*packing_list = it_packing_list
*contents_txt = it_message
*receivers = it_receivers
*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.
** Store function module return code
*gd_error = sy-subrc.
** Get it_receivers return code
*loop at it_receivers.
*endloop.
*endform. " SEND_EMAIL_MESSAGE
**& Form INITIATE_MAIL_EXECUTE_PROGRAM
** Instructs mail send program for SAPCONNECT to send email.
*form initiate_mail_execute_program.
*wait up to 2 seconds.
*if gd_error eq 0.
*submit rsconn01 with mode = 'INT'
*with output = 'X'
*and return.
*endif.
*endform. " INITIATE_MAIL_EXECUTE_PROGRAM
Check this link
ALV Output in PDF format
Re: Send ALV Grid output as PDF attachment to external mail id?
Reward all helpfull answers
Regards
Pavan
Message was edited by:
Pavan praveen -
Sending ALV output to the SAP Inbox.
Hi
I'm using SAP report <b>sendlist_bcs</b> for sending report output to the SAP inbox but attachment is not getting delivered.
Can anybody help to resolve the issue...
My report is:
*& Report ZTTEST_SAGAR
REPORT ZTTEST_SAGAR.
*& Report SENDLIST_BCS
*& Sample report from note 190669 for sending lists via SAPconnect
*& using the BCS interface
*& Note:
*& 1. Set a commit work statement after the sending
*& 2. Give binary data of type x not type c to send module, i.e.
*& use structure solix instead of soli and give it to tables
*& parameter contents_hex instead of contents_bin
*& Do this by filling contents_hex directly from the module
*& table_compress. In case of reading the data from spool, convert
*& to solix using so_solitab_to_solixtab
*& 3. Don't calculate document size. It is done internally
*report sendlist_bcs no standard page heading message-id so.
selection-screen begin of block mode with frame title text-001.
parameters: submit radiobutton group mode default 'X'.
parameters: write radiobutton group mode .
parameters: spool radiobutton group mode.
selection-screen end of block mode.
global data
data g_list_content type solix_tab.
data g_text_content type soli_tab.
data sysid(10) TYPE C.
*---- start-of-selection -
start-of-selection.
perform create_text_content changing g_text_content.
perform create_list_content changing g_list_content.
perform send using g_text_content
g_list_content.
a commit work has to be set somewhere after the sending!
commit work.
Form routines *
*& Form create_list_content
form create_list_content changing list_content type solix_tab.
1st possibility - use "submit <report> exporting list to memory"
if submit = 'X'.
perform use_submit changing list_content.
endif.
2nd possibility - create a new list within this report.
if write = 'X'.
perform write_a_list changing list_content.
endif.
3rd possibility - get list from spool
if spool = 'X'.
perform get_list_from_spool changing list_content.
endif.
endform. "create_list_content
*& Form create_text_content
form create_text_content changing text_content type soli_tab.
append 'This is the first line' to text_content. "#EC NOTEXT
append 'This is the second line' to text_content. "#EC NOTEXT
convert the content from RAW to TXT
call function 'SO_RAW_TO_RTF'
tables
objcont_old = text_content
objcont_new = text_content
exceptions
others = 0.
endform. "create_text_content
*& Form SEND
form send using text_content type soli_tab
list_content type solix_tab.
data send_request type ref to cl_bcs.
data text type bcsy_text.
data document type ref to cl_document_bcs.
data recipient type ref to if_recipient_bcs.
data bcs_exception type ref to cx_bcs.
data sent_to_all type os_boolean.
try.
create the send request
send_request = cl_bcs=>create_persistent( ).
create the document with attachments
main document
append 'Hi,' to text.
append 'attached you will find the list.' to text.
document = cl_document_bcs=>create_document(
i_type = 'RAW'
i_text = text
i_subject = 'ABAPlist' ).
add text attachment to document
document->add_attachment( i_attachment_type = 'TXT'
i_attachment_subject = text-002
i_att_content_text = text_content ).
add list attachment to document
document->add_attachment( i_attachment_type = 'ALI'
i_attachment_subject = text-003
i_att_content_hex = list_content ).
add document to send request
send_request->set_document( document ).
sysid = sy-sysid.
data : uname type ad_uname.
uname = 'USTZZSKAZI'.
create recipient and add to send request
recipient = cl_cam_address_bcs=>CREATE_RML_ADDRESS( i_syst = sysid
i_client = sy-mandt
i_username = uname ).
send_request->add_recipient( i_recipient = recipient ).
send
sent_to_all = send_request->send( i_with_error_screen = 'X' ).
if sent_to_all = 'X'.
message s022.
endif.
catch cx_bcs into bcs_exception.
message e865 with bcs_exception->error_type.
endtry.
endform. "send
*& Form USE_SUBMIT
form use_submit changing contents_hex type solix_tab.
data listobject type table of abaplist.
get the list object by calling the list in another report
F1 on submit gives more information
submit balvsd03 exporting list to memory and return.
import the list from memory and store it in table listobject
call function 'LIST_FROM_MEMORY'
tables
listobject = listobject
exceptions
not_found = 1
others = 2.
if sy-subrc <> 0.
message e105 with 'LIST_FROM_MEMORY'.
endif.
free memory
call function 'LIST_FREE_MEMORY'
tables
listobject = listobject
exceptions
others = 1.
if sy-subrc <> 0.
message e105 with 'LIST_FREE_MEMORY'.
endif.
it's always necessary to compress the table.
SAPconnect will decompress it
call function 'TABLE_COMPRESS' "#EC *
tables
in = listobject
out = contents_hex
exceptions
compress_error = 1
others = 2.
if sy-subrc <> 0.
message e105 with 'TABLE_COMPRESS'.
endif.
endform. " USE_SUBMIT
*& Form WRITE_A_LIST
form write_a_list changing contents_hex type solix_tab.
data listobject type table of abaplist.
perform write_list.
Save the list and store table listobject
call function 'SAVE_LIST'
exporting
list_index = sy-lsind
tables
listobject = listobject
exceptions
list_index_invalid = 1.
if sy-subrc = 1.
message e105 with 'SAVE_LIST'.
endif.
It's always necessary to compress the table
SAPconnect will decompress it
call function 'TABLE_COMPRESS' "#EC *
tables
in = listobject
out = contents_hex
exceptions
compress_error = 1
others = 2.
if sy-subrc <> 0.
message e105 with 'TABLE_COMPRESS'.
endif.
endform. " WRITE_A_LIST
*& Form GET_LIST_FROM_SPOOL
form get_list_from_spool changing contents_hex type solix_tab.
data spool_number type rspoid.
data contents_bin type soli_tab.
data print_parameters type pri_params.
data valid type c.
write a list into spool
call function 'GET_PRINT_PARAMETERS'
importing
out_parameters = print_parameters
valid = valid
exceptions
archive_info_not_found = 1
invalid_print_params = 2
invalid_archive_params = 3
others = 4.
if sy-subrc <> 0.
message e105 with 'GET_PRINT_PARAMETERS'.
elseif valid is initial.
return.
endif.
new-page print on parameters print_parameters no dialog.
perform write_list.
new-page print off.
spool_number = sy-spono.
you can also send OTF documents from spool with this function
module. The importing parameter real_type gives you the doc type
that you have to give to the send interface. The parameter is not
used here
call function 'RSPO_RETURN_SPOOLJOB'
exporting
rqident = spool_number
tables
buffer = contents_bin
exceptions
no_such_job = 1
job_contains_no_data = 2
selection_empty = 3
no_permission = 4
can_not_access = 5
read_error = 6
type_no_match = 7
others = 8.
if sy-subrc <> 0.
message e105 with 'RSPO_RETURN_SPOOLJOB'.
endif.
convert to hex table
call function 'SO_SOLITAB_TO_SOLIXTAB'
exporting
ip_solitab = contents_bin
importing
ep_solixtab = contents_hex.
endform. " GET_LIST_FROM_SPOOL
*& Form WRITE_LIST
form write_list.
data lt_scarr type table of scarr.
data carr type scarr.
select * from scarr into table lt_scarr.
format color = 1.
uline at /1(46).
write: / sy-vline,
'CARRID', 10 sy-vline,
'CARRNAME', 35 sy-vline,
'CURRCODE', 46 sy-vline.
format color = 2.
uline at /1(46).
loop at lt_scarr into carr.
write: / sy-vline,
carr-carrid, 10 sy-vline,
carr-carrname, 35 sy-vline,
carr-currcode, 46 sy-vline.
endloop.
uline at /1(46).
new-line.
endform. " WRITE_LIST
Thanks,
sagarhi Sagar
'SO_NEW_DOCUMENT_ATT_SEND_API1' function module for that.
Example::::
Data Declaration
data pdf like tline occurs 0.
data : objbin like solisti1 occurs 0 with header line.
Data: docdata like sodocchgi1,
objpack like sopcklsti1 occurs 1 with header line,
objhead like solisti1 occurs 1 with header line,
objtxt like solisti1 occurs 10 with header line,
objbin like solisti1 occurs 10 with header line,
objhex like solix occurs 10 with header line,
reclist type table of SOMLRECI1 with header line.
Data: listobject like abaplist occurs 1 with header line.
data : objhex2 like objhex occurs 0 with header line.
Data: tab_lines type i,
doc_size type i,
att_type like SOODK-OBJTP.
data: ls_drao like drao occurs 0,
i_data like drao-orblk occurs 0,
ls_doc_file like dms_doc_file,
ls_draw like draw.
data: begin of i_data occurs 0,
orbkl like drao-orbkl,
orblk like drao-orblk,
end of i_data.
data: w_data like i_data,
w_data2 type drao-orbkl,
wa_drao type drao.
DATA: t_error(1) type c.
DATA: t_return like BAPIRET2.
*ls_draw-mandt = '200'.
ls_draw-dokar = 'GPO'.
ls_draw-doknr = 'Z10'.
ls_draw-dokvr = '00'.
ls_draw-doktl = '000'.
ls_draw-dttrg = 'SAP-SYSTEM'.
ls_draw-dAPPL = 'DOC'.
ls_doc_file-fileno = '1'.
ls_doc_file-dttrg = 'SAP-SYSTEM'.
*Debug the cv03n transaction to see how the FMs are used
CALL FUNCTION 'CV120_DOC_CHECKOUT_TO_TABLE'
EXPORTING
PS_COUT_DEF =
ps_doc_file = ls_doc_file
ps_draw = LS_DRAW
tables
PT_DRAZ =
ptx_content = ls_drao
PTX_DRAOZ =
EXCEPTIONS
ERROR = 1
OTHERS = 2
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
loop at ls_drao into wa_drao.
move: wa_drao-orblk to w_data-orblk.
append w_data to i_data.
endloop.
OBJPACK-HEAD_START = 1.
DESCRIBE TABLE i_data LINES TAB_LINES.
CALL FUNCTION 'ZOUTPUT_X_TABLESIZE_CHG'
EXPORTING
IV_APPEND = ' '
IV_BYTE_MODE = 'X'
IV_STRING =
IV_XSTRING =
IMPORTING
EV_SIZE =
EV_LINES =
EV_STRING =
EV_XSTRING =
TABLES
IT_DATA = i_data
ET_DATA = objhex
EXCEPTIONS
NOENTRIES = 1
OTHERS = 2
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
loop at objhex.
move-corresponding objhex to objhex2.
append objhex2.
endloop.
docdata-obj_name = 'TEST_ALI'.
docdata-obj_descr = 'Test including ALI/HTML Attachment'.
Main Text
objtxt = 'Test Document.'.
append objtxt.
objtxt = 'You will find an ALI/HTML attachment '.
append objtxt.
objtxt = 'Have a nice day.'.
append objtxt.
Write Packing List (Main)
describe table objtxt lines tab_lines.
read table objtxt index tab_lines.
docdata-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 = 'TXT'.
append objpack.
Create Message Attachment
Write Packing List (Attachment)
att_type = 'PDF'.
describe table objhex lines tab_lines.
read table objhex index tab_lines.
objpack-doc_size = ( tab_lines ) * 255 ."+ strlen( i_data ).
objpack-transf_bin = 'X'.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = att_type.
objpack-obj_name = 'ATTACHMENT1'.
objpack-obj_descr = 'Attached Document1'.
append objpack.
Second attachment
loop at objhex.
move-corresponding objhex to objhex2.
append objhex2.
endloop.
*att_type = 'DOC'.
*describe table objhex lines tab_lines.
*read table objhex index tab_lines.
*objpack-doc_size = ( tab_lines ) * 255 ."+ strlen( i_data ).
*objpack-transf_bin = 'X'.
*objpack-head_start = 1.
*objpack-head_num = 0.
*objpack-body_start = 1.
*objpack-body_num = tab_lines.
*objpack-doc_type = att_type.
*objpack-obj_name = 'ATTACHMENT2'.
*objpack-obj_descr = 'Attached Document2'.
*append objpack.
Third attachment
*loop at objhex.
move-corresponding objhex to objhex2.
append objhex2.
*endloop.
*att_type = 'PDF'.
*describe table objhex lines tab_lines.
*read table objhex index tab_lines.
*objpack-doc_size = ( tab_lines ) * 255 ."+ strlen( i_data ).
*objpack-transf_bin = 'X'.
*objpack-head_start = 1.
*objpack-head_num = 0.
*objpack-body_start = 1.
*objpack-body_num = tab_lines.
*objpack-doc_type = att_type.
*objpack-obj_name = 'ATTACHMENT3'.
*objpack-obj_descr = 'Attached Document3'.
*append objpack.
Create receiver list
data: reclist1 type sadrfd .
reclist1-rec_fax = '650-467-2890'.
reclist1-REC_STATE = 'US'.
append reclist1.
*read table reclist1 index 1.
move reclist1(30) to reclist-receiver(30).
move reclist1346(3) to reclist-receiver346(3).
*reclist-receiver = reclist1."'US16503457900'.
*move reclist1-rec_fax to reclist-receiver.
*reclist-receiver = 'US16502796630'. "'+1 (16502796999)'.
reclist-REC_type = 'F'.
*reclist-country = 'US'.
*reclist-COM_TYPE = 'TELFAX'.
*reclist-fax = 'US1650-279-6630'.
append reclist.
*reclist-receiver = sy-uname. "<-- change internal user
*reclist-rec_type = 'B'.
*append reclist.
Send Message
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = docdata
PUT_IN_OUTBOX = 'X'
COMMIT_WORK = 'X' "used from rel.6.10
IMPORTING
SENT_TO_ALL =
NEW_OBJECT_ID =
tables
packing_list = objpack
OBJECT_HEADER = objhead
CONTENTS_BIN = objbin
CONTENTS_TXT = objtxt
CONTENTS_HEX = objhex
OBJECT_PARA =
OBJECT_PARB =
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
IF sy-subrc <> 0.
message ID 'SO' TYPE 'S' NUMBER '023'
with docdata-obj_name.
ENDIF.
**Please reward suitable points***
With Regards
Navin Khedikar -
Sending ALV output in a mail in PDF format
Hi folks,
I have a requiremtnt. If i execute my ALV report in background, the output should be sent to the reciepient's mail in pdf format. i have used the function moudles CONVERT_ABAPSPOOLJOB_2_PDF and SO_DOCUMENT_SEND_API1. Now i am able to see my report output in spool in some pdf formt. how can i send this to the reciever mail as an attachement...pls send me any sample report which suits my reqirement...thanks in advance,
Ram.REPORT ZSAP_EMAIL MESSAGE-ID Z001.
*TABLES: rlgrap, btcxpm." zlookup.
DATA:
V_ZCODE(3) TYPE C,
*svrname LIKE zlookup-zdesc,
WA_ERROR(80) TYPE C,
GLOBAL_FILEMASK_ALL(80).
DATA: T_SOUD LIKE SOUD.
DATA: P_INFOLDER LIKE SOFDK.
DATA: P_OUTFOLDER LIKE SOFDK.
DATA: OBJECT_HD_DISPLAY LIKE SOOD2.
DATA: OBJECT_ID LIKE SOODK.
DATA: DOCUMENT LIKE SOOD4.
DATA: HEADER_DATA LIKE SOOD2.
DATA: LINK_FOLDER_ID LIKE SOODK.
DATA: FOLDER_SELECTIONS LIKE SOFDS.
DATA: FOLDER_LIST LIKE SOXLI OCCURS 0 WITH HEADER LINE.
DATA: RECEIVERS LIKE SOOS1 OCCURS 0 WITH HEADER LINE.
DATA: OBJCONT LIKE SOLI OCCURS 0 WITH HEADER LINE.
DATA: OBJHEAD LIKE SOLI OCCURS 0 WITH HEADER LINE.
DATA: OBJECT_CONTENT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE.
DATA: OBJECT_HD_CHANGE LIKE SOOD1.
DATA: BEGIN OF FILES OCCURS 0,
LINE(200) TYPE C,
END OF FILES.
DATA: LISTOBJECT LIKE ABAPLIST OCCURS 1 WITH HEADER LINE.
*Email to addresses
SELECTION-SCREEN: BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-BL1.
PARAMETERS: P_MAILTO(240) TYPE C.
*PARAMETERS:P_MAILTO TYPE SOLI-LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN COMMENT 10(2) TEXT-001.
*Use zlookup-ztype as group to define multiple email to addresses
*SELECT-OPTIONS: s_mailto FOR zlookup-ztype.
SELECTION-SCREEN: END OF BLOCK BL1.
*Subject
SELECTION-SCREEN: BEGIN OF BLOCK BL2 WITH FRAME TITLE TEXT-BL2.
PARAMETERS: P_SUBJ LIKE DOCUMENT-OBJDES.
SELECTION-SCREEN: END OF BLOCK BL2.
*Body
SELECTION-SCREEN: BEGIN OF BLOCK BL3 WITH FRAME TITLE TEXT-BL3.
PARAMETERS: P_BODY1 LIKE SOLISTI1-LINE LOWER CASE.
PARAMETERS: P_BODY2 LIKE SOLISTI1-LINE LOWER CASE.
PARAMETERS: P_BODY3 LIKE SOLISTI1-LINE LOWER CASE.
PARAMETERS: P_BODY4 LIKE SOLISTI1-LINE LOWER CASE.
PARAMETERS: P_BODY5 LIKE SOLISTI1-LINE LOWER CASE.
PARAMETERS: P_BODY6 LIKE SOLISTI1-LINE LOWER CASE.
SELECTION-SCREEN: END OF BLOCK BL3.
*Attachments
SELECTION-SCREEN: BEGIN OF BLOCK BL4 WITH FRAME TITLE TEXT-BL4.
PARAMETERS: P_FNAME1 LIKE FILES-LINE.
PARAMETERS: P_FNAME2 LIKE FILES-LINE.
PARAMETERS: P_FNAME3 LIKE FILES-LINE.
PARAMETERS: P_FNAME4 LIKE FILES-LINE.
PARAMETERS: P_FNAME5 LIKE FILES-LINE.
PARAMETERS: P_FNAME6 LIKE FILES-LINE.
SELECTION-SCREEN: END OF BLOCK BL4.
AT SELECTION-SCREEN.
PERFORM CHK_SELECTION.
IF NOT WA_ERROR IS INITIAL.
MESSAGE E001 WITH WA_ERROR.
ENDIF.
START-OF-SELECTION.
END-OF-SELECTION.
PERFORM SEND_EMAIL.
FORM chk_selection
FORM CHK_SELECTION.
CLEAR WA_ERROR.
*Loop only once ???
*If more checkings to be done.
*Think about it and if not clear.
*Let it sink in for a couple of minutes.
*Still doesn't make sence? Go home and sleep on it.
DO 1 TIMES.
*Check Email to
IF P_MAILTO IS INITIAL .
*AND s_mailto IS INITIAL.
WA_ERROR = 'Invalid or no EMAIL TO selection'.
EXIT.
ENDIF.
ENDDO.
ENDFORM. "chk_selection
*& Form send_email
*text
*--> p1 text
*<-- p2 text
FORM SEND_EMAIL.
PERFORM GET_FOLDER_INFO.
PERFORM FILL_BODY.
PERFORM INS_NEW_OBJECT.
PERFORM CRT_ATTACHMENTS.
PERFORM FILL_RECEIVERS_INFO.
PERFORM SND_EMAIL.
ENDFORM. " send_email
*--+--
*FORM Get_folder_info
FORM GET_FOLDER_INFO.
CLEAR T_SOUD.
*Small so should be quick.
SELECT * FROM SOUD
INTO T_SOUD
WHERE SAPNAM = SY-UNAME.
P_INFOLDER-FOLTP = 'FOL'.
P_INFOLDER-FOLYR = T_SOUD-INBYR. "inbox
P_INFOLDER-FOLNO = T_SOUD-INBNO.
P_OUTFOLDER-FOLTP = 'FOL'.
P_OUTFOLDER-FOLYR = T_SOUD-OUTYR. "outbox
P_OUTFOLDER-FOLNO = T_SOUD-OUTNO.
ENDSELECT.
ENDFORM. "get_folder_info
*FORM fill_body *
FORM FILL_BODY.
OBJECT_CONTENT-LINE = P_BODY1.
APPEND OBJECT_CONTENT.
OBJECT_CONTENT-LINE = P_BODY2.
APPEND OBJECT_CONTENT.
OBJECT_CONTENT-LINE = P_BODY3.
APPEND OBJECT_CONTENT.
OBJECT_CONTENT-LINE = P_BODY4.
APPEND OBJECT_CONTENT.
OBJECT_CONTENT-LINE = P_BODY5.
APPEND OBJECT_CONTENT.
OBJECT_CONTENT-LINE = P_BODY6.
APPEND OBJECT_CONTENT.
ENDFORM. "fill_body
*FORM ins_new_object *
FORM INS_NEW_OBJECT.
OBJECT_HD_CHANGE-OBJNAM = 'Notes'.
OBJECT_HD_CHANGE-OBJDES = P_SUBJ.
CALL FUNCTION 'SO_OBJECT_INSERT'
EXPORTING
FOLDER_ID = P_OUTFOLDER
OBJECT_HD_CHANGE = OBJECT_HD_CHANGE
OBJECT_TYPE = 'RAW'
OWNER = SY-UNAME
IMPORTING
OBJECT_HD_DISPLAY = OBJECT_HD_DISPLAY
OBJECT_ID = OBJECT_ID
TABLES
OBJCONT = OBJECT_CONTENT
OBJHEAD = OBJHEAD
EXCEPTIONS
ACTIVE_USER_NOT_EXIST = 1
COMMUNICATION_FAILURE = 2
COMPONENT_NOT_AVAILABLE = 3
DL_NAME_EXIST = 4
FOLDER_NOT_EXIST = 5
FOLDER_NO_AUTHORIZATION = 6
OBJECT_TYPE_NOT_EXIST = 7
OPERATION_NO_AUTHORIZATION = 8
OWNER_NOT_EXIST = 9
PARAMETER_ERROR = 10
SUBSTITUTE_NOT_ACTIVE = 11
SUBSTITUTE_NOT_DEFINED = 12
SYSTEM_FAILURE = 13
X_ERROR = 14
OTHERS = 15.
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. "ins_new_object
*FORM crt_attachments *
*--> P_SUBJ *
FORM CRT_ATTACHMENTS.
DOCUMENT-FOLTP = P_OUTFOLDER-FOLTP.
DOCUMENT-FOLYR = P_OUTFOLDER-FOLYR.
DOCUMENT-FOLNO = P_OUTFOLDER-FOLNO.
DOCUMENT-OBJTP = OBJECT_ID-OBJTP.
DOCUMENT-OBJYR = OBJECT_ID-OBJYR.
DOCUMENT-OBJNO = OBJECT_ID-OBJNO.
DOCUMENT-OBJNAM = 'Notes'.
DOCUMENT-OBJDES = P_SUBJ.
DOCUMENT-OKCODE = 'CHNG'.
DOCUMENT-FILE_EXT = 'TXT'.
LINK_FOLDER_ID = OBJECT_ID.
HEADER_DATA-OBJLA = 'EN'.
HEADER_DATA-OBJNAM = DOCUMENT-OBJNAM.
HEADER_DATA-OBJDES = DOCUMENT-OBJDES.
HEADER_DATA-OBJPRI = '5'.
HEADER_DATA-OBJSNS = 'O'.
HEADER_DATA-FILE_EXT = 'TXT'.
REFRESH FILES.
CLEAR FILES.
IF NOT P_FNAME1 IS INITIAL.
FILES-LINE = P_FNAME1.
APPEND FILES.
ENDIF.
IF NOT P_FNAME2 IS INITIAL.
FILES-LINE = P_FNAME2.
APPEND FILES.
ENDIF.
IF NOT P_FNAME3 IS INITIAL.
FILES-LINE = P_FNAME3.
APPEND FILES.
ENDIF.
IF NOT P_FNAME4 IS INITIAL.
FILES-LINE = P_FNAME4.
APPEND FILES.
ENDIF.
IF NOT P_FNAME5 IS INITIAL.
FILES-LINE = P_FNAME5.
APPEND FILES.
ENDIF.
IF NOT P_FNAME6 IS INITIAL.
FILES-LINE = P_FNAME6.
APPEND FILES.
ENDIF.
IF NOT FILES[] IS INITIAL.
CALL FUNCTION 'SO_DOCUMENT_REPOSITORY_MANAGER'
EXPORTING
METHOD = 'ATTCREATEFROMPC'
TABLES
FILES = FILES
CHANGING
DOCUMENT = DOCUMENT
HEADER_DATA = HEADER_DATA.
IF SY-SUBRC = 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
ENDFORM. "crt_attachments
*FORM fill_receivers_info *
FORM FILL_RECEIVERS_INFO.
DATA: BEGIN OF RECLIST OCCURS 0,
REC LIKE RECEIVERS-RECEXTNAM,
END OF RECLIST.
*Build reclist
REFRESH RECLIST.
IF NOT P_MAILTO IS INITIAL.
RECLIST-REC = P_MAILTO.
APPEND RECLIST.
ENDIF.
*IF NOT s_mailto IS INITIAL.
*SELECT zdesc
*INTO reclist-rec
*FROM zlookup
*WHERE ztype IN s_mailto.
*APPEND reclist.
*ENDSELECT.
*ENDIF.
REFRESH RECEIVERS.
LOOP AT RECLIST.
FOLDER_SELECTIONS-FOLNAM = 'INBOX'.
CALL FUNCTION 'SO_FOLDER_LIST_READ'
EXPORTING
FOLDER_SELECTIONS = FOLDER_SELECTIONS
OWNER = SY-UNAME
REGION = 'P'
TABLES
FOLDER_LIST = FOLDER_LIST
EXCEPTIONS
COMPONENT_NOT_AVAILABLE = 1
OPERATION_NO_AUTHORIZATION = 2
OWNER_NOT_EXIST = 3
PARAMETER_ERROR = 4
X_ERROR = 5
OTHERS = 6.
IF SY-SUBRC = 0.
CLEAR RECEIVERS.
MOVE: SY-DATUM TO RECEIVERS-RCDAT,
SY-UZEIT TO RECEIVERS-RCTIM,
' ' TO RECEIVERS-RECESC,
P_MAILTO TO RECEIVERS-RECNAM,
'X' TO RECEIVERS-SNDEX.
APPEND RECEIVERS.
RECEIVERS-RCDAT = SY-DATUM.
RECEIVERS-RCTIM = SY-UZEIT.
RECEIVERS-RECNAM = RECLIST-REC.
RECEIVERS-RECNO = FOLDER_LIST-PARNO.
RECEIVERS-RECTP = FOLDER_LIST-PARTP.
RECEIVERS-RECYR = FOLDER_LIST-PARYR.
RECEIVERS-SNDTP = FOLDER_LIST-PARTP.
RECEIVERS-SNDYR = FOLDER_LIST-PARYR.
RECEIVERS-SNDNO = FOLDER_LIST-PARNO.
RECEIVERS-SNDNAM = SY-UNAME.
RECEIVERS-SNDPRI = '1'.
RECEIVERS-MSGID = 'SO'.
RECEIVERS-MSGNO = '619'.
RECEIVERS-DELIVER = 'X'.
RECEIVERS-NOT_DELI = 'X'.
RECEIVERS-READ = 'X'.
RECEIVERS-MAILSTATUS = 'E'.
**receivers-ADR_NAME
RECEIVERS-RESEND = ' '.
RECEIVERS-SORTFIELD = ' '. "'USER WF_BATCH INDIGO BATCH'.
RECEIVERS-SORTCLASS = '5'.
APPEND RECEIVERS.
ELSE.
CLEAR RECEIVERS.
RECEIVERS-SEL = 'X'.
RECEIVERS-RECESC = 'U'.
RECEIVERS-RECNAM = 'U-'.
RECEIVERS-RECEXTNAM = RECLIST-REC.
RECEIVERS-DELIVER = 'X'.
RECEIVERS-NOT_DELI = 'X'.
RECEIVERS-READ = 'X'.
RECEIVERS-MAILSTATUS = 'E'.
RECEIVERS-ADR_NAME = RECLIST-REC.
RECEIVERS-SORTFIELD = RECLIST-REC.
RECEIVERS-SORTCLASS = '5'.
APPEND RECEIVERS.
ENDIF.
ENDLOOP.
ENDFORM. "fill_receivers_info
*FORM snd_email *
FORM SND_EMAIL.
CALL FUNCTION 'SO_OBJECT_SEND'
EXPORTING
FOLDER_ID = P_OUTFOLDER
OBJECT_ID = OBJECT_ID
OUTBOX_FLAG = 'X'
OWNER = SY-UNAME
CHECK_SEND_AUTHORITY = 'X'
ORIGINATOR_TYPE = 'J'
LINK_FOLDER_ID = LINK_FOLDER_ID
TABLES
OBJCONT = OBJECT_CONTENT
RECEIVERS = RECEIVERS
EXCEPTIONS
ACTIVE_USER_NOT_EXIST = 1
COMMUNICATION_FAILURE = 2
COMPONENT_NOT_AVAILABLE = 3
FOLDER_NOT_EXIST = 4
FOLDER_NO_AUTHORIZATION = 5
FORWARDER_NOT_EXIST = 6
NOTE_NOT_EXIST = 7
OBJECT_NOT_EXIST = 8
OBJECT_NOT_SENT = 9
OBJECT_NO_AUTHORIZATION = 10
OBJECT_TYPE_NOT_EXIST = 11
OPERATION_NO_AUTHORIZATION = 12
OWNER_NOT_EXIST = 13
PARAMETER_ERROR = 14
SUBSTITUTE_NOT_ACTIVE = 15
SUBSTITUTE_NOT_DEFINED = 16
SYSTEM_FAILURE = 17
TOO_MUCH_RECEIVERS = 18
USER_NOT_EXIST = 19
ORIGINATOR_NOT_EXIST = 20
X_ERROR = 21
OTHERS = 22.
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. "snd_email
go through this.
Thanks -
Send Report output as attachment in excel
Hi All,
I am scheduling background Job for Auto mail of standard SAP report. I am able to send the details in html format, please guide me how to send report details in excel format.
I have already check SCN but unable to find exact solution for same.
Regards
RashidRashid,
When u Go SM37 Follow This Step Then U Get The Data In Excel Format.
Follow step
Select Spool Option
Then U got the screen
Select the type option then u got screen.
In This Screen U Find the option save in Local File then get the option.
When U Select the Spreadsheet Option You can Able to save your data in excel format.
Hope its help full for you -
Need to sent alv output as html or as pdf attachment in mail
+Hello
I want to send an ALV output as attachement in html or as pdf format. how to do that? line size is greater than 600(nearly 40 fields).
+please help me in this query.
Regards
Guruvayurappan
Moderator Message: Please search before posting your question. Thread locked.
Edited by: Suhas Saha on Dec 29, 2011 4:57 PMHi,
For sending the ALV output as PDF attachment, you can create a spool (proper page size in print parameters) and convert the spool to PDF using the FM CONVERT_ABAPSPOOLJOB_2_PDF and then send the same as attachment in mail.
For send the data as HTML attachment, try the below FMs
WWW_ITAB_TO_HTML_HEADERS & WWW_ITAB_TO_HTML_LAYOUT to create the HTML layout
WWW_ITAB_TO_HTML to create the HTML for the actual data.
Hope this helps you.
Regards,
Sachinkumar Mehta -
Send Output as attachment to email address
Hi friends,
My requirement is to send the Output as attachment to a specific email address.
I have created a new output type and using transmission medium as External Send.
If I use SH/BP/SP it is picking the mail address and working fine.
Now my requirement is to send to fixed standard email address irrelevant of document.
Can anyone help me to explain how can I achieve this by setting in Parner functions of that output type?
I dont want to add any parner function in partner determination.
Thanks in advance.
Rgds,
AKHi there,
Define a new customized Z table & maintain the required mail ids in the table.
in the O/p processing prog, call the Z table & send the mail to the mail ids mentioned in it.
For formality, assign the O/p to an partner function in your condition records.
Regards,
Sivanand -
ALV output to be send to an email in Excel format
Hi All,
Now I am sending alv output to email through excel format successfully but my problem is in last coloumn output some times last charectors are missing. Please help me out.
For example out put is 'Not Approved'. Some times it is displaying correct and some times it is displaying only 'Not'.
Thanks and Regards,
Siva.hi,
check this thread for reference:
Sending ALV by mail -
Assigning Column Headers Dynamically in ALV output
Hello Experts,
I have to create dynamic column headers based on the user input on the selection-screen. Basically users enter the period and the ALV output has to create the column headers dynamically for that along with some standard columns.
For eg, The selection screen is like this:
From: 'Q4' '2009'
To 'Q2' '2011'.
Then I have to create 12 columns for the months and rest for the Quarters.
Then the output will be like this:
Material, Description,10/09, 11/09, 12/09, 01/10, 02/10, 03/10, 04/10, 05/10, 06/10, 07/10, 08/10, 09/10, Q4/10, Q1/11, Q2/11
I have built the logic to determine the number of colums for the periods based on input.
By reading other posts, I have learnt that I have to use call method cl_alv_table_create=>create_dynamic_table to get the functionality.
I have also looked at program BCALV_TABLE_CREATE for some help. It only has column headers in increasing order. But I am not able to understand How to pass the Column Header Label (for eg 10/09 or Q1/10) to the fieldcat dynamically.
Is there any blog/sample prog close to my req? Can anybody please please help me. I grealy appreciate it.
Thanks.Hi Lope,
You need to filll column heading based on dynamic internal table column names.
In your final internal table, you will have some column names like '1009, 1109, 1209' .
While filling fieldcatalog you need to put your logic for column heading text.
If column name is 1009, concatenate '10 ' '/' '09', or calculate the quarter 10 falls into ,and display Q4/09.
Regards,
Nisha Vengal.
Maybe you are looking for
-
Duas empresas emitindo NF-e para mesma UF e único GRC/PI, é possível?
Pessoal, bom dia! Num projeto de NF-e é possível duas empresas emitirem NF-e para a mesma UF, utilizando o mesmo GRC/PI (únicos)? Pergunto isso, pois não existe uma forma de diferenciar no PI os multiplos Receiver Determination nos cenários para dete
-
Corporate Exchange Account will not sync with WiFi, but will on 3G
I have a corporate Exchange account that I have tried to setup on my 3GS on iOS 4. Using WiFi, it won't connect but it does on 3G. It all worked fine on my 3.1.2 on the same WiFi here at home. Looking for any helpful ideas. Thanks Rick
-
Hi! I have changed my Apple-ID to a new mailadress. But I have not been able to change the iCloud-adress in my iPhone. The iPhone just asks for my password to the old Apple-ID. Can anyone help?
-
I was asked to install a few updates today when I booted up. I d-loaded like a good little soldier and installed and now my external Seagate drive is no longer readable. The prompt asks me if I want to initialize, ignore or eject the drive. Here are
-
10.5.1 broke Safari and Mail
After updating to 10.5.1 I can no longer open Safari or Mail. For both of them I just get the "The application quit unexpectedly" message shortly after launching. Also, that message randomly pops up for PubSub Agent. I read that PubSub deals with .Ma