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: 

Excel download performance issue

Former Member
0 Kudos
296

Hi,

I have a program which downloads data to Excel using OLE methods and formats the data and creates graphs. The program and the excel file are fine. But the issue is this download takes over 20 mins. Is there some refresh / clear commands or anything which will speed this process.

One problem could be that the Excel file creation is visible when its assigning data to the cells and formatting.

Any help is welcome

1 ACCEPTED SOLUTION

Former Member
0 Kudos
178

&----


*& Report ZETA_EXCEL_DOWNLOAD_CLIPBOARD *

*& *

&----


*& *

*& *

&----


report zeta_excel_download_clipboard .

include ole2incl.

.

data: w_cell1 type ole2_object,

w_cell2 type ole2_object.

*--- Ole data Declarations

data: h_excel type ole2_object, " Excel object

h_mapl type ole2_object, " list of workbooks

h_map type ole2_object, " workbook

h_zl type ole2_object, " cell

h_f type ole2_object, " font

gs_interior type ole2_object, " Pattern

worksheet type ole2_object,

h_cell type ole2_object,

h_cell1 type ole2_object,

range type ole2_object,

h_sheet2 type ole2_object,

h_sheet3 type ole2_object,

gs_font type ole2_object,

flg_stop(1) type c.

*********************************************************************

    • Internal table Declaration

*********************************************************************

data: begin of t_excel occurs 0,

vkorg(20) type c, "Sales Org

vbtyp(20) type c, "Document Category

auart(20) type c, "Document Type

ernam(20) type c, "Created By

vbeln(20) type c, "Document Number

posnr(20) type c, "Item Number

erdat(20) type c, "Created Date

vdatu(20) type c, "Header Requested Delivery Date

reqdat(20) type c, "Request date

condat(20) type c, "Confirm date

lifsk(20) type c, "Header Block

txt30(30) type c, "Order User Status Description

lifsp(20) type c, "Line Block

dispo(20) type c, "MRP Controller

dsnam(20) type c, "MRP Controller Description

vmsta(20) type c, "Material Sales Status

kunnr(20) type c, "Sold To

cname(35) type c, "Sold To Name

regio(20) type c, "State

cufd(10) type c, "CUD

bstnk(20) type c, "PO#

bsark(20) type c, "Ordering Method

matnr(20) type c, "Material

maktx(35) type c, "Material Description

t200(20) type c, "T200

vtext(20) type c, "T200 Description

matkl(20) type c, "Material Group

zzbomind(7) type c, "BOM Indicator

ostat(20) type c, "Order Status

cmgst(20) type c, "CRD

inco1(20) type c, "Incoterms

oqty(20) type c, "Order Quantity

pqty(20) type c, "Open Quantity

unit(20) type c, "UOM

onet(20) type c, "Order Value

pnet(20) type c, "Open Value

curr(20) type c, "Currency key

so_bezei like tvkbt-bezei,"Sales Office

sg_bezei like tvgrt-bezei,"Sales Group

bname(20) type c, "Ordering Party

contact(20) type c, "Contact Name

telf1(20) type c, "Contact telf1

reqqty(20) type c, "Item Request qty

reqval(20) type c, "Item Request value

conqty(20) type c, "Item Confirm qty

conval(20) type c, "Item Confirm value

zzrev(02) type c, "Revenue recognition acceptance

bezei(20) type c, "Revenue recognition text

vgbel(20) type c, "Reference Order for RETURNS

0008text(255) type c, "Internal Order Comment Text

end of t_excel.

data: t_excel_bckord like t_excel occurs 0 with header line,

t_excel_bcklog like t_excel occurs 0 with header line,

t_excel_blkord like t_excel occurs 0 with header line.

types: data1(1500) type c,

ty type table of data1.

data: it type ty with header line,

it_2 type ty with header line,

it_3 type ty with header line,

rec type sy-tfill,

deli(1) type c,

l_amt(18) type c.

data: begin of hex,

tab type x,

end of hex.

field-symbols: <fs> .

constants cns_09(2) type n value 09.

assign deli to <fs> type 'X'.

hex-tab = cns_09.

<fs> = hex-tab.

data gv_sheet_name(20) type c .

----


  • M A C R O Declaration

----


define ole_check_error.

if &1 ne 0.

message e001(zz) with &1.

exit.

endif.

end-of-definition.

t_excel_bckord-vkorg = 'ABC'.

t_excel_bckord-vbtyp = 'DEF'.

t_excel_bckord-auart = 'GHI'.

t_excel_bckord-ernam = 'JKL'.

t_excel_bckord-vbeln = 'MNO'.

t_excel_bckord-0008text = 'XYZ'.

append t_excel_bckord.

t_excel_bckord-vkorg = 'ABC1'.

t_excel_bckord-vbtyp = 'DEF1'.

t_excel_bckord-auart = 'GHI1'.

t_excel_bckord-ernam = 'JKL1'.

t_excel_bckord-vbeln = 'MNO1'.

t_excel_bckord-0008text = 'XYZ1'.

append t_excel_bckord.

t_excel_bckord-vkorg = 'ABC2'.

t_excel_bckord-vbtyp = 'DEF2'.

t_excel_bckord-auart = 'GHI2'.

t_excel_bckord-ernam = 'JKL2'.

t_excel_bckord-vbeln = 'MNO2'.

t_excel_bckord-0008text = 'XYZ2'.

append t_excel_bckord.

t_excel_bcklog-vkorg = 'ABC'.

t_excel_bcklog-vbtyp = 'DEF'.

t_excel_bcklog-auart = 'GHI'.

t_excel_bcklog-ernam = 'JKL'.

t_excel_bcklog-vbeln = 'MNO'.

t_excel_bcklog-0008text = 'XYZ'.

append t_excel_bcklog.

t_excel_bcklog-vkorg = 'ABC1'.

t_excel_bcklog-vbtyp = 'DEF1'.

t_excel_bcklog-auart = 'GHI1'.

t_excel_bcklog-ernam = 'JKL1'.

t_excel_bcklog-vbeln = 'MNO1'.

