Полный список способов объявления переменных, типов и т.п. в ABAP - PullRequest
1 голос
/ 13 июня 2019

Я пытаюсь скомпилировать все способы, которые ABAP предоставляет для объявления переменных, типов и т. Д., Включая устаревшие варианты и варианты синтаксиса acrane.Так, например, я бы включил FIELD-GROUPS в список, но не объявление классов.Мой текущий список выглядит следующим образом.Я что-то пропустил?

  • операторы, объявляющие переменные

    • DATA-подобные декларативные операторы

      DATA (исключая DATA BEGIN OF COMMONЧАСТЬ), СТАТИКА, ПАРАМЕТР, ПАРАМЕТРЫ, КОНСТАНТЫ

    • СИМВОЛЫ ПОЛЯ

    • встроенные объявления
    • фактические параметры процедур

      ФОРМА (подпрограмма), ФУНКЦИЯ, МЕТОД

    • другие операторы объявления переменных

      RANGES, SELECT-OPTIONS: есть еще?

  • операторы, объявляющие типы

    • ТИПЫ
  • другие операторы

    • НАЧАЛО ДАННЫХ ОБЩЕЙ ЧАСТИ

      не декларативное заявление само по себе, а способ группировки дальнейших операторов DATA.

    • ГРУППЫ ПОЛЕЙ

      объявляет набор данных извлечения, который не является частью концепции типа ABAP для типов данных и объектов данных

Дискlaimer: Мы пишем инструмент на Java, который анализирует и преобразует ABAP-код.В частности, мы не собираемся писать новый код ABAP.Но вместо этого наш инструмент должен обрабатывать все ABAP, даже устаревшие операторы и непонятные варианты синтаксиса.Кроме того, я хотел бы отметить, что я не эксперт ABAP.

1 Ответ

2 голосов
/ 13 июня 2019

Чтобы дополнить свой список, вы можете добавить эти (частично взятые из ABAP doc - устаревшие объявления ):

  • TABLES
  • NODES
  • LOCAL
  • FIELDS
  • CLASS-DATA
  • ALIASES для атрибутов (на самом деле не объявление, но добавляет новое имя для заданных атрибутов)
  • CONTROLS

В выражениях конструктора есть вспомогательные переменные (FOR aux ..., FOR, LET ...)

Программы имеют предопределенные типы и переменные (SY, SCREEN и т. Д .; я чувствую, что вы можете извлечь все из них из «неявных включений системы», но вы должны знать, что они включают).

В конечном итоге рассмотрим операторы внутри макросов , либо внутренние (DEFINE), либо внешние (таблица TRMAC).

Существуют утверждения, которые соответствуют внутренним включениям :

  • TYPE-POOLS (было обязательным до 7.02)
  • INFOTYPES
  • CONTEXTS

Конечно, есть также все типы DDIC .

Я не знаю, хотите ли вы также сканировать CREATE DATA (для таких инструментов, как абстрактные интерпретаторы).

PS: вы говорите, что общие части не являются реальными декларативными утверждениями, это неправильно, они объявляют объекты данных, плюс дополнительную «функцию совместного использования».

...