:::: МЕНЮ ::::

Передача INITIAL значений в ABAP Proxy

Недавно я настраивал интеграцию одного сервиса, где из SAP необходимо было передать набор полей, часть из которых были необязательны к заполнению. На стороне ABAP использовался класс, сгенерированный на основе WSDL поставщика. До определенного момента все работало хорошо. Проблемы начались, когда потребовалось передать в опциональном параметре значение по умолчанию (INITIAL). В этом случае сгенерированная полезная нагрузка не содержала нужных тегов в окончательном XML-документе. Из-за отсутствия тэгов, сервер возвращал ошибку передачи данных.

Читать дальше…

Извлечение уникальных значений из внутренней таблицы

Начиная с версии ABAP 7.4 появилась возможность быстро и эффективно извлечь уникальные значения определенного столбца из таблицы.

В общем случае код выглядит следующим образом

Ниже примеры извлечения таблицы и ренджа уникальных значений TADIR-DEVCLASS.

Читать дальше…

Транзакция на ракурс ведения

  1. Создаем транзакцию с начальным объектом «Транзакция с параметрами»
  2. В поле транзакция указываем SM30
  3. Устанавливаем флаг «Пропустить первый экран»
  4. Указываем параметры: VIEWNAME = «имя таблицы»; UPDATE = X
Читать дальше…

Программа для снятия скриншотов

В процессе работы часто приходится обмениваться скриншотами. Для информативности и акцентирования внимания на определенные области, на скриншотах наносятся текстовые комментарии, выделяются области, рисуются стрелки и т.п.

До недавнего времени, для снятия скриншотов я пользовался программой Lightshot, но по требованию ИБ от нее пришлось отказаться. После чего я решил написать свой Lightshot с открытым исходным кодом. Оставляю ссылки на исполняемый файл и на исходный код.

Читать дальше…

Сериализация данных и типов данных

Существует несколько способов сериализации и десериализации данных. Самые популярные из них:

  • В формате XML через CALL TRANSFORMATION
  • В формате JSON через класс /UI2/CL_JSON
  • В кластер данных через оператор EXPORT

В некоторых случаях, помимо самих данных, требуется сериализовать тип данных (например, если тип сериализуемых данных определяется в рантайме). Сделать это можно через класс CL_SALV_BS_DDIC.

Читать дальше…

Доступ к приватным атрибутам класса

В языке ABAP есть реализация паттерна «снимок» (Memento), цель которого сохранять и восстанавливать состояния объектов. Под состоянием понимается значения всех его атрибутов. Используя данный паттерн можно считать PROTECTED и PRIVATE атрибуты и изменять из значения в произвольном объекте.

Читать дальше…

Поиск объектов в ABAP-словаре

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

Пример поиска структуры с BKPF ключом
Читать дальше…



Архитектурные шаблоны в ABAP: MVC, MVP, MVVM, MVA

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


Определение имени поля по его значению

В функциях (пригодных для повторного применения) анализа и обработки данных во внутренних таблиц необходимо знать лишь часть данных о таблицах: саму таблицу и имена тех полей, которые нужно обрабатывать. Возникает вопросы: «Каким должен быть интерфейс функции?» и «Как типизировать параметры?». Интерфейсы для внутренних таблиц еще не изобрели, поэтому в параметрах функции должна передаваться обрабатываемая таблица и названия полей для обработки.
Передача имена полей через параметры через параметры накладывает ряд ограничений. Любые действия с изменением структуры (переименование или удаление полей) будет требовать особой осторожности, так как в журнале использования поля отображаться не будут. Эта задача является примером, когда требуется определить названия поля структуры.
В общем случае постановка задачи звучит следующим образом: имеется структура LS_STRUCT. Требуется написать функцию, которая по значению поля будет возвращать его имя. То есть, при LS_STRUCT-SOME_FIELD вернет строку с содержимым SOME_FIELD.
Читать дальше…


Страницы:12345