Оптимальное использование user (customer) exit’ов с помощью вызова BADI

Очень часто в коде какого-либо user (customer) exit можно встретить кучу разных ветвлений, одно вставил программист Петя по задаче X, другое вставил программист Вася по задаче Y. Со временем подобный код становится плохо читаемым. Для удобства его восприятия можно воспользоваться современными BADI, основанными на Enhancement Framework.

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

Ниже рассмотрен небольшой пример того, как создать и вызвать реализацию BADI.

  • Заходим в транзакцию SE18 и создаем точку расширения:

1

2

  • Создаем BADI для нашего user exit’a

3

Убедимся, что создаваемое BADI является многоразовым, т.е. допускается сколько угодно его реализаций:

4

  •  После создания BADI, определяем его интерфейс. В интерфейсе описываем единственный метод some_exit, метод будет получать данные из user  exit’а. Далее, когда будут создаваться реализации нашего BADI, программисты сами будут решать, что делать с этими данными.

5

6

  •  Добавим единственный параметр:

7

  •  После определения BADI можно приступить к его вызову в коде user exit’a. Далее будет показано как вызвать BADI в тестовой программе (вместо вызова в коде user exit):

8

  •  Как видно после запуска данные остались неизменными, создадим реализацию расширения и BADI:

9

10

11

  •  Определим метод some_exit:

12

13

Убедимся, что все объекты были активированы, вызовем наш тестовый отчёт еще раз. Как видно из результата мы изменили данные в реализации BADI.

  • Данила

    Спасибо за статью!
    Классно было бы увидеть ряд подобных статей на тематику расширения стандарта!

    • Astrafox

      Спасибо за комментарий 🙂 , расширение стандартных транзакций с enhancement framework? Или в целом по технологям расширений?

      • Данила

        Вам спасибо за сайт:) Много полезного черпаю!
        В целом по технологиям расширения (User-Exits,Screen-Exits,Menu-Exits,BTE,Замещения,Customer Exit,Modification и т.д.), включая конечно и enhancement framework!;)
        Думаю, всем, особенно начинающим, будет весьма интересно это прочитать в «живых» примерах.