Делаю все через ДОИ. Сделала группы (hierarchy). Но теперь надо еще чтобы эти группы появлялись свернутыми. Средствами ДОИ я не нашла как сделать, пытаюсь олями.
Записала макрос, который сворачивает все уровни иерархии.
ActiveSheet.Outline.ShowLevels RowLevels:=1
Делаю
Code:
DATA: container TYPE REF TO cl_gui_custom_container,
control TYPE REF TO i_oi_container_control,
document TYPE REF TO i_oi_document_proxy,
spreadsheet TYPE REF TO i_oi_spreadsheet,
error TYPE REF TO i_oi_error,
excelsheet TYPE soi_document_type
VALUE soi_doctype_excel_sheet,
h_excel_obj TYPE cntl_handle.
...
* -- check whether was create Excel object
IF control IS INITIAL.
* -- creating object
CALL METHOD c_oi_container_control_creator=>get_container_control
IMPORTING
control = control
error = error.
* -- create container
CREATE OBJECT container
EXPORTING container_name = 'ZEXCEL'.
* -- object initialisation
CALL METHOD control->init_control
EXPORTING
r3_application_name = 'h_excel'
inplace_enabled = 'X'
inplace_scroll_documents = 'X'
parent = container
register_on_close_event = 'X'
register_on_custom_event = 'X'
no_flush = 'X'
name = 'Excel.Application'
IMPORTING
error = error.
ENDIF.
* -- open document
CALL METHOD control->get_document_proxy
EXPORTING
document_type = excelsheet
IMPORTING
document_proxy = document
error = error.
* -- create document
CALL METHOD document->create_document
EXPORTING
* open_inplace = 'X'
open_inplace = ' '
document_title = 'list name'(h00)
no_flush = 'X'
IMPORTING
error = error.
* -- interface initialisation
CALL METHOD document->get_document_handle
EXPORTING
no_flush = 'X'
IMPORTING
handle = h_excel_obj.
CALL METHOD document->has_spreadsheet_interface
IMPORTING
is_available = has.
IF NOT has IS INITIAL.
CALL METHOD document->get_spreadsheet_interface
IMPORTING
sheet_interface = spreadsheet.
ENDIF.
..... заношу данные
делаю группировки, например
* -- table for hierarchy grouping
DATA:
table TYPE soi_hierarchy_table,
wa LIKE LINE OF table.
wa-mode = 1.
wa-firstline = 1.
DO 5 TIMES.
wa-length = sy-index.
APPEND wa TO table.
ENDDO.
wa-firstline = 7.
DO 5 TIMES.
wa-length = sy-index.
APPEND wa TO table.
ENDDO.
spreadsheet->set_hierarchy_table( no_flush = ' ' table = table[] ).
теперь пытаюсь свернуть - не сворачивает
Code:
DATA: outline TYPE ole2_object,
showlevels TYPE ole2_object,
activesheet TYPE ole2_object.
GET PROPERTY OF h_excel_obj-obj 'ActiveSheet' = activesheet.
GET PROPERTY OF activesheet 'Outline' = outline.
GET PROPERTY OF outline 'ShowLevels' = showlevels.
SET PROPERTY OF showlevels 'RowLevels' = 1.
Что я делаю не так?

Вот, раз никто не ответил, отвечаю сама -
макрос был такой: ActiveSheet.Outline.ShowLevels RowLevels:=1
Code:
CALL METHOD OF h_excel 'ActiveSheet' = ActiveSheet.
CALL METHOD OF ActiveSheet 'Outline' = outline.
CALL METHOD OF outline 'ShowLevels' = showlevels EXPORTING #1 = 1.
RowLevels, оказывается аргумент и задается через EXPORTING. Вот. А я и не знала. А второй аргумент - columnLevels, это типо сворачивание по горизонтали. Правда, в DOI я не видела как свернуть по горизонтали, да и не надо было.