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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Дарю народу инклуд ZDOI_UTILS (для работы с Excel)
СообщениеДобавлено: Вс, окт 17 2010, 20:22 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1554
Откуда: Москва
Serge69 написал:
И откопал в какой то книжке, какой не помню, что саповский оле - это не что иное как обычные rfc-вызовы.
т.е. грубо говоря CALL FUNCTION ..... DESTINATION 'SAPGUI'.


Нет.
GUI общается с SAP-сервером посредством RFC, а с операционной системой на локальной машине посредством OLE.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дарю народу инклуд ZDOI_UTILS (для работы с Excel)
СообщениеДобавлено: Вс, окт 17 2010, 23:17 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1554
Откуда: Москва
Parazit написал:
111 написал(а):
Каким образом вы "разножаете" первую строку-образец требуемое количество раз за одну итерацию?


На пальцах так:
- Выбираем строку образец, например Item;
- Копируем;
- Выбираем необходимое количество строк, куда размножить, например Target;
- Выполняем - "Добавить скопированные ячейки".

Записанный макрос выглядит так:
Code:
    Application.Goto Reference:="Item"
    Selection.Copy
    Application.Goto Reference:="Target"
    Selection.Insert Shift:=xlDown


Ну количество итераций вставки как раз останется тем же, т.е. 99.999 на 100.000 записей (если не перенести и сюда мой алгоритм).
Другое дело, что обработка переносится целиком в Excel, и убираются итерации коммуникации АВАР-Ехсеl. Понятно, что это несколько ускорит обработку.
Минус в том, что необходимо утяжелять Excel-шаблон макросом .
Я бы тогда уж сделал бы так, что в случае, если макрос есть - используем его; нет макроса - используем АВАР-обработку.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дарю народу инклуд ZDOI_UTILS (для работы с Excel)
СообщениеДобавлено: Вт, окт 19 2010, 09:49 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
111 написал(а):
Ну количество итераций вставки как раз останется тем же, т.е. 99.999 на 100.000 записей (если не перенести и сюда мой алгоритм).
Другое дело, что обработка переносится целиком в Excel, и убираются итерации коммуникации АВАР-Ехсеl. Понятно, что это несколько ускорит обработку.
Минус в том, что необходимо утяжелять Excel-шаблон макросом .
Я бы тогда уж сделал бы так, что в случае, если макрос есть - используем его; нет макроса - используем АВАР-обработку.

Если область Target содержит 100000 строк, то итераций ровно =1. Макрос я привел только для примера, можете то же самое реализовать через DOI или OLE.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дарю народу инклуд ZDOI_UTILS (для работы с Excel)
СообщениеДобавлено: Вт, окт 19 2010, 23:52 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1554
Откуда: Москва
Parazit написал:
Если область Target содержит 100000 строк, то итераций ровно =1. Макрос я привел только для примера, можете то же самое реализовать через DOI или OLE.

Понял, сорри, тупил, плюс плохо знал эту функцию Excel'я.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дарю народу инклуд ZDOI_UTILS (для работы с Excel)
СообщениеДобавлено: Ср, окт 20 2010, 08:36 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
2 Parazit: способ размножения ячеек хорош, но у меня не получилось при нем сохранить суммирование. Т.е. Если есть 1 ячейка-шаблон, которую я хочу размножить на 10 ячеек, под ней - итоговая строка. Когда размножаю ячейку на нужное количество строк - строка суммы не корректно преобразуется на мой взгляд. Т.е. исходное значение ячейки суммы было =СУММ(R1C:R[-1]C), а после клонирования оно становится =СУММ(R1C:R[-10]C). Т.е. суммовая ячейка по прежнему равна сумме только исходной ячейки-шаблона. Может быть это как-то можно исправить?

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дарю народу инклуд ZDOI_UTILS (для работы с Excel)
СообщениеДобавлено: Ср, окт 20 2010, 09:54 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Кодер написал(а):
2 Parazit: способ размножения ячеек хорош, но у меня не получилось при нем сохранить суммирование. Т.е. Если есть 1 ячейка-шаблон, которую я хочу размножить на 10 ячеек, под ней - итоговая строка. Когда размножаю ячейку на нужное количество строк - строка суммы не корректно преобразуется на мой взгляд. Т.е. исходное значение ячейки суммы было =СУММ(R1C:R[-1]C), а после клонирования оно становится =СУММ(R1C:R[-10]C). Т.е. суммовая ячейка по прежнему равна сумме только исходной ячейки-шаблона. Может быть это как-то можно исправить?

