Skip to Content
0
Former Member
Feb 16, 2009 at 07:25 AM

Exporting data from table to Excel in a particular format using BSP.

118 Views

Hello all,

I am creating a application in BSP wherein i have to export data to excel sheet.

I am able to do that but the output in excel sheet is not formatted. it is displaying the data in a single

column. For example, the internal table which i am exporting to excel contains fields "product

name", "area name", country name", "values". all these should be displayed in different columns.How

can i achieve this functionality.A sample code will be of great help..

Below is the code i hav written for exporting to excel :

data: l_len type i,

l_string type string,

app_type type string,

file_content type xstring,

file_mime_type type string.

create OBJECT cached_response TYPE cl_http_response EXPORTING add_c_msg = 1.

cached_response->set_data( file_content ).

cached_response->set_header_field(

name = if_http_header_fields=>content_type

value = file_mime_type ).

LOOP AT itab_xls INTO wa_xls.

CONCATENATE L_STRING wa_xls-product_name

wa_xls-area_name

wa_xls-landx

CL_ABAP_CHAR_UTILITIES=>CR_LF INTO L_STRING SEPARATED BY SPACE.

ENDLOOP.

APP_TYPE = 'APPLICATION/MSEXCEL; charset=utf-16le'.

data: l_xstring type xstring.

call function 'SCMS_STRING_TO_XSTRING'

exporting

text = l_string

MIMETYPE = 'APPLICATION/MSEXCEL; charset=utf-16le'

IMPORTING

BUFFER = l_xstring.

  • Add the Byte Order Mark - UTF-16 Little Endian

concatenate cl_abap_char_utilities=>byte_order_mark_little

l_xstring

into l_xstring in byte mode.

cached_response->set_data( l_xstring ).

cached_response->set_header_field( name = if_http_header_fields=>content_type

value = 'APPLICATION/MSEXCEL; charset=utf-16le' ).

*Set the filename into the response header

cached_response->set_header_field( name = 'Content-Disposition'

value = 'attachment; filename=gkb_excel.xls' ).

*Set the Response Status

cached_response->set_status( code = 200 reason = 'OK' ).

*Set the Cache Timeout - 60 seconds - we only need this in the cache

*long enough to build the page and allow the IFrame on the Client to request it.

cached_response->server_cache_expire_rel( expires_rel = 60 ).

CALL FUNCTION 'GUID_CREATE'

IMPORTING

ev_guid_32 = guid.

CONCATENATE runtime->application_url '/' guid '.xls' INTO url.

cl_http_server=>server_cache_upload( url = url

response = cached_response ).

Can anyone help me with some solution.

Thanks in advance.

Gurmahima.