Текущее время: Сб, май 26 2018, 02:09

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


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


ВНИМАНИЕ!

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



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

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


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

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

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

Code:
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.


Code:
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
Сообщения: 173
Maksimus написал:
При открытии xlsx-файла получаю ошибку
Скажите, а если просто открыть форму во вьюере (а не сохранять на апликейшне OPEN DATASET... TRANSFER... ), то эта ошибка будет появляться? Если да, то какая версия XLSX Workbench ?


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

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


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


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

Зарегистрирован:
Пт, дек 04 2009, 13:52
Сообщения: 173
В gv_document_rawdata документ корректный, это точно.
Я не могу в данный момент протестировать, но, скорее всего, Вы зря вызываете CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'. Попробуйте проще:
Code:
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
Сообщения: 1060
Откуда: Омск
Пол: Мужской
Бородин Игорь написал(а):
В gv_document_rawdata документ корректный, это точно.
Я не могу в данный момент протестировать, но, скорее всего, Вы зря вызываете CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'. Попробуйте проще:
Code:
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
Встретил такую штуку.
Code:
    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~", пишется файл с генерированным именем модулем

Code:
            CALL FUNCTION 'GUID_CREATE'
              IMPORTING
                ev_guid_32 = lv_guid_1.


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

Code:
      "" Решение проблемы генерации 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
Сообщения: 173
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
Сообщения: 173
Я поправил логику формирования 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
Сообщения: 173
Добрый день. Если Вы имеете в виду именованные ячейки/диапазоны ячеек, то нет. Из шаблона в результирующий файл эти имена просто не переносятся.


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

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


Добрый день.

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


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

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

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


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

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


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

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


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

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