Инлайновая декларация ABAP – DATA()

Инлайновая декларация в ABAP стала доступна начиная с версии ABAP 7.4. В предыдущих использовались старые варианты записи. Вот, например, варианты декларации внутренних таблиц в старом и новом вариантах. Существует множество вариантов использования инлайн декларирования, но они не заменят полностью обычный вид определения переменных. Они только дадут возможность для некоторых случаев заменить его на новый вид записи.

 

Инлайновая декларация ABAP в SAP программах на примерах.

https://youtu.be/45RSSzlYbhw
DATA ABAP Инлайновая декларация

Важно знать про инлайновую декларации ABAP:

  • Инлайновые переменные определяются только локально
  • Тип переменной определяется в момент компиляции, 
    а не в момент создания переменной
  • Переменная, определённая инлайн внутри какой-либо конструкции, например, LOOP или CASE и др. Остаётся доступной и вне этих конструкции ниже по коду ABAP программы.

Определение ABAP переменной в любой момент

+ Удобно  при создании переменной, сразу произвести её заполнение нужными данными. После определения/заполнения на уже готова к использованию без лишних строк кода.

– В недостаток некоторые указывают снижение читабельности кода, но, по моему мнению, это спорный вопрос.

https://youtu.be/dmnJcISXZcE
 

Считывание данных во внутреннюю таблицу определённую инлайн

+ Удобно  считывать данные из таблицы базы данных во внутреннюю таблицу определённую инлайн. В этом случае программа сама сформирует таблицу со столбцами, указанными после оператора SELECT. При этом, не нужно предварительно определять тип внутренней таблицы или считывать лишние данные в неё.

– Недостаток этого варианта в том, что таблица, которая определена инлайн, всегда стандартная (STANDART TABLE). А работа со стандартными таблицами при большом объёме данных – это не оптимальный вариант. Более оптимально использовать сортированные или хешированные таблицы, в зависимости от определённого случая.

Получение строки или ссылки на строку внутренней таблицы

+ Удобно без определения дополнительных переменных пробежаться по внутренней таблице и, например, изменить значения в строках. Или считать данные с использованием конструкции READ TABLE и поместить ссылку в инлайн переменную.

– Недостатком этого варианта называют то, что если одну переменную использовать два раза в одинаковых циклах, то не получится поменять их местами без дополнительных правок кода. Также, слышал комментарии о том, что данный вариант определения снижает читабельность кода. По моему мнению, этот вариант удобен и я не вижу у него каких-то реальных минусов.

 

Инлайновая декларация ABAP при вызове методов во входных и выходных параметрах

+ Удобно в момент вызова метода, например, определить таблицу или структуру и передать её в метод. При этом даже не создавая отдельной переменной с наименованием. Например,
таблицу “VALUE #( ( day = ’22’ year = ‘2020’ ) )” или
структуру “VALUE #( day = ’22’ year = ‘2020’ )”, заполнив только необходимые для нас поля.
Также, мы можем непосредственно при вызове метода поместить результат его выполнения в переменную определённую инлайн.

– Ограничения этого способа в том, что мы не можем передать инлайн переменную в метод или получить её непосредственно, при вызове, если параметр имеет родовой тип DATA (RV_RESULT Returning Type Ref To DATA). Также, мы не можем, по понятным причинам, определить переменные CHANGING инлайн. Важным ограничением является то, что мы не можем использовать инлайновое декларирование непосредственно при вызове ФМ.

Добавить комментарий