В новом синтаксисе ABAP SQL появилась возможность прописывать условия для таблиц LEFT JOIN в WHERE.
Однако есть существенное отличие между условием прописанным после ON и в условии WHERE.
В новом синтаксисе ABAP SQL появилась возможность прописывать условия для таблиц LEFT JOIN в WHERE.
Однако есть существенное отличие между условием прописанным после ON и в условии WHERE.
Бывает, что табельный номер не попадает в выборку события GET pernr. Одна из причин - нехватка полномочий на один из инфо-типов или даже подтипов. Если у нас нет возможности добавить полномочий пользователю, можно использовать макрос pnp_sw_skip_pernr = N. Табельный номер не будет пропущен, но данные выберутся только из подтипов на которые есть полномочия.
Для заполнения дополнительных полей в инфо-наборе можно сделать следующее:
1. Создать расширенную структуру CI_Pnnnn_AF для ИТ;
2. Создать ФМ для заполнения дополнительных полей. Для образца можно взять ФМ RPAQ_GET_AF_NNNN;
3. В таблице T770AF прописать структуру и ФМ для заполнения дополнительных полей к ней;
4. В таблице T77ID прописать дополнительную структуру для ИТ;(Скорее всего необходимость данного пункта была из-за особенностей моей системы. В идеале запись должна создаваться автоматически)
5. Актуализируем дополнительные поля в инфо-наборе Инфо-набор->Другие функции->Актуализировать дополн. поля в HR.
Если необходимо вывести ALV на полный экран, то не надо создавать контейнер на экране, из-за возможных проблем с отображением на экранах с различным расширением. Нужно просто записать:
1 2 3 4 5 6 7 8 9 10 11 12 |
DATA: lo_grid1 TYPE REF TO cl_gui_alv_grid, " объект ALV * Создаём объект грида CREATE OBJECT lo_grid1 EXPORTING i_parent = cl_gui_container=>default_screen EXCEPTIONS error_cntl_create = 1 error_cntl_init = 2 error_cntl_link = 3 error_dp_create = 4 OTHERS = 5. |
При необходимости добавить информацию перед таблицей cl_gui_alv_grid, может возникнуть вопрос как это сделать, т.к. Непосредственно сам класс, нам это не позволяет. В общем случае алгоритм точно такой же как и при выводе нескольких ALV в одном контейнере. Только вместо одной из таблиц мы будем выводить текст.
Преобразование структуры в строку называется сериализация, обратное преобразование называется десериализация. В ABAP для сериализации и десериализации существует специальный класс.
Для получения данных из JSON необходимо объявить структуру с типом аналогичным типу в JSON и использовать класс /ui2/cl_json метод deserialize
Пример:
Читать далее «Получить данные из JSON в структуру ABAP(десериализация)»
Система SAP позволяет создавать приложения для мобильных терминалов, так называемые ITS. Разработка приложения складывается из двух частей:
1.Разработка классического приложения
2.Создание Интернет сервиса. Генерация и адаптация HTML экранов для мобильных устройств.
Читать далее «ITS – создание приложений для мобильных устройств»
Перед разработчиком часто встает задача создания документа WORD. Основная проблема заключается в том, что SAP так и заимел удобного инструмента для данного процесса. И если для создания документа в диалогом режиме можно воспользоваться всем любимыми ФМами ZWWW*, то для создания в фоне зачастую используют трансформации, что является очень не удобным в сопровождении.
При больших объемах данных программы имеют свойство работать очень продолжительное время. А пользователи, в свою очередь, хотят, чтобы это время было минимальным.
Если оптимизация запросов и алгоритмов уже не помогает, можно попробовать распараллелить обработку. Задача довольно редкая, актуальных разработок не сохранилось, поэтому не буду здесь приводить примеров кода, а просто вкратце расскажу про два способа. Возможно через какое-то добавлю код.
Часто, возникает потребность трассировки тех или иных фоновых процессов. Одно дело, если мы сможем сделать все это в системе разработки.
1. Делаем бесконечный цикл с выходом по условию.
2. Запускаем программу
3. Переходим в sm50, выбираем наш процесс
4. В меню выбираем Администрирование->Программа->Отладка
5. Открывается экран отладки, в нем мы меняем значение нашей переменной, чтобы выйти из бесконечного цикла и начинаем отладку.
Однако, бывают случаи когда этот метод не работает. Т.к., например, в продуктивной системе нельзя менять значения переменных в отладчике(Можно конечно делать временную задержку вместо бесконечного цикла). Да и нести такой код в продуктив как-то не очень красиво.
В таких случаях можно воспользоваться ФМом k_plan_wait_for_debugging.