Я с суммами поступаю так. Создаю строку шаблон Item, под ней пустую строку, еще ниже строку Total для подсчета сумм, которая захватывает Item и пустую строку (пустую можно просто скрыть). Тогда вставка строк корректно раздвигает область действия Total.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дарю народу инклуд ZDOI_UTILS (для работы с Excel)
СообщениеДобавлено: Чт, окт 21 2010, 09:33 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1554
Откуда: Москва
Кодер написал(а):
2 Parazit: способ размножения ячеек хорош, но у меня не получилось при нем сохранить суммирование. Т.е. Если есть 1 ячейка-шаблон, которую я хочу размножить на 10 ячеек, под ней - итоговая строка. Когда размножаю ячейку на нужное количество строк - строка суммы не корректно преобразуется на мой взгляд. Т.е. исходное значение ячейки суммы было =СУММ(R1C:R[-1]C), а после клонирования оно становится =СУММ(R1C:R[-10]C). Т.е. суммовая ячейка по прежнему равна сумме только исходной ячейки-шаблона. Может быть это как-то можно исправить?

Можно еще формулы задавать напрямую, с помощью метода WRITE_VALUE .
Например:
Code:
      CALL METHOD gr_excel->write_value
        EXPORTING
          p_rownr = l_row
          p_colnr = l_col
          p_value = '=SUMM(A2:A13)'.

Можно заполнить сразу всю строку с суммами, с помощью WRITE_STATIC_TABLE (передавая туда внутреннюю таблицу с одной записью).
А можно передавать не формулы, а тупо подсчитать в АВАРе и передать готовые числа с помощью этого же метода. Одним словом, как хотите.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дарю народу инклуд ZDOI_UTILS (для работы с Excel)
СообщениеДобавлено: Пн, окт 25 2010, 10:05 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1554
Откуда: Москва
В общем, ничего менять пока не буду, пусть пока так, как есть, остается. И так быстро - ~40 тыс. строк, или ~1000 листов, меньше чем за минуту - отрабатывает.
А то начнешь переделывать, еще какие-нибудь нюансы неожиданные выплывут.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дарю народу инклуд ZDOI_UTILS (для работы с Excel)
СообщениеДобавлено: Вт, янв 25 2011, 13:28 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1554
Откуда: Москва
При причине крайней редкости использования READ_TABLE, долгое время был незамеченным баг с задвооением строк на границе каждых 50 строк.
Исправленная версия :
Code:
**********************************************************************
  METHOD read_table .
