Текущее время: Пт, мар 29 2024, 10:53

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Невозможно обработать исключение в Z-ФМ  Тема решена
СообщениеДобавлено: Чт, авг 11 2022, 13:42 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, июл 01 2022, 13:42
Сообщения: 62
Добрый день, делаю первые шаги и не могу понять, почему у меня не получается обработать исключение.
Может, кто-то сможет подсказать, в чем тут ошибка.

Функция
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.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обработать исключение не получается
СообщениеДобавлено: Пт, авг 12 2022, 09:14 
Специалист
Специалист

Зарегистрирован:
Чт, дек 02 2010, 08:37
Сообщения: 156
Не совсем понятно, что значит "не получается обработать исключение".

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обработать исключение не получается
СообщениеДобавлено: Пт, авг 12 2022, 10:12 
Младший специалист
Младший специалист

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обработать исключение не получается
СообщениеДобавлено: Пт, авг 12 2022, 15:42 
Специалист
Специалист

Зарегистрирован:
Чт, дек 02 2010, 08:37
Сообщения: 156
Код ФМ в студию, вот прямо так,
как он выглядит на закладке Исходный текст с самой первой строки по последнюю.
Можно удалить компрометирующие строки :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Невозможно обработать исключение в Z-ФМ
СообщениеДобавлено: Вт, авг 16 2022, 10:47 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, июл 01 2022, 13:42
Сообщения: 62
: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.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Невозможно обработать исключение в Z-ФМ
СообщениеДобавлено: Ср, авг 17 2022, 09:30 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2014, 09:41
Сообщения: 179
saphir написал(а):
Code:
FUNCTION zz_v_testf.
" Вот тут будет стандартное исключение деления на ноль
  function_result = avariable / bvariable.

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

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Невозможно обработать исключение в Z-ФМ
СообщениеДобавлено: Ср, авг 17 2022, 10:34 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, июл 01 2022, 13:42
Сообщения: 62
спасибо


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB