Текущее время: Чт, июл 24 2025, 09:49

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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