РАЗРАБОТКА ABAPP1L2

ABAP: чтение существующего кода и версии языка

Как восстановить поток данных в существующей программе и отличать Standard ABAP от ограниченных версий языка и контрактов released API.

Ревизия 1 Общие понятия Частичное покрытие Контекст: CTX-GENERAL документальная опора: недостаточно данных
Справочный материал. Контракты данных, архитектурные решения и ограничения применения. Источники приведены в материалах, где используются внешние основания.

ABAP: чтение существующего кода и версии языка#

Чтение ABAP-программы начинается не с догадки о назначении имени класса, а с восстановления наблюдаемого потока данных и зависимостей. Одновременно нужно установить версию языка каждого важного объекта: она задаёт допустимую грамматику и доступ к объектам репозитория. Материал даёт процедуру анализа, но не описывает конкретную систему SAP.

Карта чтения существующей программы#

  1. Найдите точку входа и путь запуска: отчет, транзакцию, задачу, обработчик сервиса или вызывающий объект.
  2. Проверьте тип объекта, пакет и software component, а также язык объекта и вызываемых им зависимостей.
  3. Проследите значения от источника до результата: параметры, отбор, чтение, фильтрацию, преобразование, группировку, расчёт, запись и вывод сообщения.
  4. Выпишите бизнес-ключи, валюты, даты и предположения о пропущенных или повторных данных.
  5. Отметьте скрытые зависимости: глобальное состояние, системное время, авторизации, таблицы, function modules, BAdI, exits, очереди и внешние API.
  6. Найдите точки фиксации и обработки ошибок: кто выполняет commit или rollback, что можно повторить, как распознаётся уже обработанная операция.
  7. Подтвердите гипотезу тестом, трассировкой или статической проверкой в соответствующей системе; одного чтения текста недостаточно для утверждения о runtime-поведении.

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

Синтаксис и доступность API являются разными проверками#

Standard ABAP описывает широкий набор языковых элементов и свободный доступ к объектам репозитория, с оговорками системы пакетов. Ограниченная версия ABAP for Cloud Development разрешает не весь синтаксис и не свободный доступ к объектам. В ограниченных версиях могут использоваться только объекты, доступные согласно правилам и контрактам выпуска API. ABAP for Key Users является отдельной ограниченной версией для соответствующего типа расширений.

Поэтому успешный поиск имени объекта ещё не означает, что его разрешено использовать из конкретной разработки. Для ABAP Cloud документация указывает, что допускаются подходящие released APIs, а требования зависят от release contract и видимости для целевой языковой версии. Состав разрешённых объектов зависит от системы и версии. Проверяйте каталог доступных API в целевой системе, а не переносите список из другой редакции.

Как проверить совместимость#

  1. Установите языковую версию, пакет, software component и продуктовый контекст объекта.
  2. Выполните syntax check именно для требуемой языковой версии: он может находить как запрещённый синтаксис, так и недоступные ссылки.
  3. Для проекта целевой области запустите ATC с подходящими check variant и системой проверки; сохраните список найденных проблем и исключений.
  4. Для каждой замены проверьте поведение, типы, интерфейс и release contract, а не только совпадение названий.
  5. Запустите ABAP Unit, интеграционные сценарии и необходимые регрессионные сверки на целевой версии.

Синтаксическая проверка одного открытого объекта не равна проверке всего решения. ATC, совместимость API, Unit-тесты и системные сценарии отвечают на разные вопросы. Успешная локальная проверка также не доказывает, что все вызываемые компоненты доступны в другой редакции SAP.

Миграция и чтение старых конструкций#

Не заменяйте устаревший оператор только потому, что он выглядит старым. Сначала определите, почему он используется, какие типы и порядок обработки он создаёт, и какая часть системы зависит от побочного эффекта. Затем проверяйте поведение по контракту и выбирайте замещение, допустимое в целевой версии. Для ограниченной версии может потребоваться released API или разрешённый extension point, а не прямое обращение к внутреннему объекту.

При сравнении Standard ABAP и ABAP Cloud ведите отдельный список:

Проверка Что установить
Версия языка Какие элементы синтаксиса действуют для объекта
Разрешение объектов Какие API доступны по компоненту и release contract
Продукт и релиз Какие инструменты, объекты и функции доступны в системе
Поведение Сохранились ли финансовые инварианты после изменения
Доказательство Каким тестом или проверкой подтверждён результат

Граница этого справочника#

Приведённая процедура применима как способ анализа, но проект не содержит ABAP-систему, версии клиентского репозитория или выгрузку API каталога. Для данной страницы не выполнялись синтаксическая проверка, ATC, ABAP Unit, миграционный анализ или SAP runtime. Ссылки на SAP Help сохранены как метаданные и не являются доказательством доступности объекта в конкретной установке.

Источники и документация

  1. ABAP Language Versions ↗
  2. Cloud-Optimized ABAP Language ↗
  3. Released APIs ↗
  4. Defining the ABAP Language Version of Development Objects ↗

Источники нужны для самостоятельной проверки. Примеры и интерпретации на сайте могут быть учебными упрощениями.