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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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