Всем привет!

Друзья, как вы могли заменить, в этом блоге уже давно не было новых статей. В первую очередь это связано с тем, что не так просто найти что-нибудь интересное, о чем хотелось бы с вами поделиться. Однако, сегодня мне есть что вам рассказать.

На днях со мной поделились одним любопытным трюком (Костя, привет из интернета), о котором, несмотря на достаточно большой опыт разработки на ABAP, я не знал.

Итак, у нас есть стандартный отчет STANDARD_REPORT, в котором есть подпрограмма (FORM) greeting. Мы хотим вызвать ее в своем отчете, вызвав с помощью PERFORM … IN PROGRAM, но вот незадача — она использует глобальную переменную gv_name (Кто это вообще писал? ЪуЪ).

Создавать свою подпрограмму нам разумеется не хочется. Как же нам тогда выйти из этой ситуации?

Что ж, выход есть. Давайте посмотрим на код ниже.

Вся магия здесь находится в третьей строке. Мы вызываем несуществующую в отчете подпрограмму nonexistent_subroutine (ее имя не важно), а затем получаем доступ к gv_name с помощью присвоения ссылки, и инициализируем ее.

После того, как gv_name проинициализирована, мы можем вызывать greeting и посмотреть на результат.

Работает!

Если у вас есть какая-либо информация о том, как это работает, или, возможно, есть ссылка на документацию — поделитесь ей пожалуйста. Будет интересно почитать.

А у меня на сегодня все.

Пока!


P.S.

Я понимаю что FORM’ы в ABAP устарели, но все же, вдруг это кому-нибудь пригодится 🙂.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.