Текущее время: Сб, окт 21 2017, 14:26

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 101 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Чт, фев 16 2017, 15:12 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 13:52
Сообщения: 167
alexeik писал(а):
Перезаходил, конечно
Возможно, вы выходили на первый экран, а этого недостаточно. Надо совсем выйти из транзакции. Это довольно часто возникающий вопрос, и наверное, я в будущих версиях сделаю специальную кнопку обновления.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Пт, фев 17 2017, 14:24 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, июл 19 2007, 08:04
Сообщения: 1032
Откуда: Омск
Пол: Мужской
Формирую файл в фоне с помощью куска кода, который ниже. При открытии xlsx-файла получаю ошибку
Изображение

Кто-нибудь знает в чем может быть проблема?

Код:
CALL FUNCTION 'ZXLWB_CALLFORM'
    EXPORTING
      iv_formname        = 'ZCONTEXT_PLAN'
      iv_context_ref     = gt_context
      iv_viewer_suppress  = 'X'
      "iv_save_as          = file_name
    IMPORTING
      ev_document_rawdata = gv_document_rawdata
    EXCEPTIONS
      process_terminated = 1
      OTHERS             = 2.
  IF sy-subrc NE 0 .
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 .
  ENDIF .
  PERFORM save_file USING gv_document_rawdata file_name.


Код:
FORM save_file USING  pv_document_rawdata TYPE mime_data
                      lv_file TYPE string.
  DATA: lv_document_size    TYPE i,
        lt_document_table   TYPE solix_tab,
        ls_document_table   LIKE LINE OF lt_document_table.
  DATA: BEGIN OF log OCCURS 0,
        str TYPE string,
      END OF log,
      len TYPE i.

  CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
    EXPORTING
      buffer        = pv_document_rawdata
    IMPORTING
      output_length = lv_document_size
    TABLES
      binary_tab    = lt_document_table.

  TRY.
      OPEN DATASET lv_file FOR OUTPUT IN BINARY MODE.
    CATCH cx_sy_file_open.
      log-str = 'Ошибка открытия файла'.
      APPEND log.
    CATCH cx_sy_file_authority.
      log-str = 'Ошибка авторизации'.
      APPEND log.
    CATCH cx_sy_codepage_converter_init.
      log-str = 'Ошибка кодировки'.
      APPEND log.
    CATCH cx_sy_conversion_codepage.
      log-str = 'Ошибка преобразования'.
      APPEND log.
    CATCH cx_sy_pipes_not_supported.
      log-str = 'ОС не поддерживает именованные каналы'.
      APPEND log.
    CATCH cx_sy_too_many_files.
      log-str = 'Достигнуто максимальное число открытых файлов'.
      APPEND log.
  ENDTRY.

  IF sy-subrc NE 0.
    log-str = 'Ошибка при создании файла.'.
    APPEND log.
  ELSE.
    LOOP AT lt_document_table INTO ls_document_table.
      CLEAR len.
      DESCRIBE FIELD ls_document_table-line LENGTH len IN BYTE MODE.
      TRANSFER ls_document_table-line TO lv_file LENGTH len.
    ENDLOOP.
    CLOSE DATASET lv_file.
    CONCATENATE 'Данные успешно выгружены в файл' lv_file INTO log-str SEPARATED BY space.
    APPEND log.
  ENDIF.

  LOOP AT log.
    WRITE: / log-str.
  ENDLOOP.

ENDFORM.                    " SAVE_FILE


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Пт, фев 17 2017, 14:33 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 13:52
Сообщения: 167
Maksimus писал(а):
При открытии xlsx-файла получаю ошибку
Скажите, а если просто открыть форму во вьюере (а не сохранять на апликейшне OPEN DATASET... TRANSFER... ), то эта ошибка будет появляться? Если да, то какая версия XLSX Workbench ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Пт, фев 17 2017, 14:56 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, июл 19 2007, 08:04
Сообщения: 1032
Откуда: Омск
Пол: Мужской
Бородин Игорь писал(а):
Скажите, а если просто открыть форму во вьюере (а не сохранять на апликейшне OPEN DATASET... TRANSFER... ), то эта ошибка будет появляться? Если да, то какая версия XLSX Workbench ?