t_excel_bcklog-0008text = 'XYZ1'.

append t_excel_bcklog.

t_excel_bcklog-vkorg = 'ABC2'.

t_excel_bcklog-vbtyp = 'DEF2'.

t_excel_bcklog-auart = 'GHI2'.

t_excel_bcklog-ernam = 'JKL2'.

t_excel_bcklog-vbeln = 'MNO2'.

t_excel_bcklog-0008text = 'XYZ2'.

append t_excel_bcklog.

t_excel_bcklog-vkorg = 'ABC3'.

t_excel_bcklog-vbtyp = 'DEF3'..

t_excel_bcklog-auart = 'GHI3'.

t_excel_bcklog-ernam = 'JKL3'.

t_excel_bcklog-vbeln = 'MNO3'.

t_excel_bcklog-0008text = 'XYZ3'.

append t_excel_bcklog.

t_excel_blkord-vkorg = 'ABC'.

t_excel_blkord-vbtyp = 'DEF'.

t_excel_blkord-auart = 'GHI'.

t_excel_blkord-ernam = 'JKL'.

t_excel_blkord-vbeln = 'MNO'.

t_excel_blkord-0008text = 'XYZ'.

append t_excel_blkord.

t_excel_blkord-vkorg = 'ABC1'.

t_excel_blkord-vbtyp = 'DEF1'.

t_excel_blkord-auart = 'GHI1'.

t_excel_blkord-ernam = 'JKL1'.

t_excel_blkord-vbeln = 'MNO1'.

t_excel_blkord-0008text = 'XYZ1'.

append t_excel_blkord.

t_excel_blkord-vkorg = 'ABC2'.

t_excel_blkord-vbtyp = 'DEF2'.

t_excel_blkord-auart = 'GHI2'.

t_excel_blkord-ernam = 'JKL2'.

t_excel_blkord-vbeln = 'MNO2'.

t_excel_blkord-0008text = 'XYZ2'.

append t_excel_blkord.

t_excel_blkord-vkorg = 'ABC3'.

t_excel_blkord-vbtyp = 'DEF3'..

t_excel_blkord-auart = 'GHI3'.

t_excel_blkord-ernam = 'JKL3'.

t_excel_blkord-vbeln = 'MNO3'.

t_excel_blkord-0008text = 'XYZ3'.

append t_excel_blkord.

t_excel_blkord-vkorg = 'ABC4'.

t_excel_blkord-vbtyp = 'DEF4'..

t_excel_blkord-auart = 'GHI4'.

t_excel_blkord-ernam = 'JKL4'.

t_excel_blkord-vbeln = 'MNO4'.

t_excel_blkord-0008text = 'XYZ4'.

append t_excel_blkord.

loop at t_excel_bckord.

concatenate

t_excel_bckord-vkorg

t_excel_bckord-vbtyp

t_excel_bckord-auart

t_excel_bckord-ernam

t_excel_bckord-vbeln

t_excel_bckord-posnr

t_excel_bckord-erdat

t_excel_bckord-vdatu

t_excel_bckord-reqdat

t_excel_bckord-condat

t_excel_bckord-lifsk

t_excel_bckord-txt30

t_excel_bckord-lifsp

t_excel_bckord-dispo

t_excel_bckord-dsnam

t_excel_bckord-vmsta

t_excel_bckord-kunnr

t_excel_bckord-cname

t_excel_bckord-regio

t_excel_bckord-cufd

t_excel_bckord-bstnk

t_excel_bckord-bsark

t_excel_bckord-matnr

t_excel_bckord-maktx

t_excel_bckord-t200

t_excel_bckord-vtext

t_excel_bckord-matkl

t_excel_bckord-zzbomind

t_excel_bckord-ostat

t_excel_bckord-cmgst

t_excel_bckord-inco1

t_excel_bckord-oqty

t_excel_bckord-pqty

t_excel_bckord-unit

t_excel_bckord-onet

t_excel_bckord-pnet

t_excel_bckord-curr

t_excel_bckord-so_bezei

t_excel_bckord-sg_bezei

t_excel_bckord-bname

t_excel_bckord-contact

t_excel_bckord-telf1

t_excel_bckord-reqqty

t_excel_bckord-reqval

t_excel_bckord-conqty

t_excel_bckord-conval

t_excel_bckord-zzrev

t_excel_bckord-bezei

t_excel_bckord-vgbel

t_excel_bckord-0008text

into it

separated by deli.

append it.

clear it.

endloop.

loop at t_excel_bcklog.

concatenate

t_excel_bcklog-vkorg

t_excel_bcklog-vbtyp

t_excel_bcklog-auart

t_excel_bcklog-ernam

t_excel_bcklog-vbeln

t_excel_bcklog-posnr

t_excel_bcklog-erdat

t_excel_bcklog-vdatu

t_excel_bcklog-reqdat

t_excel_bcklog-condat

t_excel_bcklog-lifsk

t_excel_bcklog-txt30

t_excel_bcklog-lifsp

t_excel_bcklog-dispo

t_excel_bcklog-dsnam

t_excel_bcklog-vmsta

t_excel_bcklog-kunnr

t_excel_bcklog-cname

t_excel_bcklog-regio

t_excel_bcklog-cufd

t_excel_bcklog-bstnk

t_excel_bcklog-bsark

t_excel_bcklog-matnr

t_excel_bcklog-maktx

t_excel_bcklog-t200

t_excel_bcklog-vtext

t_excel_bcklog-matkl

t_excel_bcklog-zzbomind

t_excel_bcklog-ostat

t_excel_bcklog-cmgst

t_excel_bcklog-inco1

t_excel_bcklog-oqty

t_excel_bcklog-pqty

t_excel_bcklog-unit

t_excel_bcklog-onet

t_excel_bcklog-pnet

t_excel_bcklog-curr

t_excel_bcklog-so_bezei

t_excel_bcklog-sg_bezei

t_excel_bcklog-bname

t_excel_bcklog-contact

t_excel_bcklog-telf1

t_excel_bcklog-reqqty

