:::: МЕНЮ ::::
Просмотр публикаций с меткой: ABAP

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Выбор данных ALV в POPUP окне

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

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


Срытие и отображение фреймов на селекционном экране

Возникают задачи, когда по определенному событию требуется скрыть или отобразить определенные блоки параметров на селекционном экране. Например, при нажатии на Check-Box или Radio-Button требуется отобразить фреймы с дополнительной информацией. Ниже описан способ как можно проводить манипуляции с целыми блоками без привязки к именам параметров. Читать дальше…


Форматирование ABAP кода

Большинство компаний имеют внутренний регламент форматирования ABAP кода. Не смотря на наличие регламента, оформление кода может сильно отличаться даже в приделах одной программы. Это связано со следующими фактами: многие программы разрабатывались до принятия регламентов; регламентируют в основном только наименования переменных и программных объектов.

Одни из самых сложных конструкций в ABAP — это SELECT и READ TABLE. Ниже предложены правила форматирования данных конструкций, а также средство автоматизированного форматирования для уже имеющегося кода.

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


Оператор MESSAGE

Оператор MESSAGE служит для диалогового взаимодействия с пользователем. Существует шесть типов сообщения.

Тип Описание
S Status (Success). Сообщение отображается в статусной строке и не влияет на работу программы. Данный вид сообщения применяется для информирования об успешной выполнении операции.
status-message
W Warning. Предупредительные сообщения отображаются в статусной строке. При возникновении сообщения работа программы прерывается, а пользователю предоставляется возможность вносить исправления в полях для ввода. При нажатии на Enter в диалоговом режиме, работа программы будет восстановлена.
warning-message
E Error. Сообщение отображается в статусной строке. При возникновении данного вида сообщения обработка программы останавливается.
error-message
I Information. Информационное сообщение отображается в отдельном модальном окне. При возникновении сообщения работа программы прерывается. После закрытия диалога работа программы восстанавливается.
imformation-message
A Abend (Abort). Сообщение отображается в модальном окне. При возникновении сообщения программа завершается, а система возвращается в меню более высокого уровня. Сообщения стоит применять только в крайних ситуациях.
abend-message
X Exception. Сообщение инициирует дамп MESSAGE_TYPE_X. Данный вид сообщения стоит применять в ситуациях, когда нужно проанализировать что именно привело к ошибке во время выполнения.
x-message

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


Операторы для сравнения строк

Оператор Значение
CO Contains Only: Истина, если операнд1 содержит только символы из операнда2. Оператор регистрозависимый. Операнды чувствительны к ведущим/последним пробелам. Если операнд2 типа string и initial, то результатом логического выражения будет ложь, за исключением тех случаев, когда операнд1 тоже типа string и initial. В таком случае результатом логического выражения всегда будет истина. Если логическое выражение ложь, то sy-fdpos будет содержать смещение первого символа в операнде1, которого нет в операнде2. Иначе, sy-fdpos будет содержать длину операнда1.
CA Contains Any: Истина, Если операнд1 содержит хотя бы один символ из операнда2. Оператор регистрозависимый. Операнды чувствительны к ведущим/последним пробелам. Если операнд1 или операнд2 типа string и initial, то результатом логического выражения всегда будет ложь. Если результат сравнения положительный, то sy-fdpos будет содержать смещение первого символа в операнде1, который содержит операнд2. Иначе, sy-fdpos будет содержать длину операнда1.
CS Contains String: Истина, если содержимое операнда2 содержится в операнде1. Оператор регистронезависимый. Операнды чувствительны к ведущим пробелам. Если операнд1 типа string и initial, или типа C и содержит только пробельные символы, результатом логического выражения будет ложь, за исключением когда операнд2 также типа string и initial, или типа C и содержит только пробельные символы. В этом случае результатом логического выражения будет истина. Если выражение истина, то sy-fdpos будет содержать смещение операнда2 в операнде1. Если результатом сравнения будет ложь, то sy-fdpos будет содержать длину операнда1.
CP Covers Pattern: Истина, если содержимое операнда2 удовлетворяет шаблону операнда1. Операнд2 может содержать шаблонные символы: «*» — любая строка и «+» — любой символ. Оператор не чувствителен к регистру. Операнды чувствительны к ведущим пробелам. Если результат сравнения положительный, то sy-fdpos будет содержать смещение операнда2. Иначе, sy-fdpos будет содержать длину операнда1. Для поиска шаблонных символов их необходимо экранировать путем добавления в операнд2 символа «#» перед требуемым символом. Экранированные символы в операнде2 чувствительны к регистру.
CN Contains Not Only: Эквивалент операнд1 NOT CO операнд2.
NA Contains Not Any: Эквивалент операнд1 NOT CA операнд2.
NS Contains No String: Эквивалент операнд1 NOT CS операнд2.
NP No Pattern: Эквивалент операнд1 NOT CP операнд2.

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


Автоматический пересчет данных в разрезе выбранных полей ALV Grid

ALV Grid позволяет пользователю отображать отчет в желаемом виде. Пользователю доступны такие операции как: отображение или скрытие указанных полей, изменение порядка вывода столбцов. Зачастую, при изменении списка отображаемых полей, заказчик хочет видеть пересчет данных в разрезе отображаемых столбцов. Ниже описан способ автоматического пересчета данных в таблице, на основе каталога полей ALV Grid.
Читать дальше…


Страницы:12