SAPфорум.RU
https://www.sapboard.ru/forum/

XLSX Workbench
https://www.sapboard.ru/forum/viewtopic.php?f=13&t=86294
Страница 9 из 15

Автор:  xbusterx [ Чт, сен 13 2018, 13:10 ]
Заголовок сообщения:  Re: XLSX Workbench

Добрый день! Спасибо за разработку! Очень понравилась. Хотелось задать вопрос по использованию. Посмотрел примеры в хелпе и решил совместить 2 варианта - связку книг и когда в каждой их этих книг несколько листов. Никак не могу подступиться - какой мне сделать контекстную структуру и сам формуляр.

Если описать так по уровням, форма должна выглядеть так:
1. Сотрудник 1 ( книга )
1.1. Отпуск ( лист1)
1.1.1. Поля заголовка для отпуска
1.1.2. Таблица данных по отпуску
1.2. Больничный ( лист2)
1.2.1. Поля заголовка для больничного
1.2.2. Таблица данных по больничному
2. Сотрудник 2 ( книга )
....
и так далее

Надеюсь понятно описал ) Спасибо заранее.

Автор:  Бородин Игорь [ Чт, сен 13 2018, 14:06 ]
Заголовок сообщения:  Re: XLSX Workbench

Добрый день.
Вкратце:
Надо сделать форму для одного сотрудника, содержащую два листа. В программе печати формируете эту форму (книгу) несколько раз - каждый раз по новому сотруднику. А чтобы все книги попали в одну связку - в начале программы вызываете viewer_bundle_open, а в конце viewer_bundle_close.

Более подробно:
1) Делайте форму для одного сотрудника.
Поскольку количество листов фиксировано (не динамика), то делайте в качестве контекста Структуру. В эту структуру вставьте все необходимые поля для заголовков обоих листов ( 1.1.1. Поля заголовка для отпуска и 1.2.1. Поля заголовка для больничного ) , а также, две вложенные таблицы ( 1.1.2. Таблица данных по отпуску и 1.2.2. Таблица данных по больничному).
В самом формуляре сделайте следующее. В дерево структуры добавьте два листа; в каждый из листов добавьте Паттерн заголовка и Грид; добавьте Значения, свяжите всё с соответствующими полями контекста. В шаблон добавьте два листа, разметьте их и сопоставьте области с соответствующими Паттернами и Гридами. В общем, всё как обычно.

2) В программе печати (как описано в этом примере) делайте следующее:
Открывайте связку книг: PERFORM viewer_bundle_open IN PROGRAM saplzxlwb .
Делайте цикл по сотрудникам. Внутри цикла: как обычно, заполняете контекст и вызываете CALL FUNCTION 'ZXLWB_CALLFORM' для одного сотрудника.
Закрываете связку книг: PERFORM viewer_bundle_close IN PROGRAM saplzxlwb .

Автор:  xbusterx [ Пт, сен 14 2018, 06:26 ]
Заголовок сообщения:  Re: XLSX Workbench

Добрый день!
Спасибо за ответ, но дело в том, что количество листов в книге может быть динамическим, наверное я неверно описал в сообщении.
Я вчера решил пойти путем разложения всего по листам. И тут тоже столкнулся с проблемой.
На листе должен быть заголовок и таблица. Когда я добавляю таблицу, ексель файл ломается - если же я использую только заголовок, то все работает нормально.

Используемый контекст:

Изображение

Формуляр:

Изображение

Автор:  Бородин Игорь [ Пт, сен 14 2018, 11:11 ]
Заголовок сообщения:  Re: XLSX Workbench

xbusterx написал:
количество листов в книге может быть динамическим
В таком случае контекст должен представлять собой Табличный тип, а в структуре формуляра лист нужно поместить внутрь Цикла по контексту, как в этом примере. По поводу разного наполнения листов - вы можете поступить двумя способами:
1) поместить все возможные Паттерны форматирования на один Лист и выводить их по условию
2) сделать разные Листы для каждого бланка и также, выводить их по условию. Этот способ, на мой взгляд, гораздо нагляднее - я бы использовал его. В вашем случае все эти Листы надо поместить внутрь Цикла по контексту.

И да, для вывода простой таблицы используйте компонент Грид, им пользоваться гораздо проще и работает он быстрее. А связку Цикл+Паттерн+Значения делать гораздо утомительнее, оставьте её для более сложных случаев.

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

Автор:  xbusterx [ Пт, сен 14 2018, 12:06 ]
Заголовок сообщения:  Re: XLSX Workbench

Скинул на почту. Спасибо!

Автор:  Sam Stone [ Пт, ноя 16 2018, 15:22 ]
Заголовок сообщения:  Re: XLSX Workbench

Добрый день.

Подскажите как лучше реализовать отчет.
Изображение

