ABAP: лучше сообщение об ошибке на SAPSQL_PARSE_ERROR

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

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

ABAPRuntimeError: RFC_ABAP_RUNTIME_FAILURE (rc = 3): key = SAPSQL_PARSE_ERROR, message = Beim Parsen einer dynamicischen Angabe trat ein Fehler auf. [MSG: класс =, тип =, число =, v1-4:=;;;]

Через ткод st22 Я могу посмотреть на детали.

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

Я предполагаю, но не знаю, что функция abap должна быть изменена.

Как получить ценный текст, который виден в st22?

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

1 ответ

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

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

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

Другие вопросы по тегам