Включение сообщения об ошибке в ABAP ASSERT - PullRequest
0 голосов
/ 04 октября 2018

У меня есть строка ABAP, подобная этой:

assert ( cond = 'x' ).

Вызывающая функция (через rfc) получает бессмысленное сообщение о том, что какое-то утверждение не удалось.

Поскольку в утверждениях несколькомой исходный код, я хотел бы предоставить и дополнительный текст.

Таким образом, я могу легко найти соответствующую строку, если клиент отправит мне сообщение об ошибке.

Как сделать это наиболее простымпуть в ABAP?

Обновление: этот вопрос сфокусирован на assert.Но это неправильный путь в ABAP.Я написал новый и лучший вопрос здесь: Поднять исключение с пользовательским сообщением в ABAP

Ответы [ 2 ]

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

Я обнаружил, что это работает:

message my_string_var type 'E'.

Это не утверждение, а то, что я хочу: он завершает функцию и отображает мою переменную.

Вы можете использовать этоудобный метод для сериализации переменных, чтобы увидеть их внутренности.Здесь переменная foo_var сериализуется в json:

MESSAGE |Error foo_var: | && 
     /ui2/cl_json=>serialize( data = foo_var 
     pretty_name = /ui2/cl_json=>pretty_mode-low_case ) TYPE 'E'.
0 голосов
/ 04 октября 2018

функция утверждения, предназначенная для использования в тестовых классах, подробности здесь .Я думаю, что это не подходит для использования в нормальных кодах.Вы можете использовать check для той же функциональности, но оно не возвращает никакого сообщения.Вызывать исключения в функции или классе - правильный путь.

Вы можете вернуть OK и переменную MESSAGE, если не хотите использовать исключения.В начале вашего метода / функции установите OK как пустое и СООБЩЕНИЕ, такое как сообщение «есть ошибка».Обновите сообщение вручную, прежде чем что-то делать.В конце очистите сообщение и установите X на СООБЩЕНИЕ.

function ZMKY_TEST.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(COND) TYPE  C
*"  EXPORTING
*"     REFERENCE(OK) TYPE  C
*"     REFERENCE(MESSAGE) TYPE  STRING
*"----------------------------------------------------------------------

  clear: OK, MESSAGE.
  MESSAGE = 'There is an error.'

  MESSAGE = 'COND not equal to X'.
  check COND = 'X'.

  clear: MESSAGE.
  OK = 'X'.

endfunction.
...