Нет, во вьювере все хорошо. Версия 4.00.
Я даже не уверен, что проблема в XLSX Workbench. Просто в описании к разработке есть пункт про фоновое выполнение, вот тестирую :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Пт, фев 17 2017, 15:08 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 13:52
Сообщения: 167
В gv_document_rawdata документ корректный, это точно.
Я не могу в данный момент протестировать, но, скорее всего, Вы зря вызываете CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'. Попробуйте проще:
Код:
DELETE DATASET lv_file .
OPEN DATASET lv_file FOR OUTPUT IN BINARY MODE .
TRANSFER gv_document_rawdata TO lv_file .
CLOSE DATASET lv_file .


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Пт, фев 17 2017, 15:14 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, июл 19 2007, 08:04
Сообщения: 1032
Откуда: Омск
Пол: Мужской
Бородин Игорь писал(а):
В gv_document_rawdata документ корректный, это точно.
Я не могу в данный момент протестировать, но, скорее всего, Вы зря вызываете CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'. Попробуйте проще:
Код:
DELETE DATASET lv_file .
OPEN DATASET lv_file FOR OUTPUT IN BINARY MODE .
TRANSFER gv_document_rawdata TO lv_file .
CLOSE DATASET lv_file .


Ну конечно!
Вы правы, спасибо, все получилось.

P.S. отдельное спасибо за разработку, оч. крутая вещь, хоть бери и все существующие отчеты под нее переделывай :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Вт, фев 28 2017, 11:48 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, ноя 29 2012, 17:47
Сообщения: 85
Встретил такую штуку.
Код:
    LOOP AT mt_data ASSIGNING <ls_data>.
      CLEAR lt_output.

      APPEND <ls_data> TO lt_output.

      CALL FUNCTION 'ZXLWB_CALLFORM'
        EXPORTING
          iv_formname        = mc_filename
          iv_viewer_inplace  = ''
          iv_context_ref     = lt_output
        EXCEPTIONS
          process_terminated = 1
          OTHERS             = 2.
   ENDLOOOP.


Работает все ок, но порой пишет ошибку "Не удалось найти ..." файл.
В отладке выяснил, что передавая пустое имя файла в папку "SAP GUI/ ~tmp~", пишется файл с генерированным именем модулем

Код:
            CALL FUNCTION 'GUID_CREATE'
              IMPORTING
                ev_guid_32 = lv_guid_1.


и этот модуль в цикле выдает одинаковые guid.
Это пол беды...
При каждом запуске вашего модуля для формы в цикле, происходит удаление по этому гуид файла во временной папке - естественно в цикле удаление не отработает корректно , так как файл еще открыт Excel.
Пробовал делать вызов после вашего модуля

Код:
      "" Решение проблемы генерации GUID - иногда генерится одно и тоже ...
      "" И зависает открытие 2 файла - исправляем.
      "" берем 2 гуида и сравниваем их если генерит 2 подрят разных то гуд
      "" иначе повторяем еще 4 раза - через итерации цикла , чтобы была временная разница между вызовами.
      cl_gui_cfw=>flush( EXCEPTIONS OTHERS = 0 ) .
      cl_gui_cfw=>dispatch( ) .

     DO 12 TIMES.

        lv_mod = sy-index MOD 3.
        CASE lv_mod.
          WHEN 1.
            CALL FUNCTION 'GUID_CREATE'
              IMPORTING
                ev_guid_32 = lv_guid_1.
            CONTINUE.
          WHEN 2.
            CALL FUNCTION 'GUID_CREATE'
              IMPORTING
                ev_guid_32 = lv_guid_2.
            CONTINUE.
          WHEN 0.
            IF lv_guid_1 <> lv_guid_2.
              EXIT.
            ELSE.
              CONTINUE.
            ENDIF.
        ENDCASE.
      ENDDO.


Но это не решает проблему ...
возможно лучшим решением будет генерация имени временного файла по времени ? (а не по guid)

