Возбудить исключение с пользовательским сообщением в ABAP - PullRequest
0 голосов
/ 05 октября 2018

Мне нужен самый простой способ вызвать исключение с помощью настраиваемого сообщения в ABAP.

Было бы замечательно, если бы это можно было сделать с использованием нескольких символов.Если возможно, в одной строке.

Я хочу это для отладки, а не для запуска производственного кода.

Справочная информация: В прошлом я использовал язык программирования Python.Мне нравится отлаживать без отладчика.Я вставил несколько assert 0, myvar строк в код и выполнил код.Для меня это кажется быстрее, чем традиционный отладчик с переходом или в строки кода.Я ищу эквивалент assert 0, mvar в ABAP.

Повышение исключения - это просто стратегия, которая у меня на уме в данный момент.Любая другая стратегия достижения общей цели приветствуется.

Я кодирую функцию, которая вызывается через RFC.

Ответы [ 3 ]

0 голосов
/ 05 октября 2018

В ABAP есть оператор ASSERT, который вы можете использовать аналогично вашему случаю Python.

Вот документ:

ASSERT

0 голосов
/ 06 октября 2018

Как вы уже узнали, MESSAGE text TYPE 'E' позволит вам выдавать произвольные сообщения, которые прерывают выполнение программы.Вы также можете выбрать 'A' в качестве типа.Однако не используйте это для проверки вашего кода .

Для этого есть несколько причин:

  1. В явной документации MESSAGEутверждает, что MESSAGE предназначен исключительно для взаимодействия с пользователем и должен использоваться только в том уровне кода, который ближе всего к пользовательскому интерфейсу.Точное поведение сообщений сложно предсказать, поскольку оно зависит от режима обработки, в котором выполняется ваш код, ср. документация поведения сообщения .Если вам абсолютно необходимо, используйте ASSERT вместо этого, что ведет к гораздо более последовательному поведению.

  2. Вы должны не изменить свой рабочий код дляцели тестирования.Тестовый код и рабочий код должны быть как можно более непересекающимися, так как в противном случае вы рискуете случайно оставить код, предназначенный исключительно для тестирования в вашем рабочем коде.В наши дни ABAP предлагает мощную систему модульного тестирования в форме ABAP Unit.Все методы подтверждения cl_abap_unit_assert предлагают параметр msg, с помощью которого вы можете определить очень конкретные сообщения об ошибках для неудачных тестов.Это позволяет вам проводить детальное тестирование без необходимости изменения производственного кода (, если вы разработали его для тестирования).

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

0 голосов
/ 05 октября 2018

Я обнаружил, что это работает:

message my_string_var type 'E'.

Я добавляю СООБЩЕНИЕ ТИПА 'E' только временно в код.Я проверяю свой код ABAP извне (через PyRFC ).

...