Текущее время: Чт, май 23 2024, 11:00

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 2409 ]  На страницу Пред.  1 ... 41, 42, 43, 44, 45, 46, 47 ... 161  След.
Автор Сообщение
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Сб, сен 11 2010, 15:23 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июл 16 2010, 09:57
Сообщения: 106
Откуда: СПб
Пол: Мужской
Какова скорость вывода в Excel c помощью этого ФМ? Например, вывод массива данных из 80 полей и 15 тысяч строк сколько займёт ? Поля в основном текстовые, длиной в среднем 10 символов.

Может, где-то в глубине этого обсуждения о скорости упоминается, но прочитать сейчас 43 страницы сообщений нет времени, но позже обязательно это сделаю.

Спасибо.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Сб, сен 11 2010, 18:19 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Gustav написал:
Какова скорость вывода в Excel c помощью этого ФМ? Например, вывод массива данных из 80 полей и 15 тысяч строк сколько займёт ? Поля в основном текстовые, длиной в среднем 10 символов.


Это зависит от способа вывода. Во-первых, вывод может работать полностью через OLE, или через специальный макрос, написанный для ускорения.

Также для Excel есть 3 режима:
- VAL_TYPE = space - вывод по одному значению, максимально гибкий, но самый медленный, ибо бантики требуют жертв.
- VAL_TYPE = 'R' - (Row) вывод построчно, за один раз выводится строка целиком, значения в передаваемой переменной VALUE разделены символом табуляции (код 09). Несколько ускоряет вывод, но и ограничивает возможности - значения ложатся в ячейки подряд.
- VAL_TYPE = 'T' - (Table) вывод таблицы целиком, строки (как с типом R) разделяются символами перевода строки (код 0D0A). Максимальная скорость вывода, минимальные возможности оформления.

Для упрощения вывода внутренней таблицы есть дополнительный функциональный модуль ZWWW_PREPARE_TABLE, он уложит её (внутр. табл.) в необходимый формат (описанный выше - space, R или T) для передачи модулю вывода ZWWW_OPENFORM.

В свое время я делал замеры, выводил около 2000 строк с 30-ю полями, в режиме максимальной оптимизации. Время вывода составляло 6-10 сек. Но скорость зависит от множества причин:
- производительности и версии самой SAP-системы,
- пропускной способности сети,
- производительности ПК пользователя,
- версии MS Office (2007-заметно медленне, чем 2000 и 2003),
- антивирусов (кто то жаловался, что пришлось отключить проверку файлов MS Office),
- версии SAP GUI,
- и т.д.

Лучший способ - самим попробовать! Можно на прилагаемом примере ZWWW_ALV_GRID, который делает выборку из любой таблицы БД с ограничением необходимого кол-ва строк (по умолчанию 1000, в вашем случае 15000), отображает результат в ALV GRID, а потом кнопкой печати можно вывести в шаблон Excel.

p.s.
Вообще данную разработку я позиционирую для вывода отчетов в заданные формуляры, а не для передачи данных. Вряд ли можно считать информативным отчет в 15000 строк, т.к. никто не будет его весь "крыжить". :)
Выгрузить большой объем данных проще в виде текстового файла с разделителями через модуль GUI_DOWNLOAD. Присвоив ему расширение XLS его легко можно открыть в Excel.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пн, сен 13 2010, 16:01 
Ассистент
Ассистент

Зарегистрирован:
Чт, окт 05 2006, 17:37
Сообщения: 40
Besa написал:
DFH, у Вас какой офис? Через какой макрос Вы защитили книгу от просмотра?


2003, но это неважно. Добавьте в свой шаблон макрос, подобный нижеприведённому, и перед запуском экпорта занесите для свободной ячейки значение пароля в массив it_val. Установите макрос для выбранной ячейки setline 'B1' '' '' 'M' 'SetPassword'.
В этой же процедуре или другим макросом в этом же шаблоне не забудьте убрать пароль из этой ячейки.

Цитата:
Sub SetPassword()

Dim password As String

Range("B1").Select
password = Range("B1").Value
ActiveWorkbook.password = password
ActiveWorkbook.Save

End Sub

_________________
4.6C


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пн, сен 13 2010, 16:21 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
DFH написал(а):
...2003, но это неважно. Добавьте в свой шаблон макрос, подобный нижеприведённому, и перед запуском экпорта занесите для свободной ячейки значение пароля в массив it_val. Установите макрос для выбранной ячейки setline 'B1' '' '' 'M' 'SetPassword'.
В этой же процедуре или другим макросом в этом же шаблоне не забудьте убрать пароль из этой ячейки.

Хм, теперь кажется и я что то понял... А параметр модуля PROTECT = space не пробовали делать? По умолчанию PROTECT = 'X', подозреваю, что он просто перебивает вашу установку.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пн, сен 13 2010, 17:12 
Ассистент
Ассистент

