Учебники

SAP ABAP — переменные

Переменные — это именованные объекты данных, используемые для хранения значений в выделенной области памяти программы. Как следует из названия, пользователи могут изменять содержимое переменных с помощью операторов ABAP. Каждая переменная в ABAP имеет определенный тип, который определяет размер и расположение памяти переменной; диапазон значений, которые могут быть сохранены в этой памяти; и набор операций, которые могут быть применены к переменной.

Вы должны объявить все переменные, прежде чем их можно будет использовать. Основная форма объявления переменной —

DATA <f> TYPE <type> VALUE <val>. 

Здесь <f> указывает имя переменной. Имя переменной может быть длиной до 30 символов. <тип> указывает тип переменной. Любой тип данных с полностью указанными техническими атрибутами известен как <тип>. <Val> указывает начальное значение переменной <f>. Если вы определяете элементарную переменную фиксированной длины, оператор DATA автоматически заполняет значение переменной начальным значением для конкретного типа. Другие возможные значения для <val> могут быть литералом, константой или явным предложением, например Is INITIAL.

Ниже приведены допустимые примеры объявлений переменных.

DATA d1(2) TYPE C.  
DATA d2 LIKE d1.  
DATA minimum_value TYPE I VALUE 10. 

В приведенном выше фрагменте кода d1 — это переменная типа C, d2 — это переменная типа d1, а minimal_value — это переменная целочисленного типа ABAP I.

В этой главе будут описаны различные типы переменных, доступные в ABAP. В ABAP есть три вида переменных:

  • Статические переменные
  • Переменные ссылки
  • Системные переменные

Статические переменные

  • Статические переменные объявляются в подпрограммах, функциональных модулях и статических методах.

  • Время жизни связано с контекстом объявления.

  • С помощью оператора ‘CLASS-DATA’ вы можете объявлять переменные внутри классов.

  • Оператор PARAMETERS может использоваться для объявления элементарных объектов данных, которые связаны с полями ввода на экране выбора.

  • Вы также можете объявить внутренние таблицы, которые связаны с полями ввода на экране выбора, используя оператор SELECT-OPTIONS.

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

Время жизни связано с контекстом объявления.

С помощью оператора ‘CLASS-DATA’ вы можете объявлять переменные внутри классов.

Оператор PARAMETERS может использоваться для объявления элементарных объектов данных, которые связаны с полями ввода на экране выбора.

Вы также можете объявить внутренние таблицы, которые связаны с полями ввода на экране выбора, используя оператор SELECT-OPTIONS.

Ниже приведены соглашения, используемые при именовании переменной:

  • Вы не можете использовать специальные символы, такие как «t» и «,» для именования переменных.

  • Имя предопределенных объектов данных не может быть изменено.

  • Имя переменной не может совпадать с любым ключевым словом или предложением ABAP.

  • Имя переменных должно передавать значение переменной без необходимости дальнейших комментариев.

  • Дефисы зарезервированы для представления компонентов структур. Следовательно, вы должны избегать дефисов в именах переменных.

  • Символ подчеркивания может использоваться для разделения составных слов.

Вы не можете использовать специальные символы, такие как «t» и «,» для именования переменных.

Имя предопределенных объектов данных не может быть изменено.

Имя переменной не может совпадать с любым ключевым словом или предложением ABAP.

Имя переменных должно передавать значение переменной без необходимости дальнейших комментариев.

Дефисы зарезервированы для представления компонентов структур. Следовательно, вы должны избегать дефисов в именах переменных.

Символ подчеркивания может использоваться для разделения составных слов.

Эта программа показывает, как объявить переменную с помощью оператора PARAMETERS —

REPORT ZTest123_01. 
PARAMETERS: NAME(10) TYPE C, 
CLASS TYPE I, 
SCORE TYPE P DECIMALS 2, 
CONNECT TYPE MARA-MATNR. 

