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-ФМ |
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/ |