SAPфорум.RU
https://www.sapboard.ru/forum/

Невозможно обработать исключение в Z-ФМ
https://www.sapboard.ru/forum/viewtopic.php?f=13&t=100156
Страница 1 из 1

Автор:  saphir [ Чт, авг 11 2022, 13:42 ]
Заголовок сообщения:  Невозможно обработать исключение в Z-ФМ  Тема решена

Добрый день, делаю первые шаги и не могу понять, почему у меня не получается обработать исключение.
Может, кто-то сможет подсказать, в чем тут ошибка.

Функция
Code:
IF ( bvariable = 0 ) .
    RAISE nulldivision.
   ELSE.
    WRITE: / 'This is', function_result.
  ENDIF.


Программа
Code:
PARAMETERS: a TYPE I, B TYPE I.
DATA: result TYPE I.

CALL FUNCTION 'ZZ_V_TESTF'
EXPORTING
  avariable = a
  bvariable = b
  IMPORTING
  function_result = result
  EXCEPTIONS
    NULLDIVISION = 1.

CASE sy-subrc.
  WHEN 0.
    WRITE: / 'Программа завершилась нормально'.
    WHEN 1.
    WRITE: / 'Что-то пошло не так'.
ENDCASE.

Автор:  baboon [ Пт, авг 12 2022, 09:14 ]
Заголовок сообщения:  Re: Обработать исключение не получается

Не совсем понятно, что значит "не получается обработать исключение".

Полностью повторил код.
Всё работает как надо - WRITE'ом выводятся соответствующие сообщения.
Если, конечно, внутри функции только IF...ENDIF стоит.

Автор:  saphir [ Пт, авг 12 2022, 10:12 ]
Заголовок сообщения:  Re: Обработать исключение не получается

Спасибо за ответ.
НЕ получается: когда ввожу 0 (во втором значении b переменная), вываливается ошибка. А должно быть написано, что пошло не так, т.е обработаться исключительная ситуация.

Автор:  baboon [ Пт, авг 12 2022, 15:42 ]
Заголовок сообщения:  Re: Обработать исключение не получается

Код ФМ в студию, вот прямо так,
как он выглядит на закладке Исходный текст с самой первой строки по последнюю.
Можно удалить компрометирующие строки :)

Автор:  saphir [ Вт, авг 16 2022, 10:47 ]
Заголовок сообщения:  Re: Невозможно обработать исключение в Z-ФМ

:lol:
Code:
REPORT ZZ_V_TEST.
PARAMETERS: a TYPE I, B TYPE I.
TYPES: BEGIN OF str_table,
  field1(20) TYPE C,
  field2(20) TYPE C,
  END OF str_table.

DATA: result TYPE I,
      real_table TYPE STANDARD TABLE OF str_table,
      wa_real_table TYPE str_table,
      old_real_table TYPE STANDARD TABLE OF str_table WITH HEADER LINE.

wa_real_table-field1 = 'Поле 1'.
wa_real_table-field2 = 'Поле 2'.
APPEND wa_real_table TO old_real_table.
*READ TABLE old_real_table.
LOOP AT old_real_table.
WRITE:/ old_real_table-field1, old_real_table-field2.
ENDloop.

CALL FUNCTION 'ZZ_V_TESTF'
EXPORTING
avariable = a
bvariable = b
  IMPORTING
function_result = result
  EXCEPTIONS
   NULLDIVISION = 1.

CASE sy-subrc.
WHEN 0.
  WRITE: / 'Программа завершилась нормально'.
   WHEN 1.
    WRITE: / 'Что-то пошло не так'.
ENDCASE.



Code:
FUNCTION zz_v_testf.

  function_result = avariable / bvariable.
  IF ( bvariable = 0 ) .
    RAISE nulldivision.
   ELSE.
    WRITE: / 'This is', function_result.
  ENDIF.


ENDFUNCTION.

Автор:  UKY [ Ср, авг 17 2022, 09:30 ]
Заголовок сообщения:  Re: Невозможно обработать исключение в Z-ФМ

saphir написал(а):
Code:
FUNCTION zz_v_testf.
" Вот тут будет стандартное исключение деления на ноль
  function_result = avariable / bvariable.

" До этого кода дело даже не дойдёт
  IF ( bvariable = 0 ) .
    RAISE nulldivision.
   ELSE.
    WRITE: / 'This is', function_result.
  ENDIF.
ENDFUNCTION.

Само деление надо делать же после проверки. У вас другая системная исключительная ситуация деления на ноль получается, а не ваша nulldivision.

Автор:  saphir [ Ср, авг 17 2022, 10:34 ]
Заголовок сообщения:  Re: Невозможно обработать исключение в Z-ФМ

спасибо

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/