Текущее время: Пт, июн 20 2025, 22:58

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


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


ВНИМАНИЕ!

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



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

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


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

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


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

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

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

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


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

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
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
Сообщения: 1556
Откуда: Москва
Кодер написал(а):
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
Сообщения: 1556
Откуда: Москва
В общем, ничего менять пока не буду, пусть пока так, как есть, остается. И так быстро - ~40 тыс. строк, или ~1000 листов, меньше чем за минуту - отрабатывает.
А то начнешь переделывать, еще какие-нибудь нюансы неожиданные выплывут.

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


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

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
При причине крайней редкости использования 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
Сообщения: 1556
Откуда: Москва
На подходе новая версия (сейчас тестирую, отлаживаю).
В течении месяца будет завершено.
Основное новшество - побеждено ограничение на длину значений в 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
Сообщения: 1556
Откуда: Москва
Выслал, но кого-то мог забыть (подозреваю, не все запросы в почте нашел).
Если так (запрашивали, но не получили) и ещё актуально, повторите запрос, ОБЯЗАТЕЛЬНО вставив в тему слово 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
Сообщения: 1556
Откуда: Москва
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 часа


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

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


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

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