ЗЫ: генерация гуида - как я понимаю это нативная функция системы, и недра её нам не доступны...
ЗЫ:ЗЫ: версия XLSX-Workbench(XLWB) components [Version 3.09]


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Вт, фев 28 2017, 12:36 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 13:52
Сообщения: 167
Crystal_Ra писал(а):
и этот модуль в цикле выдает одинаковые guid.
Вот это новость для меня... я, по своей наивности, считал, что GUID уникален и рассчитывал на это. Спасибо, что выявили эту проблему!
Crystal_Ra писал(а):
Пробовал делать вызов после вашего модуля... Но это не решает проблему
Скажите, а в этом случае GUID тоже остается одинаков? Или ошибка возникает даже при разных GUID ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Вт, фев 28 2017, 13:07 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, ноя 29 2012, 17:47
Сообщения: 85
При разных GUID - все хорошо. Работает четко.
Я как разработчик эту проблему бы и не встретил ))), но пользователи !!!
Они что-то жмут как всегда "по-своему", и в боевом режиме выяснилось, что GUID нас подводит.

Моя обработка по сути не помогла, через неделю снова вернулись ошибки .

ЗЫ: Тоже всегда думал что GUID уникален ))), но нет - уникален SAP )))
PS/PS: предположу что сам алгоритм реализован на уровне системы на чем стоит базис... у нас Linux


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Вт, фев 28 2017, 14:16 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 13:52
Сообщения: 167
Я поправил логику формирования GUID и опубликовал новую версию на сайте. Обновитесь, пожалуйста.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Вт, фев 28 2017, 14:19 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, ноя 29 2012, 17:47
Сообщения: 85
Спасибо!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Ср, апр 19 2017, 21:08 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Ср, июл 09 2008, 10:01
Сообщения: 19
Добрый вечер.

Подскажите, пожалуйста, есть ли возможность создавать переменные в Диспетчере Имен.
Может, невнимательно читал, но не смог найти эту функцию.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Чт, апр 20 2017, 11:43 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 13:52
Сообщения: 167
Добрый день. Если Вы имеете в виду именованные ячейки/диапазоны ячеек, то нет. Из шаблона в результирующий файл эти имена просто не переносятся.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Чт, апр 20 2017, 12:02 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Ср, июл 09 2008, 10:01
Сообщения: 19
Бородин Игорь писал(а):
Добрый день. Если Вы имеете в виду именованные ячейки/диапазоны ячеек, то нет. Из шаблона в результирующий файл эти имена просто не переносятся.


Добрый день.

Не планируете добавить этот функционал?
Вообще, мне это нужно для использования в сводной таблице в качестве источника данных.
Т.к. для этого надо и использовать либо жесткий диапазон, либо переменную, вычисляемую по формуле со смещением.
Может есть какой-то другой способ создания Сводных таблиц в вашем инструменте?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Чт, апр 20 2017, 12:28 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 13:52
Сообщения: 167
Ayda}{ar писал(а):
Не планируете добавить этот функционал?
Пока не планирую и даже не знаю, как это увязать с концепцией. Вот, например, Вы присвоили диапазону A1:A5 имя NAME, и поместили этот паттерн в цикл. В результирующей форме будет, предположим, 10 таких областей (строк) - и как все они должны называться? ведь имя-то должно быть уникальным. Можно, конечно, "растянуть" диапазон NAME, чтобы он охватывал все получившиеся строки... а если они идут не подряд, а чередуются с другими паттернами, тогда как ? Короче, это вопрос не технический, а концептуальный.
Ayda}{ar писал(а):
Может есть какой-то другой способ создания Сводных таблиц в вашем инструменте?
Я задумывался над реализацией сводных таблиц, но пока (из-за сложности) откладывал. Возможно в будущем и добавлю эту возможность.

Если Вам не принципиально выполнение в фоне, то можете реализовать всё, что угодно посредством VBA (VBScript) пост-обработки .


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

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


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

Сейчас этот форум просматривают: Google Feedfetcher и гости: 2


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

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