Текущее время: Пн, авг 04 2025, 10:43

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: класс ошибок - обработка
СообщениеДобавлено: Вт, мар 03 2009, 16:04 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, мар 03 2009, 12:33
Сообщения: 141
всем привет!
есть такая обработка ошибок - эксперимент try/catch
Code:
      TRY .
          READ TABLE p INTO p_wa WITH KEY D = 'X'.
          IF sy-subrc = 0.
            RAISE EXCEPTION TYPE zcx_z EXPORTING
              textid = zcx_z=>zcx_zz.
          ENDIF.

          CATCH zcx_z INTO exc.
          text = exc->get_text( ).
          MESSAGE text TYPE 'E'.
        ENDTRY.


не могу понять вочто - по какому признаку мне вытащить, что это сообщение именно 'E'?
а вдруг для другого текста (скажем zcx_xx) мне нужно сообщение 'I', например.
не могу найти где в классе ошибок можно хранить этот признак.
PS. в классе сообщений тоже ничего путнего по этой теме не нашел.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: класс ошибок - обработка
СообщениеДобавлено: Вт, мар 03 2009, 17:04 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, янв 18 2008, 10:34
Сообщения: 716
Откуда: Moscow
Пол: Мужской
вафля написал(а):
всем привет!
есть такая обработка ошибок - эксперимент try/catch
Code:
      TRY .
          READ TABLE p INTO p_wa WITH KEY D = 'X'.
          IF sy-subrc = 0.
            RAISE EXCEPTION TYPE zcx_z EXPORTING
              textid = zcx_z=>zcx_zz.
          ENDIF.

          CATCH zcx_z INTO exc.
          text = exc->get_text( ).
          MESSAGE text TYPE 'E'.
        ENDTRY.


не могу понять вочто - по какому признаку мне вытащить, что это сообщение именно 'E'?
а вдруг для другого текста (скажем zcx_xx) мне нужно сообщение 'I', например.
не могу найти где в классе ошибок можно хранить этот признак.
PS. в классе сообщений тоже ничего путнего по этой теме не нашел.


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

_________________
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. (Э. Йодан)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: класс ошибок - обработка
СообщениеДобавлено: Вт, мар 03 2009, 17:21 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, мар 03 2009, 12:33
Сообщения: 141
у меня 1 класс обработки для проги, немного поменяю код, чтобы было понятнее
Code:
      TRY .
          READ TABLE p INTO p_wa WITH KEY D = 'X'.
          IF sy-subrc = 0.
            RAISE EXCEPTION TYPE zcx_z EXPORTING
              textid = zcx_z=>zcx_zz. " zcx_zz - "критическая ошибка!!"
          else.
            RAISE EXCEPTION TYPE zcx_z EXPORTING
              textid = zcx_z=>zcx_xx. "zcx_xx - "предупреждение, для продолжения клацните Enter!!"
          ENDIF.

          CATCH zcx_z INTO exc.
          text = exc->get_text( ).
          MESSAGE text TYPE 'E'.
        ENDTRY.


Значит надо делать либо 2 класса, чтобы развести по ним CATCH.
либо есть какойто хитрый механизм?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: класс ошибок - обработка
СообщениеДобавлено: Вт, мар 03 2009, 17:32 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, янв 18 2008, 10:34
Сообщения: 716
Откуда: Moscow
Пол: Мужской
вафля написал(а):
у меня 1 класс обработки для проги, немного поменяю код, чтобы было понятнее
Code:
      TRY .
          READ TABLE p INTO p_wa WITH KEY D = 'X'.
          IF sy-subrc = 0.
            RAISE EXCEPTION TYPE zcx_z EXPORTING
              textid = zcx_z=>zcx_zz. " zcx_zz - "критическая ошибка!!"
          else.
            RAISE EXCEPTION TYPE zcx_z EXPORTING
              textid = zcx_z=>zcx_xx. "zcx_xx - "предупреждение, для продолжения клацните Enter!!"
          ENDIF.

          CATCH zcx_z INTO exc.
          text = exc->get_text( ).
          MESSAGE text TYPE 'E'.
        ENDTRY.


Значит надо делать либо 2 класса, чтобы развести по ним CATCH.
либо есть какойто хитрый механизм?


хмм че то странный код , а нужно ли вообще здесь использовать TRY CATCH .

_________________
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. (Э. Йодан)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: класс ошибок - обработка
СообщениеДобавлено: Вт, мар 03 2009, 17:39 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, мар 03 2009, 12:33
Сообщения: 141
странный - потому что сильно упрощенный :D


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: класс ошибок - обработка
СообщениеДобавлено: Вт, мар 03 2009, 17:42 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, янв 18 2008, 10:34
Сообщения: 716
Откуда: Moscow
Пол: Мужской
вафля написал(а):
странный - потому что сильно упрощенный :D


ну раз так хочется ну можете какю нибудь переменную заюзать, значения которой присваивать в блоке IF, ну а в CATCH уже анализировать значение этой переменной

UPD. : хотя все равно странный код. почему нельзя просто блок IF использовать, а если все же нужно вызывать исключение, ну скажем в ФМ , хотя не похоже что этов ФМ , тогда смсыла в обработке вызываемых иключений не вижу

_________________
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. (Э. Йодан)


Последний раз редактировалось ghost Вт, мар 03 2009, 18:15, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: класс ошибок - обработка
СообщениеДобавлено: Вт, мар 03 2009, 18:12 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, мар 03 2009, 12:33
Сообщения: 141
после некоторых изысканий пришел к выводу, что надо делать так :idea: :
Code:
TRY .
          READ TABLE p INTO p_wa WITH KEY D = 'X'.
          IF sy-subrc = 0.
            RAISE EXCEPTION TYPE zcx_z EXPORTING
              textid = zcx_z=>zcx_zz
              msgtyp = 'E'.
          else.
            RAISE EXCEPTION TYPE zcx_z EXPORTING
              textid = zcx_z=>zcx_xx
              msgtyp = 'W'.           
          ENDIF.

          CATCH zcx_z INTO exc.
          text = exc->get_text( ).
          MESSAGE text TYPE exc->msgtyp.
        ENDTRY.

может кому сгодится


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: класс ошибок - обработка
СообщениеДобавлено: Вт, мар 03 2009, 23:22 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
мда.
Code:
READ TABLE p INTO p_wa WITH KEY D = 'X'.
  IF sy-subrc = 0.
    MESSAGE e208(00) WITH 'Ну зачем же так?'.
  ELSE.
    MESSAGE w208(00) WITH 'С пивом потянет'.
  ENDIF.


А если по делу, то нужно делать разные классы исключений для разных веток обработки обработки ;)

_________________
С уважением,
Удав.


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

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


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

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


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

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