Здесь NAME представляет параметр из 10 символов, CLASS определяет параметр целочисленного типа с размером по умолчанию в байтах, SCORE представляет параметр упакованного типа со значениями до двух десятичных знаков, а CONNECT относится к типу MARA-MATNF словаря ABAP. ,

Приведенный выше код производит следующий вывод —

ABAP словарь

Переменные ссылки

Синтаксис объявления ссылочных переменных —

DATA <ref> TYPE REF TO <type> VALUE IS INITIAL. 
  • REF TO дополнительно объявляет ссылочную переменную ref.

  • Спецификация после REF TO определяет статический тип ссылочной переменной.

  • Статический тип ограничивает набор объектов, на которые может ссылаться <ref>.

  • Динамический тип ссылочной переменной — это тип данных или класс, к которому она относится в данный момент.

  • Статический тип всегда более общий или такой же, как динамический тип.

  • Добавление TYPE используется для создания привязанного ссылочного типа и в качестве начального значения, и после добавления VALUE можно указать только IS INITIAL.

REF TO дополнительно объявляет ссылочную переменную ref.

Спецификация после REF TO определяет статический тип ссылочной переменной.

Статический тип ограничивает набор объектов, на которые может ссылаться <ref>.

Динамический тип ссылочной переменной — это тип данных или класс, к которому она относится в данный момент.

Статический тип всегда более общий или такой же, как динамический тип.

Добавление TYPE используется для создания привязанного ссылочного типа и в качестве начального значения, и после добавления VALUE можно указать только IS INITIAL.

пример

CLASS C1 DEFINITION. 
PUBLIC SECTION. 
DATA Bl TYPE I VALUE 1. 
ENDCLASS. DATA: Oref TYPE REF TO C1 , 
Dref1 LIKE REF TO Oref, 
Dref2 TYPE REF TO I . 
CREATE OBJECT Oref. 
GET REFERENCE OF Oref INTO Dref1. 
CREATE DATA Dref2. 
Dref2→* = Dref1→*→Bl.
  • В приведенном выше фрагменте кода объявлена ​​ссылка на объект Oref и две переменные ссылки на данные Dref1 и Dref2.

  • Обе ссылочные переменные данных полностью типизированы и могут быть разыменованы с помощью оператора разыменования → * в позициях операнда.

В приведенном выше фрагменте кода объявлена ​​ссылка на объект Oref и две переменные ссылки на данные Dref1 и Dref2.

Обе ссылочные переменные данных полностью типизированы и могут быть разыменованы с помощью оператора разыменования → * в позициях операнда.

Системные переменные

  • Системные переменные ABAP доступны из всех программ ABAP.

  • Эти поля фактически заполнены средой выполнения.

  • Значения в этих полях указывают состояние системы в любой данный момент времени.

  • Вы можете найти полный список системных переменных в таблице SYST в SAP.

  • Доступ к отдельным полям структуры SYST можно получить с помощью «SYST-» или «SY-».

Системные переменные ABAP доступны из всех программ ABAP.

Эти поля фактически заполнены средой выполнения.

Значения в этих полях указывают состояние системы в любой данный момент времени.

Вы можете найти полный список системных переменных в таблице SYST в SAP.

Доступ к отдельным полям структуры SYST можно получить с помощью «SYST-» или «SY-».

пример

REPORT Z_Test123_01. 

WRITE:/'SY-ABCDE', SY-ABCDE,       
      /'SY-DATUM', SY-DATUM, 
      /'SY-DBSYS', SY-DBSYS, 
      /'SY-HOST ', SY-HOST, 
      /'SY-LANGU', SY-LANGU,
      /'SY-MANDT', SY-MANDT,
      /'SY-OPSYS', SY-OPSYS,
      /'SY-SAPRL', SY-SAPRL,
      /'SY-SYSID', SY-SYSID,
      /'SY-TCODE', SY-TCODE,
      /'SY-UNAME', SY-UNAME,
      /'SY-UZEIT', SY-UZEIT.

Приведенный выше код производит следующий вывод —