LEFT JOIN and WHERE . ABAP SQL

В новом синтаксисе ABAP SQL  появилась возможность прописывать условия для таблиц LEFT JOIN  в WHERE.

Однако есть существенное отличие между условием прописанным после ON  и в условии WHERE.

Читать далее «LEFT JOIN and WHERE . ABAP SQL»

ЛБД PNPCE пропускает табельный

Бывает, что табельный номер не попадает в выборку  события GET pernr. Одна из причин - нехватка полномочий на один из инфо-типов или даже подтипов. Если у нас нет возможности добавить полномочий пользователю, можно использовать макрос  pnp_sw_skip_pernr = N. Табельный номер не будет пропущен, но данные выберутся только из подтипов на которые есть полномочия.

Дополнительные поля в Инфо-Наборе

Для заполнения дополнительных полей в инфо-наборе можно сделать следующее:

1. Создать расширенную структуру CI_Pnnnn_AF для ИТ;
2. Создать ФМ для заполнения дополнительных полей. Для образца можно взять ФМ RPAQ_GET_AF_NNNN;
3. В таблице T770AF прописать структуру и ФМ для заполнения дополнительных полей к ней;
4. В таблице T77ID прописать дополнительную структуру для ИТ;(Скорее всего необходимость данного пункта была из-за особенностей моей системы. В идеале запись должна создаваться автоматически)
5. Актуализируем дополнительные поля в инфо-наборе Инфо-набор->Другие функции->Актуализировать дополн. поля в HR.

ALV – FULLSCREEN

Если необходимо вывести ALV на полный экран, то не надо создавать контейнер на экране, из-за возможных проблем с отображением на экранах с различным расширением. Нужно просто записать:

 

cl_gui_alv_grid – текстовая шапка

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

Читать далее «cl_gui_alv_grid – текстовая шапка»

Получить данные из JSON в структуру ABAP(десериализация)

Преобразование структуры в строку называется сериализация, обратное преобразование называется десериализация. В ABAP для сериализации и десериализации существует специальный класс. 
Для получения данных из JSON необходимо объявить структуру с типом аналогичным типу в JSON и использовать класс /ui2/cl_json метод deserialize

Пример:

Читать далее «Получить данные из JSON в структуру ABAP(десериализация)»

ITS – создание приложений для мобильных устройств

Система SAP позволяет создавать приложения для мобильных терминалов, так называемые ITS. Разработка приложения складывается из двух частей:

1.Разработка классического приложения
2.Создание Интернет сервиса. Генерация и адаптация HTML экранов для мобильных устройств.

Читать далее «ITS – создание приложений для мобильных устройств»

Создание документа WORD в фоне

Перед разработчиком часто встает задача создания документа WORD. Основная проблема заключается в том, что SAP так и заимел удобного инструмента для данного процесса. И если для создания документа в диалогом режиме можно воспользоваться всем любимыми ФМами  ZWWW*, то для создания в фоне зачастую используют трансформации, что является очень не удобным в сопровождении.

Читать далее «Создание документа WORD в фоне»

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

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

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

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

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

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

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