Зарегистрирован:
Чт, окт 05 2006, 17:37
Сообщения: 40
Parazit написал:
DFH написал(а):
...2003, но это неважно. Добавьте в свой шаблон макрос, подобный нижеприведённому, и перед запуском экпорта занесите для свободной ячейки значение пароля в массив it_val. Установите макрос для выбранной ячейки setline 'B1' '' '' 'M' 'SetPassword'.
В этой же процедуре или другим макросом в этом же шаблоне не забудьте убрать пароль из этой ячейки.

Хм, теперь кажется и я что то понял... А параметр модуля PROTECT = space не пробовали делать? По умолчанию PROTECT = 'X', подозреваю, что он просто перебивает вашу установку.


Запускаю с PROTECT = ''. У нас используется более старая версия ФМ. Там PROTECT по коду, если не ошибаюсь, защищает файл только от редактирования. Тем более свой пароль не передашь. А защита нужна от просмотра даных.

_________________
4.6C


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пн, сен 13 2010, 17:27 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
DFH написал(а):
Запускаю с PROTECT = ''. У нас используется более старая версия ФМ. Там PROTECT по коду, если не ошибаюсь, защищает файл только от редактирования. Тем более свой пароль не передашь. А защита нужна от просмотра даных.

Так я об этом и говорю, отключите мою защиту (т.е. PROTECT = ''), и включите свой макрос.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пн, сен 13 2010, 18:20 
Ассистент
Ассистент

Зарегистрирован:
Чт, окт 05 2006, 17:37
Сообщения: 40
Parazit написал:
DFH написал(а):
Запускаю с PROTECT = ''. У нас используется более старая версия ФМ. Там PROTECT по коду, если не ошибаюсь, защищает файл только от редактирования. Тем более свой пароль не передашь. А защита нужна от просмотра даных.

Так я об этом и говорю, отключите мою защиту (т.е. PROTECT = ''), и включите свой макрос.


Так с макросом проблем нет, всё работает, пароль устанавливается (У меня готовятся многостраничные отчёты, защищаются сразу после формирования паролем, и передаются по почте). Просто мне показалось, что разумно снабдить Ваш ФМ ещё параметром, через который передаётся пользовательский пароль для защиты файла от просмотра, и чтобы этот пароль устанавливался через OLE, а не макросом в шаблоне с последующим стиранием пароля, переданного через ячейку.
Я попробовал это сделать сам, изменив ФМ, и вроде пароль устанавливается (когда смотрю файл сразу после первой загрузки - вижу звёздочки на соответствующей закладке в опциях Экселя), но в итоге файл остаётся незащищённым.

_________________
4.6C


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Ср, сен 15 2010, 16:44 
Ассистент
Ассистент

Зарегистрирован:
Чт, окт 05 2006, 17:37
Сообщения: 40
DFH написал(а):
Так с макросом проблем нет


Сегодня попробовал последнюю версию ФМ 2.7 - пароль на файл макросом в шаблоне устанавливается, но сам файл после ввода пароля не открывается - неверный пароль. Старый вариант работает без проблем. В чём может быть засада?

_________________
4.6C


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Ср, сен 15 2010, 17:37 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
DFH написал(а):
DFH написал(а):
Так с макросом проблем нет


Сегодня попробовал последнюю версию ФМ 2.7 - пароль на файл макросом в шаблоне устанавливается, но сам файл после ввода пароля не открывается - неверный пароль. Старый вариант работает без проблем. В чём может быть засада?

Пришлите мне шаблон и содержимое IT_VALUES, я посмотрю. Мыло: misterxyz (собака) mail (точка) ru

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Чт, сен 16 2010, 15:19 
Ассистент
Ассистент

Зарегистрирован:
Чт, окт 05 2006, 17:37
Сообщения: 40
Parazit написал:
DFH написал(а):
Сегодня попробовал последнюю версию ФМ 2.7 - пароль на файл макросом в шаблоне устанавливается, но сам файл после ввода пароля не открывается - неверный пароль. Старый вариант работает без проблем. В чём может быть засада?

Пришлите мне шаблон и содержимое IT_VALUES, я посмотрю. Мыло: misterxyz (собака) mail (точка) ru


У меня оказалась ошибка: случайно закомментарил при переходе на новую версию в одном месте CLEAR it_value и в val_type ячейки, в которую записывался пароль попадало 'M' от предыдущей инициализации строки it_value (setline 'PASS' '' '' 'M' 'SetPassword'). Старая версия это игнорировала, если var_name = '', поэтому всё отрабатывало. А в новой версии из-за ошибочного val_type ячейка в шаблоне не заполнялась значением из переданного it_val и файл паролился тем, что было в шаблоне.