**********************************************************************
*                       IMPORTING
*                                 p_start_rownr TYPE i
*                                 p_start_colnr TYPE i
*                                 p_end_colnr   TYPE i
*                        CHANGING
*                                 pt_data TYPE STANDARD TABLE .

    FIELD-SYMBOLS: <l_field> TYPE ANY,
                   <l_line>  TYPE ANY .
    DATA: lc_ecolnr(4) TYPE c,
          l_old_rownr(4),
          l_colnr TYPE i,
          l_startrow TYPE i,
          l_colcount TYPE i,
          l_ftype,
          l_is_alles,
          lr_line TYPE REF TO data,
          l_is_initial(1) TYPE c.

    l_startrow = p_start_rownr .

    l_colcount = p_end_colnr - p_start_colnr + 1 .
    WRITE l_colcount TO lc_ecolnr LEFT-JUSTIFIED .

    CREATE DATA lr_line LIKE LINE OF pt_data .
    ASSIGN lr_line->* TO <l_line> .

    DO .
      CALL METHOD me->read_cells
        EXPORTING
          p_start_row    = l_startrow
          p_row_count    = 50
          p_start_column = p_start_colnr
          p_column_count = l_colcount.

      l_colnr   = 1.

      l_is_initial = 'X'.
      LOOP AT lt_excel_cells INTO lwa_excel_cells .
        IF l_old_rownr NE lwa_excel_cells-row .
          IF l_old_rownr NE ' '.
            APPEND <l_line> TO pt_data .
            CLEAR  <l_line>  .
            l_is_initial = 'X'.
            l_colnr   = 1.
          ENDIF.
          l_old_rownr = lwa_excel_cells-row .
        ENDIF .

        ASSIGN COMPONENT l_colnr OF STRUCTURE <l_line> TO <l_field>.
        CHECK sy-subrc IS INITIAL .
        <l_field> = lwa_excel_cells-value .
        IF NOT lwa_excel_cells-value IS INITIAL .
          CLEAR l_is_initial .
        ENDIF.
        IF lwa_excel_cells-column = lc_ecolnr AND l_is_initial = 'X' .
          l_is_alles = 'X'.
          EXIT .
        ENDIF.
        ADD 1 TO l_colnr .
      ENDLOOP.

      IF l_is_initial = ' ' .
        APPEND <l_line> TO pt_data .
      ENDIF.
      IF l_is_alles = 'X' OR sy-subrc = 4.
        EXIT.
      ENDIF.
           CLEAR l_old_rownr .     
           ADD 50 TO l_startrow .
    ENDDO.

    DESCRIBE TABLE pt_data LINES table_offset .
    table_offset = table_offset + p_start_rownr .
  ENDMETHOD.                    "read_table

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дарю народу инклуд ZDOI_UTILS (для работы с Excel)
СообщениеДобавлено: Чт, мар 29 2012, 17:09 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1554
Откуда: Москва
На подходе новая версия (сейчас тестирую, отлаживаю).
В течении месяца будет завершено.
Основное новшество - побеждено ограничение на длину значений в 132 символа (как при чтении, так и при записи). Теперь будет работать с длинными значениями (текстами) длиной до 100 тыс.символов (ограничение непринципиальное, просто из соображений здравого смысла - можно расширить хоть до 1 млрд.символов).
И при этом это будет все тот же OLE, со всеми вытекающими преимуществами.

Фактически, побеждено последнее преимущество XML-формирования перед OLE-формированием (преимущество по скорости было побеждено ранее, скорость уже давно выше).

Исходники по запросу на E-mail: amosov@a111-group.ru .
По-прежнему бесплатно, но в открытый доступ выкладывать не буду.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дарю народу инклуд ZDOI_UTILS (для работы с Excel)
СообщениеДобавлено: Ср, апр 04 2012, 16:35 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Чт, авг 25 2011, 11:24
Сообщения: 3
А у меня своя группа функций со временем нарисовалась, но доделывать до публичного релиза лень :D

По поводу Размножения строк - вот что подсмотрел в записанных макросах Экселя:

Call method of Range 'Copy'.
Call method of Range 'Offset' = LO_Offset
EXPORTING
#1 = 1.

Call method of LO_Offset 'Resize' = LO_Offset
EXPORTING
#1 = i_rows.

Call method of LO_Offset 'Insert'.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Дарю народу инклуд ZDOI_UTILS (для работы с Excel)
СообщениеДобавлено: Ср, авг 01 2012, 20:15 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1554
Откуда: Москва
Выслал, но кого-то мог забыть (подозреваю, не все запросы в почте нашел).
Если так (запрашивали, но не получили) и ещё актуально, повторите запрос, ОБЯЗАТЕЛЬНО вставив в тему слово ZDOI_UTILS (настрою фильтр, чтобы теперь уж точно не потерялось).

