Текущее время: Вс, июл 20 2025, 12:58

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 37 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 06 2007, 13:45 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Code:
call method ssheet->set_sheet_name
     exporting
        oldname   = lc_old_name
        newname = lc_new_name
     importing
        error   = error
        retcode = retcode.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, фев 07 2007, 09:34 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 09 2007, 15:40
Сообщения: 56
Откуда: Поволжье
TO VGA:
попробовал, заработало. Пасиб! :) Если это первый листто стоит использовать

Code:
call method i_spreadsheet->set_sheet_name
exporting
    oldname = 'Лист1'
    newname = 'Всем привет'.
importing
    error = error
    retcode = retcode.


так как вначале всегда по умолчанию создается "Лист1".

А вот с добавлением проще.
Code:
  call method i_spreadsheet->add_sheet
    exporting
      no_flush = 'X'
      name     = 'Всем привет 2'.

Дерзайте! :P

_________________
Важно качество, а не количество. Ибо стремясь за количесвом можно серьезно пожертвовать качеством ... ;)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, фев 07 2007, 10:55 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Если имя sheet не известно, то сначала стоит получить его
call method i_spreadsheet->GET_ACTIVE_SHEET
а не вбивать в программу констатные значения.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 08 2007, 14:14 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 16 2007, 19:00
Сообщения: 168
Откуда: город
Согласен с vga. А если будет английская версия excel? Походу там будет что-то типа 'Sheet1', а не 'Лист1',поэтому использование get_active_sheet обязательно!

Вот еще код в случае использования OLE:
Code:
data: ls_excel type ole2_object,
      ls_sheet type ole2_object.

  CALL METHOD OF ls_excel 'WORKSHEETS' = ls_sheet
  EXPORTING
    #1 = 1. "первая по счету страница
*  CALL METHOD OF ls_sheet 'ACTIVATE'.
  SET PROPERTY OF ls_sheet 'NAME' = 'Items Overview'.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 08 2007, 16:50 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 06 2005, 17:52
Сообщения: 559
А может кто-то подсказать про правильное использование no_flush = 'X' ? Я вот пробовал его ставить везде,а на методе i_spreadsheet->get_dimension - выпадает в дамп "FLUSH_FAILED". Я не понял, что, методы которые возвращают какие-то значения, кроме кодов возврата и ошибки, нельзя вызывать с no_flush?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 08 2007, 17:23 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Правильно понимаете. No flush - это значит накопить все команды пачкой, а потом отправить за раз, чем экономится время.
Получить значение, не отправляя запроса нельзя.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, фев 09 2007, 09:40 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 09 2007, 15:40
Сообщения: 56
Откуда: Поволжье
Есть еще такой вот вопросик.

Все классно - сделал пару листов - бухнул туда что надо, но хотелось бы завершить красиво. А именно сохранить файлик под определенным именем и закрыть Excel.

Как это сделать используя методы DOI ? :?:

_________________
Важно качество, а не количество. Ибо стремясь за количесвом можно серьезно пожертвовать качеством ... ;)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, фев 09 2007, 11:58 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Много раз уже обсуждалось на форуме. Ключевые слова для поиска:
excel quit close


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, фев 09 2007, 12:23 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 06 2005, 17:52
Сообщения: 559
Про no_flush я, значит, правильно догадался. Но все равно не пойму, почему опр. методы не дает с ним провести. Например, SET_RANGES_DATA - там ничего не возвращается, а не дает. В дамп. А сам сабж (insert_one_table) - дает. В чем прикол?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, фев 09 2007, 12:32 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, авг 22 2005, 14:50
Сообщения: 1285
Откуда: с работы
Пол: Женский
http://help.sap.com/saphelp_erp2004/helpdata/en/21/b53138e1ba11d2bdbe080009b4534c/frameset.htm


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, фев 09 2007, 15:21 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 06 2005, 17:52
Сообщения: 559
Эта ссылка на хелп мне? Ничего по моему вопросу не нашел.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, фев 16 2007, 09:43 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 09 2007, 15:40
Сообщения: 56
Откуда: Поволжье
vga написал(а):
Много раз уже обсуждалось на форуме. Ключевые слова для поиска:
excel quit close


Просмотрел все что можно было на форуме. Никто не писал про сохранение и закрытие через DOI. Обычно пишут про ОЛЕ, а нем уже разобрался. :?

Так все-таки как красиво сохранить и закрыть EXccel средставми DOI?
Может можно указать где и как сохранить? :?:

_________________
Важно качество, а не количество. Ибо стремясь за количесвом можно серьезно пожертвовать качеством ... ;)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, фев 16 2007, 13:41 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 16 2007, 19:00
Сообщения: 168
Откуда: город
Ну по идее можно. Рабочего кода нет, но присмотритесь к этим методам интерфейса i_oi_document_proxy:
create_document (open_document)
save_as (save_document_to_url)
close_document
Вроде ничего сложного...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, фев 16 2007, 15:19 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 09 2007, 15:40
Сообщения: 56
Откуда: Поволжье
Пасиб :) В принципе во всем разобрался.... Щас тестю програмку, кодик позже выложу, там вроде все это будет... :D

_________________
Важно качество, а не количество. Ибо стремясь за количесвом можно серьезно пожертвовать качеством ... ;)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, апр 03 2007, 15:26 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 09 2007, 15:40
Сообщения: 56
Откуда: Поволжье
Simmike написал(а):
Пасиб :) В принципе во всем разобрался.... Щас тестю програмку, кодик позже выложу, там вроде все это будет... :D


