Как сгенерировать дамп в ABAP-программе?

Как сгенерировать дамп в ABAP-программе?

Пояснение к вопросу

На первый взгляд заголовок данной заметки звучит как "огонь". Пока еще не пожар, но уже вполне себе "огонь". Кто-то может возразить, мол, для того, чтобы сгенерировать дамп можно воспользоваться многими стандартными способами: от банальной ошибки в самой программе, до проведения хорошего тестирования той или иной разработки.

См. Categories of ABAP Runtime Errors

См. ABAP Runtime Errors and Short Dumps

Хочу рассмотреть в этой заметке ситуацию, выходящую за рамки обозначенных выше примеров. Допускаю ситуацию, при которой возникает потребность в формировании дампа в ABAP-программе, для обработки какой-то исключительной (ошибочной) ситуации. Сделать-то это не составляет большого труда.

Решение вопроса

Создайте сообщение, которое должно фигурировать в результате формирования дампа (транзакция SE91)

Рисунок 1.

Выполните вызов созданного сообщения в программе

Рисунок 2.

Обратите внимание на тип вызываемого сообщения (TYPE = X), который легко может быть определен при добавлении сообщения, нажатием на кнопку  в ABAP-редакторе (транзакция SE38)

См. Message

Non-Handleable Exceptions

  • Cause: Message type unknown
    Runtime Error: MESSAGE_TYPE_UNKNOWN

  • Cause: Deliberate raising of a termination with short dump
    Runtime Error: MESSAGE_TYPE_X Runtime Error: MESSAGE_TYPE_X_TEXT

  • Cause: It is not possible to catch messages of the type 'A' with the language element CALL FUNCTION ... EXCEPTIONS error_message during ON COMMIT processing.
    Runtime Error: MESSAGE_ROLLBACK_ON_COMMIT

  • Cause: It is not possible to catch messages of the type 'A' with the language element CALL FUNCTION ... EXCEPTIONS error_message during an update.
    Runtime error: MESSAGE_ROLLBACK_IN_POSTING

Тестируем