t_excel_bcklog-reqval

t_excel_bcklog-conqty

t_excel_bcklog-conval

t_excel_bcklog-zzrev

t_excel_bcklog-bezei

t_excel_bcklog-vgbel

t_excel_bcklog-0008text

into it_2

separated by deli.

append it_2.

clear it_2.

endloop.

loop at t_excel_blkord.

concatenate

t_excel_blkord-vkorg

t_excel_blkord-vbtyp

t_excel_blkord-auart

t_excel_blkord-ernam

t_excel_blkord-vbeln

t_excel_blkord-posnr

t_excel_blkord-erdat

t_excel_blkord-vdatu

t_excel_blkord-reqdat

t_excel_blkord-condat

t_excel_blkord-lifsk

t_excel_blkord-txt30

t_excel_blkord-lifsp

t_excel_blkord-dispo

t_excel_blkord-dsnam

t_excel_blkord-vmsta

t_excel_blkord-kunnr

t_excel_blkord-cname

t_excel_blkord-regio

t_excel_blkord-cufd

t_excel_blkord-bstnk

t_excel_blkord-bsark

t_excel_blkord-matnr

t_excel_blkord-maktx

t_excel_blkord-t200

t_excel_blkord-vtext

t_excel_blkord-matkl

t_excel_blkord-zzbomind

t_excel_blkord-ostat

t_excel_blkord-cmgst

t_excel_blkord-inco1

t_excel_blkord-oqty

t_excel_blkord-pqty

t_excel_blkord-unit

t_excel_blkord-onet

t_excel_blkord-pnet

t_excel_blkord-curr

t_excel_blkord-so_bezei

t_excel_blkord-sg_bezei

t_excel_blkord-bname

t_excel_blkord-contact

t_excel_blkord-telf1

t_excel_blkord-reqqty

t_excel_blkord-reqval

t_excel_blkord-conqty

t_excel_blkord-conval

t_excel_blkord-zzrev

t_excel_blkord-bezei

t_excel_blkord-vgbel

t_excel_blkord-0008text

into it_3

separated by deli.

append it_3.

clear it_3.

endloop.

if h_excel-header = space or h_excel-handle = -1.

  • start Excel

create object h_excel 'EXCEL.APPLICATION'.

endif.

  • PERFORM err_hdl.

*--- get list of workbooks, initially empty

call method of h_excel 'Workbooks' = h_mapl.

  • PERFORM err_hdl.

set property of h_excel 'Visible' = 1.

  • add a new workbook

call method of h_mapl 'Add' = h_map.

  • PERFORM err_hdl.

*GV_SHEET_NAME = '1st SHEET'.

gv_sheet_name = 'Back Orders'.

get property of h_excel 'ACTIVESHEET' = worksheet.

set property of worksheet 'Name' = gv_sheet_name .

*--Formatting the area of additional data 1 and doing the BOLD

call method of h_excel 'Cells' = w_cell1

exporting

#1 = 1

#2 = 1.

call method of h_excel 'Cells' = w_cell2

exporting

#1 = 1

#2 = 50.

call method of h_excel 'Range' = h_cell

exporting

#1 = w_cell1

#2 = w_cell2.

*CALL METHOD OF gs_cells 'Select' .

get property of h_cell 'Font' = gs_font .

set property of gs_font 'Bold' = 1 .

data l_rc type i.

call method cl_gui_frontend_services=>clipboard_export

importing

data = it[]

changing

rc = l_rc

exceptions

cntl_error = 1

error_no_gui = 2

not_supported_by_gui = 3

others = 4.

call method of h_excel 'Cells' = w_cell1

exporting

#1 = 1

#2 = 1.

call method of h_excel 'Cells' = w_cell2

exporting

#1 = 1

#2 = 1.

  • PERFORM err_hdl.

call method of h_excel 'Range' = range

exporting

#1 = w_cell1

#2 = w_cell2.

call method of range 'Select'.

  • PERFORM err_hdl.

call method of worksheet 'Paste'.

  • PERFORM err_hdl.

  • CALL METHOD OF h_excel 'QUIT'.

*GV_SHEET_NAME = '2ND SHEET'.

gv_sheet_name = 'Backlog'.

get property of h_excel 'Sheets' = h_sheet2 .

call method of h_sheet2 'Add' = h_map.

set property of h_map 'Name' = gv_sheet_name .

get property of h_excel 'ACTIVESHEET' = worksheet.

*--Formatting the area of additional data 1 and doing the BOLD

call method of h_excel 'Cells' = w_cell1

exporting

#1 = 1

#2 = 1.

call method of h_excel 'Cells' = w_cell2

exporting

#1 = 1

#2 = 50.

call method of h_excel 'Range' = h_cell

exporting

#1 = w_cell1

#2 = w_cell2.

get property of h_cell 'Font' = gs_font .

set property of gs_font 'Bold' = 1 .

call method cl_gui_frontend_services=>clipboard_export

importing

data = it_2[]

changing

rc = l_rc

exceptions

cntl_error = 1

error_no_gui = 2

not_supported_by_gui = 3

others = 4.

call method of h_excel 'Cells' = w_cell1

exporting

#1 = 1

#2 = 1.

call method of h_excel 'Cells' = w_cell2

exporting

#1 = 1

#2 = 1.

  • PERFORM err_hdl.

call method of h_excel 'Range' = range

exporting

#1 = w_cell1

#2 = w_cell2.

call method of range 'Select'.

  • PERFORM err_hdl.

call method of worksheet 'Paste'.

*GV_SHEET_NAME = '3rd SHEET'.

gv_sheet_name = 'Blocked Orders'.

get property of h_excel 'Sheets' = h_sheet3 .

call method of h_sheet3 'Add' = h_map.

set property of h_map 'Name' = gv_sheet_name .

get property of h_excel 'ACTIVESHEET' = worksheet.

*--Formatting the area of additional data 1 and doing the BOLD

call method of h_excel 'Cells' = w_cell1

exporting

#1 = 1

#2 = 1.

call method of h_excel 'Cells' = w_cell2