Вот выкладываю кодик... :oops:
Выгружает в Эксель табличку с 10-столбцами. Есть пармеитры по листам, имени файла и др

Code:
report z__my_doi .

data: i_control  type ref to i_oi_container_control.
data: i_document type ref to i_oi_document_proxy.
data: gr_container type ref to cl_gui_custom_container.

data: begin of gt_test occurs 0,
  st1(132),  st2(132),  st3(132),  st4(132),  st5(132),  st6(132),
  st7(132),  st8(132),  st9(132),  st0(132),
end of gt_test.

data: kk(2). " счетчик листов

data: name_old(20).
data: name_new(20).

parameter: f_name(30) default 'c:/my_excel.xls'. " имя файлика
parameter: n_list(15) default 'Мой Лист №'. " название листа (ов)
parameter: k_list(2) type n default 1. " kol-во листов

parameter: save as checkbox. " параметр сохранения файла
parameter: close as checkbox. " параметр закрытия файла и сохранения

*&---------------------------------------------------------------------*
start-of-selection.
perform preparation.
perform excel_processing.

*&---------------------------------------------------------------------*
*&      Form  preparation
form preparation.
* Creating the instance i_control
  call method c_oi_container_control_creator=>get_container_control
    importing
      control = i_control.

* Initializing control
  call method i_control->init_control
    exporting
      r3_application_name = 'R/3 application'
      parent              = gr_container
      inplace_enabled     = ' '
      no_flush            = ' '.
endform.                    "preparation

* тупо заполняю внутр табличку....
form full_int_tab.
do 10 times.
  gt_test-st1 = 'abcdefg'.  gt_test-st2 = '10.07'.  gt_test-st3 = '11,01'.
  gt_test-s4 = '1.03'.  gt_test-st5 = 'hij6'.  gt_test-st6 = 'hijklmn12318'.
  gt_test-st7 = 'hijklmn65'.  gt_test-st8 = 'hijklmn'.  gt_test-st9 = 'hijk2'. 
  gt_test-st0 = 'hijklmer676n'.  append gt_test.
enddo.

clear gt_test.
do 10 times.  append gt_test.  enddo.

do 10 times.
  gt_test-st1 = 'abcdefg'.  gt_test-st3 = 'hijklmn3'.  gt_test-st6 = 'hi488'.
  gt_test-st8 = 'hiваывn'.  gt_test-st0 = 'hijk76n'.  append gt_test.
enddo.
endform.

*&---------------------------------------------------------------------*
*&      Form  excel_processing
form excel_processing.
  data i_spreadsheet type ref to i_oi_spreadsheet.
  data gt_ftab type soi_fields_table with header line.
  data: error(1).

  call method i_control->get_document_proxy
    exporting
      document_type      = 'Excel.Sheet.8'
      register_container = 'X'
    importing
      document_proxy     = i_document.

  call method i_document->create_document
    exporting
      document_title = 'выгрузке из SAP'
      open_inplace = ' '.

  call method i_document->get_spreadsheet_interface
    importing
      sheet_interface = i_spreadsheet.

*** заполняем внутр табл
  refresh gt_test.  perform full_int_tab.
****

  call function 'DP_GET_FIELDS_FROM_TABLE'
    tables
      data   = gt_test[]
      fields = gt_ftab[].

* первый лист
  call method i_spreadsheet->insert_range_dim
    exporting
      no_flush = 'X'
      name     = 'tab1'
      left     = 1
      top      = 1
      rows     = 2
      columns  = 1.

call method i_spreadsheet->GET_ACTIVE_SHEET
  importing
     SHEETNAME = name_old.

kk = '01'. concatenate n_list kk into name_new.

call method i_spreadsheet->set_sheet_name
  exporting
   oldname = name_old
   newname = name_new.

  call method i_spreadsheet->insert_one_table
    exporting
      data_table   = gt_test[]
      fields_table = gt_ftab[]
      rangename    = 'tab1'
      wholetable   = 'X'       " Х - чтобы количество сторок не огранич
      no_flush     = 'X'.

  k_list = k_list - 1.  if k_list < 0. k_list = 0. endif.
** 2ой и последующие листы....
  do k_list times.
    perform full_int_tab.
    kk = kk + 1.
    concatenate n_list kk into name_new.

    call method i_spreadsheet->add_sheet
     exporting
      no_flush = 'X'
      name     = name_new.

    call function 'DP_GET_FIELDS_FROM_TABLE'
     tables
       data   = gt_test[]
       fields = gt_ftab[].

    call method i_spreadsheet->insert_range_dim
     exporting
       no_flush = 'X'
       name     = 'ta1'
       left     = 1
       top      = 1
       rows     = 2
       columns  = 1.

    call method i_spreadsheet->insert_one_table
      exporting
       data_table   = gt_test[]
       fields_table = gt_ftab[]
       rangename    = 'ta1'
       wholetable   = 'X'  " Х - чтобы количество сторок не огранич
       no_flush     = 'X'.
  enddo.
  if save = 'X'.
    call method i_document->save_as
      exporting
        file_name = f_name.
  endif.
  if close = 'X'.
    call method i_document->save_as
      exporting
        file_name = f_name.

    call method i_document->close_document
      exporting
       do_save = 'X'
       no_flush = 'X'.
  endif.
  WRITE 'Excel document has been created...'.
endform.                    "excel_processing


Не разобрался только как красиво потом после выгрузки в сам SAP вернуться и там что-то на экран вывести.... :?:

_________________
Важно качество, а не количество. Ибо стремясь за количесвом можно серьезно пожертвовать качеством ... ;)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 37 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB