Как сгенерировать дамп в ABAP-программе?
Пояснение к вопросу
На первый взгляд заголовок данной заметки звучит как "огонь". Пока еще не пожар, но уже вполне себе "огонь". Кто-то может возразить, мол, для того, чтобы сгенерировать дамп можно воспользоваться многими стандартными способами: от банальной ошибки в самой программе, до проведения хорошего тестирования той или иной разработки.
Хочу рассмотреть в этой заметке ситуацию, выходящую за рамки обозначенных выше примеров. Допускаю ситуацию, при которой возникает потребность в формировании дампа в ABAP-программе, для обработки какой-то исключительной (ошибочной) ситуации. Сделать-то это не составляет большого труда.
Решение вопроса
Создайте сообщение, которое должно фигурировать в результате формирования дампа (транзакция SE91)
Выполните вызов созданного сообщения в программе
Обратите внимание на тип вызываемого сообщения (TYPE = X), который легко может быть определен при добавлении сообщения, нажатием на кнопку в ABAP-редакторе (транзакция SE38)
См. Message
Non-Handleable Exceptions
Cause: Message type unknown
Runtime Error: MESSAGE_TYPE_UNKNOWNCause: Deliberate raising of a termination with short dump
Runtime Error: MESSAGE_TYPE_X Runtime Error: MESSAGE_TYPE_X_TEXTCause: 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_COMMITCause: 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
Тестируем