exporting

#1 = 1

#2 = 50.

call method of h_excel 'Range' = h_cell

exporting

#1 = w_cell1

#2 = w_cell2.

get property of h_cell 'Font' = gs_font .

set property of gs_font 'Bold' = 1 .

call method cl_gui_frontend_services=>clipboard_export

importing

data = it_3[]

changing

rc = l_rc

exceptions

cntl_error = 1

error_no_gui = 2

not_supported_by_gui = 3

others = 4.

call method of h_excel 'Cells' = w_cell1

exporting

#1 = 1

#2 = 1.

call method of h_excel 'Cells' = w_cell2

exporting

#1 = 1

#2 = 1.

  • PERFORM err_hdl.

call method of h_excel 'Range' = range

exporting

#1 = w_cell1

#2 = w_cell2.

call method of range 'Select'.

  • PERFORM err_hdl.

call method of worksheet 'Paste'.

*--- disconnect from Excel

free object h_zl.

free object h_mapl.

free object h_map.

free object h_excel.

9 REPLIES 9

Former Member
0 Kudos
178

Use NO FLUSH for all OLE-Statements.

As you already noted, having excel visible slows things down. Try creating the excel dark and setting it visible as a last step.

CREATE OBJECT gs_application 'EXCEL.APPLICATION'.

  • do stuff

SET PROPERTY OF gs_application 'Visible' = 1.

0 Kudos
178

I did make the Excel 'invisible' but the NO FLUSH is giving some issues.

should the NO FLUSH be added for every CALL METHOD, SET, GET statements? when do we put in the FREE statement?

Former Member
0 Kudos
178

Hi,

You need to add NO FLUSH to every CREATE OBJECT, CALL METHOD, SET/GET PROPERTY that you use. Then once you have sent all the commands you want to send you call function module FLUSH to send the commands to the front end (if the buffer gets full cause you send too many commands it will auto-flush so all you need to worry about is just calling flush at the end of the program).

Just a note to remeber, if you use any variables in the calls the variables must be global program variables.

Cheers

De Wildt

0 Kudos
178

I will try this out and inform

Former Member
0 Kudos
179

&----


*& Report ZETA_EXCEL_DOWNLOAD_CLIPBOARD *

*& *

&----


*& *

*& *

&----


report zeta_excel_download_clipboard .

include ole2incl.

.

data: w_cell1 type ole2_object,

w_cell2 type ole2_object.

*--- Ole data Declarations

data: h_excel type ole2_object, " Excel object

h_mapl type ole2_object, " list of workbooks

h_map type ole2_object, " workbook

h_zl type ole2_object, " cell

h_f type ole2_object, " font

gs_interior type ole2_object, " Pattern

worksheet type ole2_object,

h_cell type ole2_object,

h_cell1 type ole2_object,

range type ole2_object,

h_sheet2 type ole2_object,

h_sheet3 type ole2_object,

gs_font type ole2_object,

flg_stop(1) type c.

*********************************************************************

    • Internal table Declaration

*********************************************************************

data: begin of t_excel occurs 0,

vkorg(20) type c, "Sales Org

vbtyp(20) type c, "Document Category

auart(20) type c, "Document Type

ernam(20) type c, "Created By

vbeln(20) type c, "Document Number

posnr(20) type c, "Item Number

erdat(20) type c, "Created Date

vdatu(20) type c, "Header Requested Delivery Date

reqdat(20) type c, "Request date

condat(20) type c, "Confirm date

lifsk(20) type c, "Header Block

txt30(30) type c, "Order User Status Description

lifsp(20) type c, "Line Block

dispo(20) type c, "MRP Controller

dsnam(20) type c, "MRP Controller Description

vmsta(20) type c, "Material Sales Status

kunnr(20) type c, "Sold To

cname(35) type c, "Sold To Name

regio(20) type c, "State

cufd(10) type c, "CUD

bstnk(20) type c, "PO#

bsark(20) type c, "Ordering Method

matnr(20) type c, "Material

maktx(35) type c, "Material Description

t200(20) type c, "T200

vtext(20) type c, "T200 Description

matkl(20) type c, "Material Group

zzbomind(7) type c, "BOM Indicator

ostat(20) type c, "Order Status

cmgst(20) type c, "CRD

inco1(20) type c, "Incoterms

oqty(20) type c, "Order Quantity

pqty(20) type c, "Open Quantity

unit(20) type c, "UOM

onet(20) type c, "Order Value

pnet(20) type c, "Open Value

curr(20) type c, "Currency key

so_bezei like tvkbt-bezei,"Sales Office

sg_bezei like tvgrt-bezei,"Sales Group

bname(20) type c, "Ordering Party

contact(20) type c, "Contact Name

telf1(20) type c, "Contact telf1

reqqty(20) type c, "Item Request qty

reqval(20) type c, "Item Request value

conqty(20) type c, "Item Confirm qty

conval(20) type c, "Item Confirm value

zzrev(02) type c, "Revenue recognition acceptance

bezei(20) type c, "Revenue recognition text

vgbel(20) type c, "Reference Order for RETURNS

0008text(255) type c, "Internal Order Comment Text

end of t_excel.

data: t_excel_bckord like t_excel occurs 0 with header line,

t_excel_bcklog like t_excel occurs 0 with header line,

t_excel_blkord like t_excel occurs 0 with header line.

types: data1(1500) type c,

ty type table of data1.

data: it type ty with header line,

it_2 type ty with header line,

it_3 type ty with header line,

rec type sy-tfill,

deli(1) type c,

l_amt(18) type c.

data: begin of hex,

tab type x,

end of hex.

field-symbols: <fs> .

constants cns_09(2) type n value 09.

assign deli to <fs> type 'X'.

hex-tab = cns_09.

<fs> = hex-tab.

data gv_sheet_name(20) type c .

----


  • M A C R O Declaration

----


define ole_check_error.

if &1 ne 0.

message e001(zz) with &1.

exit.

endif.

end-of-definition.

t_excel_bckord-vkorg = 'ABC'.