P.S. Но замечен такой глюк: При формировании файла без просмотра в Excele ( CLOSE_FORM = 'X' ) его окошко таки на мгновение появляется с отображением
содержимого и тут же закрывается. На старой версии такого не отмечено (я там в своё время сам добавлял закрытие по параметру и освобождение OLE объектов).

_________________
4.6C


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пт, сен 17 2010, 19:18 
Ассистент
Ассистент

Зарегистрирован:
Чт, окт 05 2006, 17:37
Сообщения: 40
DFH написал(а):
P.S. Но замечен такой глюк: При формировании файла без просмотра в Excele ( CLOSE_FORM = 'X' ) его окошко таки на мгновение появляется с отображением
содержимого и тут же закрывается. На старой версии такого не отмечено (я там в своё время сам добавлял закрытие по параметру и освобождение OLE объектов).
.

Автор, прокомментируйте, пожалуйста. У меня MSOffice 2003.
У кого-нибудь ещё имеется подобная проблема на версии 2.7?

_________________
4.6C


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пт, сен 17 2010, 22:10 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
DFH написал(а):
DFH написал(а):
P.S. Но замечен такой глюк: При формировании файла без просмотра в Excele ( CLOSE_FORM = 'X' ) его окошко таки на мгновение появляется с отображением
содержимого и тут же закрывается. На старой версии такого не отмечено (я там в своё время сам добавлял закрытие по параметру и освобождение OLE объектов).
.

Автор, прокомментируйте, пожалуйста. У меня MSOffice 2003.
У кого-нибудь ещё имеется подобная проблема на версии 2.7?

Вообще то я не задавался такой целью, но можно доработать код, и вставить проверку: если CLOSE_FORM = 'X', то не выполнять Set property of App 'Visible' = 1.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Вт, сен 28 2010, 10:36 
Специалист
Специалист

Зарегистрирован:
Вт, сен 15 2009, 16:41
Сообщения: 201
Пол: Мужской
Добрый день Parazit!
У меня есть два вопроса, если не сочтете за трудность, просвятите плиз.
1. Вот есть например формуляр, в нем например две строки с двумя типами данных и на каждый тип данных два итога. Бывают такие отчеты в которых например данных первого типа нет, и надо скрыть строку с итогами по этому типу. Я пока делаю ее пустой и все равно вывожу по порядку, если ее никак не обрабатывать то она выведется в конце отчета с метками как задано в разработке формуляра.
обрабываю так:
Code:
* Макрос
define setline.
    wa_val-var_num = &1.
    wa_val-val_type  = &2.
    wa_val-var_name = &3.
    wa_val-find_text = &4.
    wa_val-value = &5.
    append wa_val to it_val.
end-of-definition.
Строка с данными первого типа
    if ls_itlo-key3 = 'M'.
    "setline num 'V' 'HEAD' '' 'LP_M'.
    setline num '' 'LP_M' 'LP_M_ZZMATKL' ls_itlo-zzmatkl.
    setline num '' 'LP_M' 'LP_M_RESOU' ls_itlo-resou.
    setline num '' 'LP_M' 'LP_M_LTEXT' ls_itlo-ltext.
    setline num '' 'LP_M' 'LP_M_ZZCENA' ls_itlo-zzcena.
    setline num '' 'LP_M' 'LP_M_ZZMENGE' ls_itlo-zzmenge.
    setline num '' 'LP_M' 'LP_M_MEEHT' mseh3.
    setline num '' 'LP_M' 'LP_M_ZZWERTA' ls_itlo-zzwerta.
    setline num '' 'LP_M' 'LP_M_ZZWERTV' ls_itlo-zzwertv.
    setline num '' 'LP_M' 'LP_M_ZZWERTF' ls_itlo-zzwertf.
    cryz_mat = 'X'.
    endif.
Строка с данными второго типа
     if ls_itlo-key3 = 'E' and ls_itlo-key5 = 'E'.
    setline num 'V' 'LP_M' '' 'LP_E'.
    setline num '' 'LP_M' 'LP_E_ZZMATKL' ls_itlo-zzmatkl.
    setline num '' 'LP_M' 'LP_E_RESOU' ls_itlo-resou.
    setline num '' 'LP_M' 'LP_E_LTEXT' ls_itlo-ltext.
    setline num '' 'LP_M' 'LP_E_ZZCENA' ls_itlo-zzcena.
    setline num '' 'LP_M' 'LP_E_ZZMENGE' ls_itlo-zzmenge.
    setline num '' 'LP_M' 'LP_E_MEEHT' mseh3.
    setline num '' 'LP_M' 'LP_E_ZZWERTA' ls_itlo-zzwerta.
    setline num '' 'LP_M' 'LP_E_ZZWERTV' ls_itlo-zzwertv.
    setline num '' 'LP_M' 'LP_E_ZZWERTF' ls_itlo-zzwertf.
    cryz_us = 'X'.
    endif.
