Application Development 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: 

how to handle more than 255 char in excel att. in FM SO_DOCUMENT_SEND_API1

Former Member
0 Kudos

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.

1 REPLY 1

Former Member
0 Kudos

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.