t_excel_bckord-vbtyp = 'DEF'.

t_excel_bckord-auart = 'GHI'.

t_excel_bckord-ernam = 'JKL'.

t_excel_bckord-vbeln = 'MNO'.

t_excel_bckord-0008text = 'XYZ'.

append t_excel_bckord.

t_excel_bckord-vkorg = 'ABC1'.

t_excel_bckord-vbtyp = 'DEF1'.

t_excel_bckord-auart = 'GHI1'.

t_excel_bckord-ernam = 'JKL1'.

t_excel_bckord-vbeln = 'MNO1'.

t_excel_bckord-0008text = 'XYZ1'.

append t_excel_bckord.

t_excel_bckord-vkorg = 'ABC2'.

t_excel_bckord-vbtyp = 'DEF2'.

t_excel_bckord-auart = 'GHI2'.

t_excel_bckord-ernam = 'JKL2'.

t_excel_bckord-vbeln = 'MNO2'.

t_excel_bckord-0008text = 'XYZ2'.

append t_excel_bckord.

t_excel_bcklog-vkorg = 'ABC'.

t_excel_bcklog-vbtyp = 'DEF'.

t_excel_bcklog-auart = 'GHI'.

t_excel_bcklog-ernam = 'JKL'.

t_excel_bcklog-vbeln = 'MNO'.

t_excel_bcklog-0008text = 'XYZ'.

append t_excel_bcklog.

t_excel_bcklog-vkorg = 'ABC1'.

t_excel_bcklog-vbtyp = 'DEF1'.

t_excel_bcklog-auart = 'GHI1'.

t_excel_bcklog-ernam = 'JKL1'.

t_excel_bcklog-vbeln = 'MNO1'.

t_excel_bcklog-0008text = 'XYZ1'.

append t_excel_bcklog.

t_excel_bcklog-vkorg = 'ABC2'.

t_excel_bcklog-vbtyp = 'DEF2'.

t_excel_bcklog-auart = 'GHI2'.

t_excel_bcklog-ernam = 'JKL2'.

t_excel_bcklog-vbeln = 'MNO2'.

t_excel_bcklog-0008text = 'XYZ2'.

append t_excel_bcklog.

t_excel_bcklog-vkorg = 'ABC3'.

t_excel_bcklog-vbtyp = 'DEF3'..

t_excel_bcklog-auart = 'GHI3'.

t_excel_bcklog-ernam = 'JKL3'.

t_excel_bcklog-vbeln = 'MNO3'.

t_excel_bcklog-0008text = 'XYZ3'.

append t_excel_bcklog.

t_excel_blkord-vkorg = 'ABC'.

t_excel_blkord-vbtyp = 'DEF'.

t_excel_blkord-auart = 'GHI'.

t_excel_blkord-ernam = 'JKL'.

t_excel_blkord-vbeln = 'MNO'.

t_excel_blkord-0008text = 'XYZ'.

append t_excel_blkord.

t_excel_blkord-vkorg = 'ABC1'.

t_excel_blkord-vbtyp = 'DEF1'.

t_excel_blkord-auart = 'GHI1'.

t_excel_blkord-ernam = 'JKL1'.

t_excel_blkord-vbeln = 'MNO1'.

t_excel_blkord-0008text = 'XYZ1'.

append t_excel_blkord.

t_excel_blkord-vkorg = 'ABC2'.

t_excel_blkord-vbtyp = 'DEF2'.

t_excel_blkord-auart = 'GHI2'.

t_excel_blkord-ernam = 'JKL2'.

t_excel_blkord-vbeln = 'MNO2'.

t_excel_blkord-0008text = 'XYZ2'.

append t_excel_blkord.

t_excel_blkord-vkorg = 'ABC3'.

t_excel_blkord-vbtyp = 'DEF3'..

t_excel_blkord-auart = 'GHI3'.

t_excel_blkord-ernam = 'JKL3'.

t_excel_blkord-vbeln = 'MNO3'.

t_excel_blkord-0008text = 'XYZ3'.

append t_excel_blkord.

t_excel_blkord-vkorg = 'ABC4'.

t_excel_blkord-vbtyp = 'DEF4'..

t_excel_blkord-auart = 'GHI4'.

t_excel_blkord-ernam = 'JKL4'.

t_excel_blkord-vbeln = 'MNO4'.

t_excel_blkord-0008text = 'XYZ4'.

append t_excel_blkord.

loop at t_excel_bckord.

concatenate

t_excel_bckord-vkorg

t_excel_bckord-vbtyp

t_excel_bckord-auart

t_excel_bckord-ernam

t_excel_bckord-vbeln

t_excel_bckord-posnr

t_excel_bckord-erdat

t_excel_bckord-vdatu

t_excel_bckord-reqdat

t_excel_bckord-condat

t_excel_bckord-lifsk

t_excel_bckord-txt30

t_excel_bckord-lifsp

t_excel_bckord-dispo

t_excel_bckord-dsnam

t_excel_bckord-vmsta

t_excel_bckord-kunnr

t_excel_bckord-cname

t_excel_bckord-regio

t_excel_bckord-cufd

t_excel_bckord-bstnk

t_excel_bckord-bsark

t_excel_bckord-matnr

t_excel_bckord-maktx

t_excel_bckord-t200

t_excel_bckord-vtext

t_excel_bckord-matkl

t_excel_bckord-zzbomind

t_excel_bckord-ostat

t_excel_bckord-cmgst

t_excel_bckord-inco1

t_excel_bckord-oqty

t_excel_bckord-pqty

t_excel_bckord-unit

t_excel_bckord-onet

t_excel_bckord-pnet

t_excel_bckord-curr

t_excel_bckord-so_bezei

t_excel_bckord-sg_bezei

t_excel_bckord-bname

t_excel_bckord-contact

t_excel_bckord-telf1

t_excel_bckord-reqqty

t_excel_bckord-reqval

t_excel_bckord-conqty

t_excel_bckord-conval

t_excel_bckord-zzrev

t_excel_bckord-bezei

t_excel_bckord-vgbel

