Уже несколько раз сталкивался с ситуацией когда разработчик пишет что-то вроде:

Данный код приведёт к исключению CX_SY_ITAB_DUPLICATE_KEY. Все потому, что при определении полей ключа разработчик указал запятую. Запятая в данном случае отделяет определение переменной lt_some_table от переменной b с типом C 🙂

 

Обнаружил для себя забавную особенность при работе с сообщениями.

Есть код:

Логично предположить что сообщение будет вида ‘S’ (Status), однако есть возможность внутри самого сообщения указать принудительно DISPLAY LIKE, переопределив тем самым отображаемый вид сообщения:

Более того, можно подставить & вместо типа сообщения и передавать его как параметр 🙂

Начиная с ABAP 7.4. нам стали доступны операторы конструкторы, такие как:

Одной из особенностей данных операторов является возможность неявного определения типа через #, из-за чего у некоторых разработчиков часто возникают ошибки связанные с их использованием.

Далее рассмотрим типичные из них.

Читать далее

Рассмотрим простой пример:

В данном случае у нас возникнет исключительная ситуация, т.к. среда не сможет целиком поместить указанное число в переменную типа p.

Как вы считаете что в данном случае будет с переменной lv_p? Очевидным ответом будет — ну раз произошло исключение, значит переменная осталась без изменений. В реальной же ситуации все несколько иначе.

Далее рассмотрим почему.

Читать далее

Согласно документации если мы выполняем цикл по таблице возвращаемой из функционального метода, конструкторных выражений, или табличных выражений, с последующим присвоением к символьным переменным (ASSIGNING) или ссылочным переменным REFERENCE INTO, среда создаёт временную таблицу для данного цикла.

If the internal table is specified as the return value or result of a functional method, a constructor expression, or a table expression, the value is persisted for the duration of the loop. Afterwards, it is no longer possible to access the internal table.

Пример:

Далее рассмотрим как это выглядит при анализе используемой памяти в отладке.

Читать далее

Виртуальная сортировка внутренних таблиц, добавленная в ABAP 7.52, описана всего одним методом — virtual_sort, класса CL_ABAP_ITAB_UTILITIES

Основная особенность виртуальной сортировки заключается в том, что вы получаете массив индексов относительно сортировки, без необходимости формирования копии таблицы (или её изменения).

Далее разберём особенности работы метода на простых примерах.

Читать далее

На OpenSAP анонсировали интересный курс посвящённый эффективному DevOps в решениях SAP, темы курса:

  • Week 1: Introduction to DevOps
  • Week 2: CI/CD with ABAP (On-Premise)
  • Week 3: Delivery of Cloud Applications
  • Week 4: Hybrid Change and Test Management
  • Week 5: Operation of Your Solution and Summary

До версии языка 7.51 чтобы предоставить фиксированный набор значений, например, для передачи в методы нашего API, приходилось использовать именованные константы и вручную реализовывать контроль ввода значений этих констант. Типичный пример стандартного API по работе с SALV:

Значением по умолчанию мы могли дать представление разработчикам использующим наше API, откуда они могут взять значения констант. Однако никакого контроля со стороны языка на этапе активации система не производит, что позволяет передавать в целом любые значения из диапазона типа I. Контроль на этапе выполнения уже оставался на совести разработчика API.

Начиная с версии языка 7.51 у нас появилась возможность объявлять так называемые перечисляемые типы. Причём контроль за вводом осуществляется уже на уровне языка. Далее разберём как именно их можно использовать.

Читать далее

На DockerHub выложили Trial версию ABAP Platform 1909 (СУБД HANA 2.0) c инструкцией по установке и запуску. Более подробно про эту новость и особенности данной версии здесь.

Для установки требуется:

  • Около 170Гб на жёстком диске
  • 16Гб оперативной памяти под контейнер.

Доп. инструкции: