Если вы используете Eclipse или HANA Studio как IDE для ABAP, но при этом пользуетесь классическим отладчиком, то возможно вы сталкивались с проблемой когда /h и BREAK-POINT не запускают отладку, а при попытке установить точку прерывания возникает ошибка ED701: Невозможно установ. точки прерыв. из-за внеш. контекста (—> подр. текст). На английском звучит так: Breakpoints cannot be set because of external context (—> long text).
Читать дальше…Передача INITIAL значений в ABAP Proxy
Недавно я настраивал интеграцию одного сервиса, где из SAP необходимо было передать набор полей, часть из которых были необязательны к заполнению. На стороне ABAP использовался класс, сгенерированный на основе WSDL поставщика. До определенного момента все работало хорошо. Проблемы начались, когда потребовалось передать в опциональном параметре значение по умолчанию (INITIAL). В этом случае сгенерированная полезная нагрузка не содержала нужных тегов в окончательном XML-документе. Из-за отсутствия тэгов, сервер возвращал ошибку передачи данных.
Читать дальше…Извлечение уникальных значений из внутренней таблицы
Начиная с версии ABAP 7.4 появилась возможность быстро и эффективно извлечь уникальные значения определенного столбца из таблицы.
В общем случае код выглядит следующим образом
|
1 2 3 4 5 6 7 8 |
DATA lt_unique TYPE STANDARD TABLE OF fieldtype. lt_unique = VALUE #( FOR GROUPS value OF <line> IN it_itab GROUP BY <line>-field WITHOUT MEMBERS ( value ) ). |
Ниже примеры извлечения таблицы и ренджа уникальных значений TADIR-DEVCLASS.
Читать дальше…Транзакция на ракурс ведения
- Создаем транзакцию с начальным объектом «Транзакция с параметрами»
- В поле транзакция указываем SM30
- Устанавливаем флаг «Пропустить первый экран»
- Указываем параметры: VIEWNAME = «имя таблицы»; UPDATE = X
Программа для снятия скриншотов
В процессе работы часто приходится обмениваться скриншотами. Для информативности и акцентирования внимания на определенные области, на скриншотах наносятся текстовые комментарии, выделяются области, рисуются стрелки и т.п.
До недавнего времени, для снятия скриншотов я пользовался программой Lightshot, но по требованию ИБ от нее пришлось отказаться. После чего я решил написать свой Lightshot с открытым исходным кодом. Оставляю ссылки на исполняемый файл и на исходный код.
Читать дальше…Сериализация данных и типов данных
Существует несколько способов сериализации и десериализации данных. Самые популярные из них:
- В формате XML через CALL TRANSFORMATION
- В формате JSON через класс /UI2/CL_JSON
- В кластер данных через оператор EXPORT
В некоторых случаях, помимо самих данных, требуется сериализовать тип данных (например, если тип сериализуемых данных определяется в рантайме). Сделать это можно через класс CL_SALV_BS_DDIC.
Читать дальше…Доступ к приватным атрибутам класса
В языке ABAP есть реализация паттерна «снимок» (Memento), цель которого сохранять и восстанавливать состояния объектов. Под состоянием понимается значения всех его атрибутов. Используя данный паттерн можно считать PROTECTED и PRIVATE атрибуты и изменять из значения в произвольном объекте.
Читать дальше…Поиск объектов в ABAP-словаре
Зачастую программисту проще создать новый элемент данных, структуру или тип диапазона данных, чем найти уже существующий объект. Это связано с отсутствием удобного инструмента поиска объектов в ABAP-словаре. В связи с этим, в разработках образуется избыточное количество словарных объектов, дублирующие друг друга. Для сокращения времени поиска нужных объектов, представляю вам свою утилиту.

Древовидное представления данных на примерах
Ниже представлены различные варианты реализации древовидного представления данных.

Архитектурные шаблоны в ABAP: MVC, MVP, MVVM, MVA
MVC (Model-View-Controller) — фундаментальный шаблон проектирования, целью которого является отделение логики интерфейса пользователя от логики программирования. MVC имеет множество вариантов реализации. Существуют модификации шаблона, самые известные из них MVP и MVVM.
Ниже описана концепция архитектурного шаблона MVC и его модификаций MVP и MVVM. Приведена концепция шаблона MVA, основанная на паттернах MVC, MVP и MVVM и адаптирована под язык ABAP. Читать дальше…