t_excel_bckord-0008text

into it

separated by deli.

append it.

clear it.

endloop.

loop at t_excel_bcklog.

concatenate

t_excel_bcklog-vkorg

t_excel_bcklog-vbtyp

t_excel_bcklog-auart

t_excel_bcklog-ernam

t_excel_bcklog-vbeln

t_excel_bcklog-posnr

t_excel_bcklog-erdat

t_excel_bcklog-vdatu

t_excel_bcklog-reqdat

t_excel_bcklog-condat

t_excel_bcklog-lifsk

t_excel_bcklog-txt30

t_excel_bcklog-lifsp

t_excel_bcklog-dispo

t_excel_bcklog-dsnam

t_excel_bcklog-vmsta

t_excel_bcklog-kunnr

t_excel_bcklog-cname

t_excel_bcklog-regio

t_excel_bcklog-cufd

t_excel_bcklog-bstnk

t_excel_bcklog-bsark

t_excel_bcklog-matnr

t_excel_bcklog-maktx

t_excel_bcklog-t200

t_excel_bcklog-vtext

t_excel_bcklog-matkl

t_excel_bcklog-zzbomind

t_excel_bcklog-ostat

t_excel_bcklog-cmgst

t_excel_bcklog-inco1

t_excel_bcklog-oqty

t_excel_bcklog-pqty

t_excel_bcklog-unit

t_excel_bcklog-onet

t_excel_bcklog-pnet

t_excel_bcklog-curr

t_excel_bcklog-so_bezei

t_excel_bcklog-sg_bezei

t_excel_bcklog-bname

t_excel_bcklog-contact

t_excel_bcklog-telf1

t_excel_bcklog-reqqty

t_excel_bcklog-reqval

t_excel_bcklog-conqty

t_excel_bcklog-conval

t_excel_bcklog-zzrev

t_excel_bcklog-bezei

t_excel_bcklog-vgbel

t_excel_bcklog-0008text

into it_2

separated by deli.

append it_2.

clear it_2.

endloop.

loop at t_excel_blkord.

concatenate

t_excel_blkord-vkorg

t_excel_blkord-vbtyp

t_excel_blkord-auart

t_excel_blkord-ernam

t_excel_blkord-vbeln

t_excel_blkord-posnr

t_excel_blkord-erdat

t_excel_blkord-vdatu

t_excel_blkord-reqdat

t_excel_blkord-condat

t_excel_blkord-lifsk

t_excel_blkord-txt30

t_excel_blkord-lifsp

t_excel_blkord-dispo

t_excel_blkord-dsnam

t_excel_blkord-vmsta

t_excel_blkord-kunnr

t_excel_blkord-cname

t_excel_blkord-regio

t_excel_blkord-cufd

t_excel_blkord-bstnk

t_excel_blkord-bsark

t_excel_blkord-matnr

t_excel_blkord-maktx

t_excel_blkord-t200

t_excel_blkord-vtext

t_excel_blkord-matkl

t_excel_blkord-zzbomind

t_excel_blkord-ostat

t_excel_blkord-cmgst

t_excel_blkord-inco1

t_excel_blkord-oqty

t_excel_blkord-pqty

t_excel_blkord-unit

t_excel_blkord-onet

t_excel_blkord-pnet

t_excel_blkord-curr

t_excel_blkord-so_bezei

t_excel_blkord-sg_bezei

t_excel_blkord-bname

t_excel_blkord-contact

t_excel_blkord-telf1

t_excel_blkord-reqqty

t_excel_blkord-reqval

t_excel_blkord-conqty

t_excel_blkord-conval

t_excel_blkord-zzrev

t_excel_blkord-bezei

t_excel_blkord-vgbel

t_excel_blkord-0008text

into it_3

separated by deli.

append it_3.

clear it_3.

endloop.

if h_excel-header = space or h_excel-handle = -1.

  • start Excel

create object h_excel 'EXCEL.APPLICATION'.

endif.

  • PERFORM err_hdl.

*--- get list of workbooks, initially empty

call method of h_excel 'Workbooks' = h_mapl.

  • PERFORM err_hdl.

set property of h_excel 'Visible' = 1.

  • add a new workbook

call method of h_mapl 'Add' = h_map.

  • PERFORM err_hdl.

*GV_SHEET_NAME = '1st SHEET'.

gv_sheet_name = 'Back Orders'.

get property of h_excel 'ACTIVESHEET' = worksheet.

set property of worksheet 'Name' = gv_sheet_name .

*--Formatting the area of additional data 1 and doing the BOLD

call method of h_excel 'Cells' = w_cell1

exporting

#1 = 1

#2 = 1.

call method of h_excel 'Cells' = w_cell2

exporting

#1 = 1

#2 = 50.

call method of h_excel 'Range' = h_cell

exporting

#1 = w_cell1

#2 = w_cell2.

*CALL METHOD OF gs_cells 'Select' .

get property of h_cell 'Font' = gs_font .

set property of gs_font 'Bold' = 1 .

data l_rc type i.

call method cl_gui_frontend_services=>clipboard_export

importing

data = it[]

changing

rc = l_rc

exceptions

cntl_error = 1

error_no_gui = 2

not_supported_by_gui = 3

others = 4.

call method of h_excel 'Cells' = w_cell1

exporting

#1 = 1

#2 = 1.

call method of h_excel 'Cells' = w_cell2

exporting

#1 = 1

#2 = 1.

  • PERFORM err_hdl.

call method of h_excel 'Range' = range

exporting

#1 = w_cell1

#2 = w_cell2.

call method of range 'Select'.

  • PERFORM err_hdl.

call method of worksheet 'Paste'.

  • PERFORM err_hdl.

  • CALL METHOD OF h_excel 'QUIT'.

*GV_SHEET_NAME = '2ND SHEET'.

gv_sheet_name = 'Backlog'.

get property of h_excel 'Sheets' = h_sheet2 .

call method of h_sheet2 'Add' = h_map.

set property of h_map 'Name' = gv_sheet_name .

get property of h_excel 'ACTIVESHEET' = worksheet.

