Текущее время: Пт, апр 19 2024, 15:27

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


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

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


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

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