Распараллеливание процессов (обзорно)

При больших объемах данных программы имеют свойство работать очень продолжительное время. А пользователи, в свою очередь, хотят, чтобы это время было минимальным.
Если оптимизация запросов и алгоритмов уже не помогает, можно попробовать распараллелить обработку. Задача довольно редкая, актуальных разработок не сохранилось, поэтому не буду здесь приводить примеров кода, а просто вкратце расскажу про два способа. Возможно через какое-то добавлю код.

Читать далее «Распараллеливание процессов (обзорно)»

Отладка фоновых задач

Часто, возникает потребность трассировки тех или иных фоновых процессов. Одно дело, если мы сможем сделать все это в системе разработки.
1. Делаем бесконечный цикл с выходом по условию.
2. Запускаем программу
3. Переходим в sm50, выбираем наш процесс
4. В меню выбираем Администрирование->Программа->Отладка
5. Открывается экран отладки, в нем мы меняем значение нашей переменной, чтобы выйти из бесконечного цикла и начинаем отладку.

Однако, бывают случаи когда этот метод не работает. Т.к., например, в продуктивной системе нельзя менять значения переменных в отладчике(Можно конечно делать временную задержку вместо бесконечного цикла). Да и нести такой код в продуктив как-то не очень красиво.
В таких случаях можно воспользоваться ФМом k_plan_wait_for_debugging.

Читать далее «Отладка фоновых задач»

Ошибка при экспорте данных в XLSX из ALV

При выгрузке данных стандартным функционалом ALV возникла ошибка Удаленный компонент: часть/xi/sharedStrings.xml

32461e5e-9472-4373-ad9f-d924eddf952d

Оказывается, проблема была в спецсимволах в строках для вывода. В нашем случае, ALV не понравилась решетка #. Решение на май 2018 только одно - удалить спецсимволы или попытаться выгрузить в другой формат.

Читаем Инфо-Типы по новому

Существует два буфера для ИТ:

Буфер PS -  используется, когда для обновления основных данных вызывается функциональный модуль 'HR_INFOTYPE_OPERATION'. При чтении основных данных с помощью функционального модуля  'HR_READ_INFOTYPE'.

Буфер PRELP - также называется буфером PNP.  Предназначен для работы с огромными объемами данных. В программах PNP не следует вызывать функции, считывающие инфо-типы с буфером PS или другим буфером. Потому что это вызывает задержку в чтении.

При чтении данным классом используется тот же буфер, который использует ЛБД.

 

Получение данных из ALV стандартных отчетов

Получим данные из отчета rm07mlbd

 

Вывод нескольких ALV в одном контейнере

Периодически возникает потребность вывести несколько таблиц на одном экране

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

Читать далее «Вывод нескольких ALV в одном контейнере»