10-07-2008 11:35 AM
hi all,
Good morning.
My requirement is to send a report as an excel attatchment to the respective managers mail box. For this I am using the function module SO_DOCUMENT_SEND_API1 as follows.
call function 'SO_DOCUMENT_SEND_API1'
exporting
document_data =
put_in_outbox =
sender_address =
sender_address_type =
commit_work =
tables
packing_list =
object_header =
contents_bin =
contents_txt =
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.
Here the problem is contents_bin is of type SOLISTI1 which takes max 255 characters, As my report columns occupies more than 400 characters, I am unable to get all the column values in excel attachement.
Can anyone please help me to get all the column values in the excel attachment.
Thanks in Advance.
10-08-2008 8:01 AM
Hi,
Please check the following extract of a sample program I had executed.It deals with how to handle more that 255 chars in excel att in FM SO_DOCUMENT_SEND_API1
Hope this helps....
CONSTANTS: con_cret TYPE x VALUE '0D', "OK for non Unicode
con_tab TYPE X VALUE '09'. "OK for non Unicode
data : Begin of wa_output ,
BUFFER(1000) TYPE C, " data to be written into xls format
End of wa_output.
data : gt_output LIKE wa_output OCCURS 0 WITH HEADER LINE.
data : FIELDNAME_OFFSET TYPE I.
Attachement contents
DATA: BEGIN OF wa_att_cont.
INCLUDE STRUCTURE solisti1.
DATA: END OF wa_att_cont.
DATA: lt_att_cont LIKE wa_att_cont OCCURS 0.
data : begin of zdfies occurs 0.
include structure dfies.
data : end of zdfies.
*
data : begin of it_field occurs 0,
fldname(40) type c,
end of it_field.
data : yfilname like RLGRAP-FILENAME value 'C:\Documents and
Settings\'.
data : ok_code TYPE sy-ucomm,
save_ok TYPE sy-ucomm.
data : flag type i.
************************************************************************
**
********************************Variables*****************************
**
************************************************************************
*
DATA: lv_count TYPE i, " count
lv_forwarder LIKE soud-usrnam, " Forwarder.
lv_lines TYPE i. " no of lines
************************************************************************
**
********************************Structures****************************
**
************************************************************************
*
DATA: w_doc_data LIKE sodocchgi1,
w_sent_all(1) TYPE c,
ld_sender_address LIKE soextreci1-receiver,
ld_sender_address_type LIKE soextreci1-adr_typ.
******Structure for Folder ID
DATA: BEGIN OF wa_folder_id.
INCLUDE STRUCTURE soodk.
DATA: END OF wa_folder_id.
Folder Contents, change attributes
DATA: BEGIN OF wa_object_fl_change.
INCLUDE STRUCTURE sofm1.
DATA: END OF wa_object_fl_change.
******Object definition, change attributes
DATA: BEGIN OF wa_object_hd_change.
INCLUDE STRUCTURE sood1.
DATA: END OF wa_object_hd_change.
******Object ID
DATA: BEGIN OF wa_object_id.
INCLUDE STRUCTURE soodk.
DATA: END OF wa_object_id.
******Object Defintion.
DATA: BEGIN OF wa_sood.
INCLUDE STRUCTURE sood.
DATA: END OF wa_sood.
******User Definition
DATA: BEGIN OF wa_soud.
INCLUDE STRUCTURE soud.
DATA: END OF wa_soud.
******Sent to all flag.
DATA: BEGIN OF wa_sonv.
INCLUDE STRUCTURE sonv.
DATA: END OF wa_sonv.
******Mail contents
DATA: BEGIN OF wa_objcont.
INCLUDE STRUCTURE solisti1.
DATA: END OF wa_objcont.
******Mail header.
DATA: BEGIN OF wa_objhead.
INCLUDE STRUCTURE soli.
DATA: END OF wa_objhead.
******Para A
DATA: BEGIN OF wa_objpara.
INCLUDE STRUCTURE soparai1.
DATA: END OF wa_objpara.
******Para B
DATA: BEGIN OF wa_objparb.
INCLUDE STRUCTURE soparbi1.
DATA: END OF wa_objparb.
******Receivers list
DATA: BEGIN OF wa_receivers.
INCLUDE STRUCTURE somlreci1.
DATA: END OF wa_receivers.
Pack list
DATA: BEGIN OF wa_packlist.
INCLUDE STRUCTURE sopcklsti1.
DATA: END OF wa_packlist.
DATA: BEGIN OF wa_att_head.
INCLUDE STRUCTURE soli.
DATA: END OF wa_att_head.
************************************************************************
********************internal tables******************************
************************************************************************
**
DATA: lt_objcont LIKE wa_objcont OCCURS 0, "mail contents
lt_objhead LIKE wa_objhead OCCURS 0, "mail header
lt_objpara LIKE wa_objpara OCCURS 0, "Paragraph A
lt_objparb LIKE wa_objparb OCCURS 0, "Paragraph B
lt_receivers LIKE wa_receivers OCCURS 0," receiver list
lt_packlist LIKE wa_packlist OCCURS 0,"Pack list
lt_att_head LIKE wa_att_head OCCURS 0."Attachment Header
************************************************************************
**
**************************Constants***********************************
**
************************************************************************
**
CONSTANTS: lc_kreuz LIKE sonv-flag VALUE 'X', "Outbox flag,
lc_colon(1) TYPE c VALUE ':',
lc_raw(3) TYPE c VALUE 'RAW',
lc_f(1) TYPE c VALUE 'F',
lc_u(1) TYPE c VALUE 'U'.
DATA: w_cnt TYPE i.
data : wa_edition like t_edition.
*
DATA : i_strlen TYPE i,
i_off TYPE i ,
i_len TYPE i VALUE 254,
i_totlen TYPE i,
lv_fill_space TYPE i,
lv_split_times TYPE i,
lv_len TYPE i.
**>> Populate the attachment contents.*
LOOP AT gt_output INTO wa_output.
i_strlen = strlen( wa_output ) .
IF i_strlen LE 254.
CONCATENATE con_cret wa_output-buffer
INTO wa_output-buffer.
APPEND wa_output-buffer TO lt_att_cont.
ELSE. " i.e the data is more than 255 characters
DO 4 TIMES.
i_totlen = i_off + i_len .
IF i_totlen = 254.
wa_att_cont = wa_output+i_off(i_len).
CONCATENATE con_cret wa_att_cont
INTO wa_att_cont.
APPEND wa_att_cont TO lt_att_cont.
ELSE.
wa_att_cont = wa_output+i_off(i_len). "splitting more than 255
APPEND wa_att_cont TO lt_att_cont.
ENDIF.
IF i_totlen GE i_strlen.
CLEAR : i_off .
EXIT.
ELSE.
i_off = i_off + 254.
ENDIF.
ENDDO.
ENDIF.
CLEAR : wa_output.
ENDLOOP.