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.