Лучшее сообщение об ошибке вместо SAPSQL_PARSE_ERROR - PullRequest
0 голосов
/ 26 октября 2018

Я написал функцию в ABAP, которая вызывается через SAP pyrfc.

Если существует SAPSQL_PARSE_ERROR, вызывающий RFC (клиент, написанный на Python) получает бессмысленное сообщение об ошибке:

ABAPRuntimeError: RFC_ABAP_RUNTIME_FAILURE (rc = 3): ключ = SAPSQL_PARSE_ERROR, сообщение = Beim Parsen einer Dynamischen Angabe trat ein Fehler auf. [MSG: класс =, тип =, число =, v1-4: = ;;;]

Через tcode st22 Я могу посмотреть на детали. Чтобы ускорить передачу в оба конца, я бы хотел улучшить сообщение об ошибке, которое отображается в клиенте python.

Я думаю, но не знаю, что нужно изменить функцию abap. Как получить ценный текст, который виден в st22?

Я знаю, что вывод st22 очень длинный. Ценный текст находится в немецком sap gui, поле под названием «Fehleranalyse», что означает примерно «Устранение неполадок» или более буквально «анализ ошибок»

1 Ответ

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

SAPSQL_PARSE_ERROR предполагает, что ваша функция с удаленным включением в тот или иной момент отправляет неверный запрос OpenSQL в базу данных.Это должно привести к обрабатываемому исключению типа CX_SY_DYNAMIC_OSQL_SYNTAX.

. Не перехват этого исключения приводит к дампу.Транзакция ST22 - это инструмент анализа дампа, который позволяет вам проверять их.

Помещение TRY ... CATCH вокруг запроса OpenSQL должно позволить вам перехватить это исключение и проанализировать его атрибуты для более значимого сообщения.Затем вы можете выдать собственное исключение, чтобы переслать что-то более полезное для вызывающего абонента RFC.

...