*--Formatting the area of additional data 1 and doing the BOLD

call method of h_excel 'Cells' = w_cell1

exporting

#1 = 1

#2 = 1.

call method of h_excel 'Cells' = w_cell2

exporting

#1 = 1

#2 = 50.

call method of h_excel 'Range' = h_cell

exporting

#1 = w_cell1

#2 = w_cell2.

get property of h_cell 'Font' = gs_font .

set property of gs_font 'Bold' = 1 .

call method cl_gui_frontend_services=>clipboard_export

importing

data = it_2[]

changing

rc = l_rc

exceptions

cntl_error = 1

error_no_gui = 2

not_supported_by_gui = 3

others = 4.

call method of h_excel 'Cells' = w_cell1

exporting

#1 = 1

#2 = 1.

call method of h_excel 'Cells' = w_cell2

exporting

#1 = 1

#2 = 1.

  • PERFORM err_hdl.

call method of h_excel 'Range' = range

exporting

#1 = w_cell1

#2 = w_cell2.

call method of range 'Select'.

  • PERFORM err_hdl.

call method of worksheet 'Paste'.

*GV_SHEET_NAME = '3rd SHEET'.

gv_sheet_name = 'Blocked Orders'.

get property of h_excel 'Sheets' = h_sheet3 .

call method of h_sheet3 'Add' = h_map.

set property of h_map 'Name' = gv_sheet_name .

get property of h_excel 'ACTIVESHEET' = worksheet.

*--Formatting the area of additional data 1 and doing the BOLD

call method of h_excel 'Cells' = w_cell1

exporting

#1 = 1

#2 = 1.

call method of h_excel 'Cells' = w_cell2

exporting

#1 = 1

#2 = 50.

call method of h_excel 'Range' = h_cell

exporting

#1 = w_cell1

#2 = w_cell2.

get property of h_cell 'Font' = gs_font .

set property of gs_font 'Bold' = 1 .

call method cl_gui_frontend_services=>clipboard_export

importing

data = it_3[]

changing

rc = l_rc

exceptions

cntl_error = 1

error_no_gui = 2

not_supported_by_gui = 3

others = 4.

call method of h_excel 'Cells' = w_cell1

exporting

#1 = 1

#2 = 1.

call method of h_excel 'Cells' = w_cell2

exporting

#1 = 1

#2 = 1.

  • PERFORM err_hdl.

call method of h_excel 'Range' = range

exporting

#1 = w_cell1

#2 = w_cell2.

call method of range 'Select'.

  • PERFORM err_hdl.

call method of worksheet 'Paste'.

*--- disconnect from Excel

free object h_zl.

free object h_mapl.

free object h_map.

free object h_excel.

Former Member
0 Kudos
178

Hi,

Look at this code, i have written this like, first it will copy the data into the Clipboard and then it will paste the data into an excel sheet in a single shot. copy this program and paste this, you will know this

*&---------------------------------------------------------------------*
*& Report ZETA_EXCEL_DOWNLOAD *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*


report zeta_excel_download no standard page heading.
include ole2incl .
data: gs_excel type ole2_object ,
gs_wbooklist type ole2_object ,
gs_application type ole2_object ,
gs_wbook type ole2_object ,
gs_activesheet type ole2_object ,
gs_sheets type ole2_object ,
gs_newsheet type ole2_object ,
gs_cell1 type ole2_object ,
gs_cell2 type ole2_object ,
gs_cells type ole2_object ,
gs_range type ole2_object ,
gs_font type ole2_object ,
gs_interior type ole2_object ,
gs_columns type ole2_object ,
gs_charts type ole2_object ,
gs_chart type ole2_object ,
gs_charttitle type ole2_object ,
gs_charttitlechar type ole2_object ,
gs_chartobjects type ole2_object .

data gv_sheet_name(20) type c .
data gv_outer_index like sy-index .
data gv_intex(2) type c .
data gv_line_cntr type i . "line counter
data gv_linno type i . "line number
data gv_colno type i . "column number
data gv_value type i . "data
data text(40).
parameters: p_sheets type i .


*********************************************************************
**           Internal table Declaration
*********************************************************************

data: begin of t_excel occurs 0,

vkorg(20) type c, "Sales Org

vbtyp(20) type c, "Document Category

auart(20) type c, "Document Type

ernam(20) type c, "Created By

vbeln(20) type c, "Document Number

posnr(20) type c, "Item Number

erdat(20) type c, "Created Date

vdatu(20) type c, "Header Requested Delivery Date

reqdat(20) type c, "Request date

condat(20) type c, "Confirm date

lifsk(20) type c, "Header Block

txt30(30) type c, "Order User Status Description

lifsp(20) type c, "Line Block

dispo(20) type c, "MRP Controller

dsnam(20) type c, "MRP Controller Description

vmsta(20) type c, "Material Sales Status

kunnr(20) type c, "Sold To

cname(35) type c, "Sold To Name

regio(20) type c, "State

cufd(10) type c, "CUD

bstnk(20) type c, "PO#

bsark(20) type c, "Ordering Method

matnr(20) type c, "Material

maktx(35) type c, "Material Description

t200(20) type c, "T200

vtext(20) type c, "T200 Description

matkl(20) type c, "Material Group

zzbomind(7) type c, "BOM Indicator

ostat(20) type c, "Order Status

cmgst(20) type c, "CRD

inco1(20) type c, "Incoterms

oqty(20) type c, "Order Quantity

pqty(20) type c, "Open Quantity

unit(20) type c, "UOM

onet(20) type c, "Order Value

pnet(20) type c, "Open Value

curr(20) type c, "Currency key

so_bezei like tvkbt-bezei,"Sales Office

sg_bezei like tvgrt-bezei,"Sales Group

bname(20) type c, "Ordering Party

contact(20) type c, "Contact Name

telf1(20) type c, "Contact telf1

reqqty(20) type c, "Item Request qty

reqval(20) type c, "Item Request value

conqty(20) type c, "Item Confirm qty

conval(20) type c, "Item Confirm value

