Текущее время: Пт, июл 25 2025, 18:47

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Динамический RAISE
СообщениеДобавлено: Ср, дек 14 2011, 14:52 
Ассистент
Ассистент

Зарегистрирован:
Пн, дек 04 2006, 14:17
Сообщения: 37
Есть обычный ФМ, у которого на закладке "Особые ситуации" перечислены возможные исключения. Как сделать внутри этого ФМ, динамическое указание одного из этих исключений?
По смысле мне нужен RAISE переменной, значение которой было бы одно из описанных исключений.
Спасибо.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамический RAISE
СообщениеДобавлено: Ср, дек 14 2011, 15:03 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
TSTS написал(а):
Есть обычный ФМ, у которого на закладке "Особые ситуации" перечислены возможные исключения. Как сделать внутри этого ФМ, динамическое указание одного из этих исключений?
По смысле мне нужен RAISE переменной, значение которой было бы одно из описанных исключений.
Спасибо.

Будто бы никак.
А в связи с чем возникла такая необходимость?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамический RAISE
СообщениеДобавлено: Ср, дек 14 2011, 15:10 
Ассистент
Ассистент

Зарегистрирован:
Пн, дек 04 2006, 14:17
Сообщения: 37
bossjohn написал(а):
Будто бы никак.
А в связи с чем возникла такая необходимость?
Хочу сделать динамический вызов вложенных ФМов с передачей обратно не только данных, но и произошедших рейзов, который надо выполнить в исходном ФМе.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамический RAISE
СообщениеДобавлено: Ср, дек 14 2011, 15:18 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
TSTS написал(а):
bossjohn написал(а):
Будто бы никак.
А в связи с чем возникла такая необходимость?
Хочу сделать динамический вызов вложенных ФМов с передачей обратно не только данных, но и произошедших рейзов, который надо выполнить в исходном ФМе.

Как вариант решения могу предложить возвращать некие ИД рейзов вложенными ФМами, и в главном фм-е анализировать уже их, например в конструкции
Code:
CASE ID
WHEN  ID1
RAISE  ...

ENDCASE


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамический RAISE
СообщениеДобавлено: Ср, дек 14 2011, 15:26 
Ассистент
Ассистент

Зарегистрирован:
Пн, дек 04 2006, 14:17
Сообщения: 37
bossjohn написал(а):
Как вариант решения могу предложить возвращать некие ИД рейзов вложенными ФМами, и в главном фм-е анализировать уже их, например в конструкции
Code:
CASE ID
WHEN  ID1
RAISE  ...

ENDCASE
ИД рейза(имя) я возвращаю без проблем, но вот как его инициализировать?. Предложенный вариант не подойдёт, потому что у меня исходный ФМ произвольный. Мне нужна универсальная обработка.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамический RAISE
СообщениеДобавлено: Ср, дек 14 2011, 15:28 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
TSTS написал(а):
Хочу сделать динамический вызов вложенных ФМов с передачей обратно не только данных, но и произошедших рейзов, который надо выполнить в исходном ФМе.


Используйте Class-Based Exceptions. Проброс исключений по стеку вызовов делается на раз.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамический RAISE
СообщениеДобавлено: Ср, дек 14 2011, 16:37 
Ассистент
Ассистент

Зарегистрирован:
Пн, дек 04 2006, 14:17
Сообщения: 37
Пономарев Артем написал:
TSTS написал(а):
Хочу сделать динамический вызов вложенных ФМов с передачей обратно не только данных, но и произошедших рейзов, который надо выполнить в исходном ФМе.


Используйте Class-Based Exceptions. Проброс исключений по стеку вызовов делается на раз.
Не уверен, что это подойдет. Набор исходных ФМов - стандартный. Они вставлен в стандартные программы, и последующий анализ исключений (sy-subrc) происходит в стандарте. Т.е. я не могу управлять интерфейсом этих ФМов и анализом ошибок после их вызова. Я могу лишь вставить некий текст в эти ФМы, который должен сделать для каждого случая нужный рейз, название которых я определяю.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамический RAISE
СообщениеДобавлено: Ср, дек 14 2011, 17:05 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Если в рамках стандартного контекста - то конечно не подойдет.
Т.е. нормального варианта нет. Только подпорки изобретать, ИМХО.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамический RAISE  Тема решена
СообщениеДобавлено: Чт, дек 15 2011, 11:29 
Ассистент
Ассистент

Зарегистрирован:
Пн, дек 04 2006, 14:17
Сообщения: 37
Решил через GENERATE SUBROUTINE POOL прописав внутри нужный мне RAISE


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамический RAISE
СообщениеДобавлено: Чт, дек 15 2011, 13:41 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
TSTS написал(а):
Решил через GENERATE SUBROUTINE POOL прописав внутри нужный мне RAISE

Стоит напомнить, у GENERATE SUBROUTINE POOL есть ограничение на 36 генераций, потом падает в дамп


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

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


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

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


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

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