Для варианта на скриншоте сделал таблицу, в которой одно поле - другая таблица. И вывожу по примеру из документации "многоуровневая таблица (подытоги)", используя папку, цикл и паттерн. Но при большом объеме (1000-2000 строк) очень уж долго выводится. Можно ли побыстрее сделать?

Автор:  Бородин Игорь [ Вс, ноя 18 2018, 00:29 ]
Заголовок сообщения:  Re: XLSX Workbench

Sam Stone написал(а):
очень уж долго выводится
Добрый день. А долго это сколько? Я замерял на нескольких системах и результат такой, что таблица 2000 строк на 15 столбцов, с изощренным форматированием (многоуровневые подзаголовки/подитоги) выгружается в среднем 10-15 секунд (выборка данных сюда не входит). Да, это дольше, чем АЛВ-грид, но не намного.
Если ваша выгрузка в разы дольше, то проверьте, может быть у вас так долго сами данные выбираются. Ещё посмотрите, не задействована ли в этом формуляре OLE/VBA-постобработка: она может сильно тормозить. Ну и надеюсь версия workbench не сильно древняя (т.к.самые первые версии могли иметь проблемы производительности). Ещё попробуйте для вывода вложенной таблицы использовать не Цикл+Паттерн, а компонент Грид (он должен немного побыстрее работать).

Автор:  Sam Stone [ Пн, ноя 19 2018, 08:02 ]
Заголовок сообщения:  Re: XLSX Workbench

Долго это 5-8 минут 4800 записей. И это именно формирование экселя, без выборки данных, без макросов, версия 4.10. Но, похоже, нашел, в чем проблема: в редакторе шаблонов я для грида и паттерна выделял всю строку как диапазон для вывода. Сейчас переделал, выделив только необходимое количество столбцов - выгрузка заняла чуть больше минуты.

Из-за длинной строки проседает вот тут (ZXLWB_INCLUDE, 10060):
Code:
*   properties of the columns
    LOOP AT s_patterns-t_colprop INTO ls_colprop .

И это навело меня на мысль, что надо поправить привязанную в шаблоне область.

Автор:  Sam Stone [ Вт, ноя 27 2018, 15:46 ]
Заголовок сообщения:  Re: XLSX Workbench

Еще вопрос: пользователи хотят миллиард (40-50к) записей в эксель в виде таблицы с подытогами. Выгружается нормально, буквально пару минут. Но не открывается. Эксель съедает всю оперативку и помирает. Файл открылся на машине, где было 8+ гб свободной оперативки.
Если всю эту портянку выгрузить без подытогов (т.е. плоской таблицей), то файл открывается нормально, и эксель память не кушает. Не подскажите, в какую сторону копать?

Автор:  Kuranov.Dmitry [ Вт, ноя 27 2018, 16:10 ]
Заголовок сообщения:  Re: XLSX Workbench

подытоги сапом считать))

Автор:  Daw [ Вт, ноя 27 2018, 17:10 ]
Заголовок сообщения:  Re: XLSX Workbench

Открывать на каком-нибудь сервере через удаленный рабочий стол.

Автор:  Sam Stone [ Ср, ноя 28 2018, 09:02 ]
Заголовок сообщения:  Re: XLSX Workbench

Подытоги и так считаются сапом.

Проблему нашел, сам себе рукожоп :lol: Для пары паттернов выделил всю строку целиком (16384 столбца). Там статические данные типа подпись, фио и тд, но в результате документ стал широким, на этом и протухло.

Надо большими буквами написать в начале документации, что не стоит выделять всю строку целиком для области в шаблоне :D

Автор:  Бородин Игорь [ Ср, ноя 28 2018, 13:41 ]
Заголовок сообщения:  Re: XLSX Workbench

Sam Stone написал(а):
Надо большими буквами написать в начале документации, что не стоит выделять всю строку целиком для области в шаблоне
Да, вы не первый, кто пытается выделить всю строку и даже весь лист. Я в будущих версиях сделаю выдачу предупреждения при попытке присвоить паттерну большие области.

Автор:  Sam Stone [ Сб, дек 01 2018, 13:38 ]
Заголовок сообщения:  Re: XLSX Workbench

Вопрос по форматированию экселя под дерево: выделил область под cl_salv_tree, отформатировал ячейки. Скрыл столбец иерархии, в результате чего форматирование уехало влево то ли на 1, то ли на 2 столбца относительно шапки (она отдельно сделана). Это нормально и под столбец иерархии надо всегда выделять отдельный столбец в экселе, даже если он не выводится?

Автор:  Бородин Игорь [ Пн, дек 03 2018, 12:42 ]
Заголовок сообщения:  Re: XLSX Workbench

Sam Stone написал(а):
под столбец иерархии надо всегда выделять отдельный столбец в экселе, даже если он не выводится?
Да, в существующей реализации требуется именно такая разметка. Первый столбец разметки зарезервирован под столбец иерархии, даже если он не выводится.

Страница 9 из 15 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/