Hi All,
I am using the OLE to download to Excel. My requirement is to set the break page within worksheet. Unfortunately, it does not work properly. I am not sure which part is not right. Here is my program. Can anyone suggest how to do it? Thanks in advance!
REPORT Z_TEST_PAGE_BREAK.
INCLUDE ole2incl.
*handles for OLE objects
DATA: h_excel TYPE ole2_object, " Excel object
h_mapl TYPE ole2_object, " list of workbooks
h_map TYPE ole2_object, " workbook
h_cell TYPE ole2_object, " cell
h_range TYPE ole2_object, " range
h_f TYPE ole2_object. " font
DATA: it_vbak LIKE vbak OCCURS 10 WITH HEADER LINE.
DATA: g_end(4),
g_beg(4),
g_last(4),
l_character(30) VALUE 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
gv_row TYPE char10,
gv_column TYPE i,
l_text(200).
DATA: gc_head_beg TYPE c VALUE 0,
gc_head_end TYPE c VALUE 1.
START-OF-SELECTION.
*read Sales order
SELECT * FROM vbak INTO TABLE it_vbak UP TO 20 ROWS.
*start Excel
CREATE OBJECT h_excel 'EXCEL.APPLICATION'.
SET PROPERTY OF h_excel 'Visible' = 1.
*get list of workbooks, initially empty
CALL METHOD OF
h_excel
'Workbooks' = h_mapl.
*add a new workbook
CALL METHOD OF
h_mapl
'Add' = h_map.
*output column
WRITE: / 'Starting Output'.
gv_row = 20.
LOOP AT it_vbak.
*copy vbak to active EXCEL sheet
gv_row = gv_row + 1.
g_beg = l_character+gv_column(1).
g_end = l_character+gv_column(1).
gv_column = gv_column + 1.
SHIFT gv_row LEFT DELETING LEADING space.
CONCATENATE g_beg gv_row INTO g_beg.
CONCATENATE g_end gv_row INTO g_end.
PERFORM fill_cell USING gv_row gv_column it_vbak-vbeln.
g_beg = l_character+gv_column(1).
g_end = l_character+gv_column(1).
gv_column = gv_column + 1.
PERFORM fill_cell USING gv_row gv_column it_vbak-erdat.
g_beg = l_character+gv_column(1).
g_end = l_character+gv_column(1).
gv_column = gv_column + 1.
PERFORM fill_cell USING gv_row gv_column it_vbak-vbtyp.
g_beg = l_character+gv_column(1).
g_end = l_character+gv_column(1).
gv_column = gv_column + 1.
PERFORM fill_cell USING gv_row gv_column it_vbak-audat.
CLEAR: gv_column, g_beg, g_end.
ENDLOOP.
* Set for Page Break
CALL METHOD OF
h_excel
'HPageBreaks' = h_mapl
EXPORTING
#1 = 1.
SET PROPERTY OF h_mapl 'Location' = h_cell.
LOOP AT it_vbak.
*copy vbak data to active EXCEL sheet
gv_row = gv_row + 1.
g_beg = l_character+gv_column(1).
g_end = l_character+gv_column(1).
gv_column = gv_column + 1.
SHIFT gv_row LEFT DELETING LEADING space.
CONCATENATE g_beg gv_row INTO g_beg.
CONCATENATE g_end gv_row INTO g_end.
PERFORM fill_cell USING gv_row gv_column it_vbak-vbeln.
g_beg = l_character+gv_column(1).
g_end = l_character+gv_column(1).
gv_column = gv_column + 1.
PERFORM fill_cell USING gv_row gv_column it_vbak-erdat.
g_beg = l_character+gv_column(1).
g_end = l_character+gv_column(1).
gv_column = gv_column + 1.
PERFORM fill_cell USING gv_row gv_column it_vbak-vbtyp.
g_beg = l_character+gv_column(1).
g_end = l_character+gv_column(1).
gv_column = gv_column + 1.
PERFORM fill_cell USING gv_row gv_column it_vbak-audat.
CLEAR: gv_column, g_beg, g_end.
ENDLOOP.
GET PROPERTY OF h_excel 'ActiveWorkbook' = h_mapl.
CALL METHOD OF
h_mapl
'SAVEAS'
EXPORTING
#1 = 'C:\TEST1.XLS'
#2 = 1
#3 = 'test'. "password
CALL METHOD OF
h_mapl
'CLOSE'.
CALL METHOD OF
h_excel
'QUIT'.
*&---------------------------------------------------------------------*
*& Form FILL_CELL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_H text
* -->P_1 text
* -->P_0 text
* -->P_IT_VBAK_VBELN text
*----------------------------------------------------------------------*
FORM fill_cell USING p_row
p_column
p_value.
CALL METHOD OF
h_excel
'Cells' = h_cell
EXPORTING
#1 = p_row
#2 = p_column.
SET PROPERTY OF h_cell 'Value' = p_value.
ENDFORM. " FILL_CELL