zzrev(02) type c, "Revenue recognition acceptance

bezei(20) type c, "Revenue recognition text

vgbel(20) type c, "Reference Order for RETURNS

0008text(255) type c, "Internal Order Comment Text

end of t_excel.

data: t_excel_bckord like t_excel occurs 0 with header line,
      t_excel_bcklog like t_excel occurs 0 with header line,
      t_excel_blkord like t_excel occurs 0 with header line.
*********************************************************************


start-of-selection .
do p_sheets times .
*--Forming sheet name
gv_intex = sy-index .
gv_outer_index = sy-index .
*CONCATENATE 'Excel Sheet #' gv_intex INTO gv_sheet_name .
move: 'Sheet No 1' to gv_sheet_name .


*--For the first loop, Excel is initiated and one new sheet is added
if sy-index = 1 .
create object gs_excel 'EXCEL.APPLICATION' .
set property of gs_excel 'Visible' = 1 .
get property of gs_excel 'Workbooks' = gs_wbooklist .
get property of gs_wbooklist 'Application' = gs_application .
set property of gs_application 'SheetsInNewWorkbook' = 1 .
call method of gs_wbooklist 'Add' = gs_wbook .

get property of gs_application 'ActiveSheet' = gs_activesheet .
set property of gs_activesheet 'Name' = gv_sheet_name .

*--For the rest of loops, other sheets are added
else .
get property of gs_wbook 'Sheets' = gs_sheets .
call method of gs_sheets 'Add' = gs_newsheet .
set property of gs_newsheet 'Name' = gv_sheet_name .
endif .
gv_line_cntr = 1 . "line counter

*--Writing some additional data for the title
call method of gs_excel 'Cells' = gs_cell1
exporting
#1 = gv_line_cntr
#2 = 1.
set property of gs_cell1 'Value' = 'Column 1' .


call method of gs_excel 'Cells' = gs_cell1
exporting
#1 = gv_line_cntr
#2 = 2.
set property of gs_cell1 'Value' = 'Column 2' .


call method of gs_excel 'Cells' = gs_cell1
exporting
#1 = gv_line_cntr
#2 = 3.
set property of gs_cell1 'Value' = 'Column 3' .


call method of gs_excel 'Cells' = gs_cell1
exporting
#1 = gv_line_cntr
#2 = 4.
set property of gs_cell1 'Value' = 'Column 4' .

call method of gs_excel 'Cells' = gs_cell1
exporting
#1 = gv_line_cntr
#2 = 5.
set property of gs_cell1 'Value' = 'Column 5' .


call method of gs_excel 'Cells' = gs_cell1
exporting
#1 = gv_line_cntr
#2 = 6.
set property of gs_cell1 'Value' = 'Column 6' .


call method of gs_excel 'Cells' = gs_cell1
exporting
#1 = gv_line_cntr
#2 = 7.
set property of gs_cell1 'Value' = 'Column 7' .


*--Formatting the area of additional data 1 and doing the BOLD
call method of gs_excel 'Cells' = gs_cell1
exporting
#1 = 1
#2 = 1.
call method of gs_excel 'Cells' = gs_cell2
exporting
#1 = gv_line_cntr
#2 = 7.
call method of gs_excel 'Range' = gs_cells
exporting
#1 = gs_cell1
#2 = gs_cell2.
*CALL METHOD OF gs_cells 'Select' .
get property of gs_cells 'Font' = gs_font .
set property of gs_font 'Bold' = 1 .



*--Formatting the area of additional data 2
call method of gs_excel 'Cells' = gs_cell1
exporting
#1 = 1
#2 = 7.
call method of gs_excel 'Cells' = gs_cell2
exporting
#1 = gv_line_cntr
#2 = 7.
call method of gs_excel 'Range' = gs_cells
exporting
#1 = gs_cell1
#2 = gs_cell2.
call method of gs_cells 'Select' .
get property of gs_cells 'Columns' = gs_columns .
call method of gs_columns 'AutoFit' .


*--Putting axis labels
gv_colno = 2 .
gv_line_cntr = gv_line_cntr + 1 .
gv_linno = gv_line_cntr - 1 .


************************************************************************
do 7 times.  " Need to put the loop over here

gv_linno = gv_linno + 1.

call method of gs_excel 'Cells' = gs_cell1
exporting
#1 = gv_linno
#2 = 1.
set property of gs_cell1 'Value' = 'ITAB1-COl1_VALUE1' .

call method of gs_excel 'Cells' = gs_cell1
exporting
#1 = gv_linno
#2 = 2.
set property of gs_cell1 'Value' = 'ITAB1-COl1_VALUE2' .

call method of gs_excel 'Cells' = gs_cell1
exporting
#1 = gv_linno
#2 = 3.
set property of gs_cell1 'Value' = 'ITAB1-COl1_VALUE3' .


call method of gs_excel 'Cells' = gs_cell1
exporting
#1 = gv_linno
#2 = 4.
set property of gs_cell1 'Value' = 'ITAB1-COl1_VALUE4' .

call method of gs_excel 'Cells' = gs_cell1
exporting
#1 = gv_linno
#2 = 5.
set property of gs_cell1 'Value' = 'ITAB1-COl1_VALUE5' .

call method of gs_excel 'Cells' = gs_cell1
exporting
#1 = gv_linno
#2 = 6.
set property of gs_cell1 'Value' = 'ITAB1-COl1_VALUE6' .

call method of gs_excel 'Cells' = gs_cell1
exporting
#1 = gv_linno
#2 = 7.
set property of gs_cell1 'Value' = 'ITAB1-COl1_VALUE7' .

enddo.
************************************************************************


enddo.

Former Member
0 Kudos
178

the solution provided by 'Ramesh Babu' is very good. i'm though not able to award points as its giving some error.. but it surely qualifies for 10 points. thank you all.

Former Member
0 Kudos
178

the program is working fine in our system. I have even implemented the code in one of the client system & everything is going fine...

Former Member
0 Kudos
178

The CLIPBOARD option and the NO FLUSH options are really helpful for cutting down on time.