111 написал(а):
На подходе новая версия (сейчас тестирую, отлаживаю).
В течении месяца будет завершено.
Основное новшество - побеждено ограничение на длину значений в 132 символа (как при чтении, так и при записи). Теперь будет работать с длинными значениями (текстами) длиной до 100 тыс.символов (ограничение непринципиальное, просто из соображений здравого смысла - можно расширить хоть до 1 млрд.символов).
И при этом это будет все тот же OLE, со всеми вытекающими преимуществами.

Фактически, побеждено последнее преимущество XML-формирования перед OLE-формированием (преимущество по скорости было побеждено ранее, скорость уже давно выше).

Исходники по запросу на E-mail: amosov@a111-group.ru .
По-прежнему бесплатно, но в открытый доступ выкладывать не буду.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дарю народу инклуд ZDOI_UTILS (для работы с Excel)
СообщениеДобавлено: Чт, авг 02 2012, 09:10 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июл 16 2010, 09:57
Сообщения: 106
Откуда: СПб
Пол: Мужской
111 написал(а):
Основное новшество - побеждено ограничение на длину значений в 132 символа (как при чтении, так и при записи). Теперь будет работать с длинными значениями (текстами) длиной до 100 тыс.символов (ограничение непринципиальное, просто из соображений здравого смысла - можно расширить хоть до 1 млрд.символов).
Максимальная строка, помещающаяся в ячейку Excel - 32767 символов. Это ограничение сохраняется и в версиях 2007/2010 (несмотря на новаторское значительное увеличение кол-ва строк и столбцов таблицы). Так что миллиард, вроде, не нужен :)

111 написал(а):
И так быстро - ~40 тыс. строк, или ~1000 листов, меньше чем за минуту - отрабатывает.
Это при каком среднем размере строки (сколько символов, полей) ? Всё-таки строка строке - рознь... Можете ли замерить скорость на выводе какой-нибудь таблицы, близкой к эталону (в смысле - у всех примерно одинаковая), например, на таблице таблиц DD02L ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Дарю народу инклуд ZDOI_UTILS (для работы с Excel)
СообщениеДобавлено: Чт, авг 02 2012, 11:57 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1554
Откуда: Москва
Gustav написал:
111 написал(а):
И так быстро - ~40 тыс. строк, или ~1000 листов, меньше чем за минуту - отрабатывает.
Это при каком среднем размере строки (сколько символов, полей) ? Всё-таки строка строке - рознь... Можете ли замерить скорость на выводе какой-нибудь таблицы, близкой к эталону (в смысле - у всех примерно одинаковая), например, на таблице таблиц DD02L ?

При дефолтовой высоте, которая Excel'ем выставляется по умолчанию.
Насколько помню, в той таблице было 15-20 полей, когда замерял.
Протестировать сейчас не могу (некогда этим заниматься), да и не вижу большого смысла (в любом случае, "впереди планеты всей"). Когда конкурирующие разработки начнут догонять по скорости, тогда конечно да, задумаюсь.

Мне самому сейчас больше интересно, насколько работа с длинными текстами замедляет работу, на больших объемах.
Не исключено, что в разЫ, а то и на порядки. Но пока нет достаточной базы экспериментальных данных.
Жду отзывов на эту тему от тех, кому раздал библиотеку.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дарю народу инклуд ZDOI_UTILS (для работы с Excel)
СообщениеДобавлено: Вт, окт 09 2012, 10:50 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, апр 30 2008, 07:46
Сообщения: 52
Пол: Мужской
Добрый день!

111, актуальная версия инклуда - в сообщении от 05.10.2010 ?


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

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


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

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


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

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