*Подитоги по типам если таковые строки по типам были
  at end of key3.
            sum.
          num = num + 1.
          if ls_itlo-key3 = 'M'.
          setline num 'V' 'LP_M' '' 'L3_M'.
          setline num '' 'LP_M' 'L3_M_ZZMENGE' ls_itlo-zzmenge.
          setline num '' 'LP_M' 'L3_M_ZZWERTA' ls_itlo-zzwerta.
          setline num '' 'LP_M' 'L3_M_ZZWERTV' ls_itlo-zzwertv.
          setline num '' 'LP_M' 'L3_M_ZZWERTF' ls_itlo-zzwertf.
          cryz_mat = 'X'. ставлю флаг что были, может зря, он же стоит при выводе строки
          endif.
          if ls_itlo-key3 = 'E'.
          setline num 'V' 'LP_M' '' 'L3_E'.
          setline num '' 'LP_M' 'L3_E_ZZWERTA' ls_itlo-zzwerta.
          setline num '' 'LP_M' 'L3_E_ZZWERTV' ls_itlo-zzwertv.
          setline num '' 'LP_M' 'L3_E_ZZWERTF' ls_itlo-zzwertf.
          cryz_us = 'X'. ставлю флаг что были, может зря, он же стоит при выводе строки
          endif.
          endat.
*Теперь ещи итоги
          at end of key2.
            sum.
          num = num + 1.
          if cryz_mat = ''. Здесь проверяю флаг, если он не Х значит данных не было, выожу пустустроку
          setline num 'V' 'LP_M' '' 'L3_M'.
          setline num '' 'LP_M' 'L3_M_ZZMENGE' ''.
          setline num '' 'LP_M' 'L3_M_ZZWERTA' ''.
          setline num '' 'LP_M' 'L3_M_ZZWERTV' ''.
          setline num '' 'LP_M' 'L3_M_ZZWERTF' ''.
          cryz_mat = ''.
          endif.
          if cryz_us = ''.  Здесь проверяю флаг, если он не Х значит данных не было, выожу пустустроку
          num = num + 1.
          setline num 'V' 'LP_M' '' 'L3_Е'.
          setline num '' 'LP_M' 'L3_Е_ZZWERTA' ''.
          setline num '' 'LP_M' 'L3_Е_ZZWERTV' ''.
          setline num '' 'LP_M' 'L3_Е_ZZWERTF' ''.
          cryz_us = ''.
          endif.

В формуляре строки даннах имеют метку строки
Для М = LP_M
для Е = LP_Е
Строки итогов имеют метки
Для М = L3_М
Для Е = L3_Е
ТАк вот вопрос если не явно прописан, как например подавить L3_M или L3_E если по ним не было строк с данными?
2. Вопрос второй.
Надо разработать выгрузку в эксель по налоговой декларации на 10 листах. Как известно там на каждый символ приходится одна ячейка (вернее диапазон ячеек, объедененный в одну ячейку), можно ли при помощи вашей функции обращаться к таким ячейкам? И можно ли привести пример кода где будет обращение например к листу 1 и ячейке С2 и потом к листу 2 и ячейке так же С2. Просто создавать метку на каждую ячейку я сума сойду, я решил циклом перебрать все литсты и все ячейки в каждом листе и нужные мне заполнить.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Вт, сен 28 2010, 11:01 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Я конечно не свЯтой, но просвЕтить попробую! :)

rstiv написал:
ТАк вот вопрос если не явно прописан, как например подавить L3_M или L3_E если по ним не было строк с данными?

Примерно так:
Setval 'L3_M' '' '' 'D' ''.


rstiv написал:
И можно ли привести пример кода где будет обращение например к листу 1 и ячейке С2 и потом к листу 2 и ячейке так же С2. Просто создавать метку на каждую ячейку я сума сойду, я решил циклом перебрать все литсты и все ячейки в каждом листе и нужные мне заполнить.

Примерно так:
Setval 'Лист1!C2'.......
Это стандартный синтаксис Excel для адресации ячеек через объект Range

p.s.
в объединенные ячейки инфу можно записать по адресу первой ячейки группы

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Вт, сен 28 2010, 11:09 
Специалист
Специалист

Зарегистрирован:
Вт, сен 15 2009, 16:41
Сообщения: 201
Пол: Мужской
мдя, дольше спрашивал...
СПАСИБО!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2409 ]  На страницу Пред.  1 ... 41, 42, 43, 44, 45, 46, 47 ... 161  След.

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


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

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


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

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