Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ERP и учетные системы [игнор отключен] [закрыт для гостей] / Интерфейсные таблицы OEBS / 17 сообщений из 17, страница 1 из 1
04.08.2005, 18:47
    #33202574
Info2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсные таблицы OEBS
как пользоваться интерфейсами для загрузки?
правильно ли это:
Например необходимо загружать ежедневные курсы валют (таблица GL.GL_DAILY_RATES), для загрузки в нее информации есть интерфейсная таблица OEBS GL.GL_DAILY_RATES_INTERFACE
т.е. получается что нужно просто какойто программой запихивать данные в таблицу GL.GL_DAILY_RATES_INTERFACE, а триггер висящей на ней их перекинет в таблицу GL.GL_DAILY_RATES
Правильно ли это? или необходимо еще чтото вызывать?

И еще вопрос,
а может произойти ошибка оракла, при вставке данных в таблицу GL.GL_DAILY_RATES? Или все возможные ситуации контролирует тригер на таблице GL.GL_DAILY_RATES_INTERFACE?
Если же триггер не контролирует все ситуации, тогда будет откат, который будет распространен аж до оператора Insert в таблицу GL.GL_DAILY_RATES_INTERFACE
правильно?

спасибо
...
Рейтинг: 0 / 0
04.08.2005, 19:01
    #33202604
va_kochnev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсные таблицы OEBS
Обычно интерфейс представляем из себя комплект интерфейсных таблиц и программу, которая их обрабатывает.
В этом случае сначала надо набить эти таблицы данными, а потом запустить соответствующую программу.

Но что касается курсов валют, то все происходит так, как вы описали.
...
Рейтинг: 0 / 0
04.08.2005, 19:07
    #33202618
Info2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсные таблицы OEBS
va_kochnevОбычно интерфейс представляем из себя комплект интерфейсных таблиц и программу, которая их обрабатывает.
В этом случае сначала надо набить эти таблицы данными, а потом запустить соответствующую программу.

Но что касается курсов валют, то все происходит так, как вы описали.

программу - имеется ввиду пакет?
а где искать какой пакет(программу) запускать, только в доке?
...
Рейтинг: 0 / 0
04.08.2005, 19:12
    #33202629
va_kochnev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсные таблицы OEBS
Info2программу - имеется ввиду пакет?
а где искать какой пакет(программу) запускать, только в доке?

Параллельная программа, запускаемая через "Вид"->"Запросы"
Может быть реализована и как пакетная процедура, и как C-шная программа, и как отчет.

Про конкретные интерфейсы (таблицы и программы-обработчики) искать в документации
...
Рейтинг: 0 / 0
05.08.2005, 12:48
    #33203931
OA User
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсные таблицы OEBS
Info2
программу - имеется ввиду пакет?
а где искать какой пакет(программу) запускать, только в доке?
Если не ошибаюсь, в тексте триггера:
-- Launch concurrent request to run the Rate Change Program
req_id := FND_REQUEST.submit_request('SQLGL','GLTTRC','','',FALSE, ...);

после модификации GL.GL_DAILY_RATES запускается паралелльная программа GLTTRC, которая использует внешнюю программу с тем же именем (можно найти по Short name в меню Concurrent:Program, Concurrent:Executable).
Почему именно для этой таблицы так сделано, непонятно.
...
Рейтинг: 0 / 0
05.08.2005, 13:02
    #33203990
Whateva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсные таблицы OEBS
Конкретно для данного интерфейса лучше всё одним стэйтментом грузить чтобы не плодить миллион вызовов conc prog's.
...
Рейтинг: 0 / 0
05.08.2005, 13:32
    #33204112
OA User
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсные таблицы OEBS
WhatevaКонкретно для данного интерфейса лучше всё одним стэйтментом грузить чтобы не плодить миллион вызовов conc prog's.
Согласен. С трудом себе представляю задачу, для которой потребуется большое количество добавлений в эту таблицу.
...
Рейтинг: 0 / 0
05.08.2005, 13:39
    #33204149
Info2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсные таблицы OEBS
как я понял вызов
-- Launch concurrent request to run the Rate Change Program
req_id := FND_REQUEST.submit_request('SQLGL','GLTTRC','','',FALSE, ...);
это просто пересчет баланса, по новым курсам

а зачем в начале стоит триггера стоит
IF GL_CRM_UTILITIES_PKG.enable_trigger THEN
который отключает всю логику тригера

верно ли, что бы гарантировано загрузить курсы валют, надо всегда перед вставко записей в таблицу GL_DAILY_RATES_INTERFACE, установить в
GL_CRM_UTILITIES_PKG.ENABKE_TRIGGER:=TRUE ?
а в каких случаях его отключают?
...
Рейтинг: 0 / 0
05.08.2005, 15:13
    #33204433
Info2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсные таблицы OEBS
кстати, а что будет
если внешняя программа, которая вставляла записи в GL_DAILY_RATES_INTERFACE, проверит результаты, увидит например ошибки и сделает rollback

получается что откатятся записи в GL_DAILY_RATES_INTERFACE (тем самым потеряем и ошибки), GL_DAILY_RATES.
а что будет с
-- Launch concurrent request to run the Rate Change Program
req_id := FND_REQUEST.submit_request (
он тоже откатывается, вернее запрос на запуск
или как?
...
Рейтинг: 0 / 0
05.08.2005, 15:27
    #33204480
OA User
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсные таблицы OEBS
Info2кстати, а что будет
если внешняя программа, которая вставляла записи в GL_DAILY_RATES_INTERFACE, проверит результаты, увидит например ошибки и сделает rollback

получается что откатятся записи в GL_DAILY_RATES_INTERFACE (тем самым потеряем и ошибки), GL_DAILY_RATES.
а что будет с
-- Launch concurrent request to run the Rate Change Program
req_id := FND_REQUEST.submit_request (
он тоже откатывается, вернее запрос на запуск
или как?
По-моему, если FND_REQUEST.submit_request() вернула ID паралелльной программы, то это означает, что программа уже стоит в очереди на выполнение. Дальше при помощи этого ID можно отследить статус этой программы и попробовать отменить.
...
Рейтинг: 0 / 0
05.08.2005, 16:08
    #33204595
OA User
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсные таблицы OEBS
OA User Info2кстати, а что будет
если внешняя программа, которая вставляла записи в GL_DAILY_RATES_INTERFACE, проверит результаты, увидит например ошибки и сделает rollback

получается что откатятся записи в GL_DAILY_RATES_INTERFACE (тем самым потеряем и ошибки), GL_DAILY_RATES.
а что будет с
-- Launch concurrent request to run the Rate Change Program
req_id := FND_REQUEST.submit_request (
он тоже откатывается, вернее запрос на запуск
или как?
По-моему, если FND_REQUEST.submit_request() вернула ID паралелльной программы, то это означает, что программа уже стоит в очереди на выполнение. Дальше при помощи этого ID можно отследить статус этой программы и попробовать отменить.
Пардон, наврал, похоже :(. Если из триггера запускается, то там д.б. функция
FND_REQUEST.set_mode(true). По идее, если этот флажок выставлен, то изменения в таблицах менеджера запросов будут видны по завершении общей транзакции, а если произойдет откат, то менеджер запросов их не увидит и запуск параллельной программы не произойдет.
...
Рейтинг: 0 / 0
05.08.2005, 16:41
    #33204696
Info2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсные таблицы OEBS
OA User
Пардон, наврал, похоже :(. Если из триггера запускается, то там д.б. функция
FND_REQUEST.set_mode(true). По идее, если этот флажок выставлен, то изменения в таблицах менеджера запросов будут видны по завершении общей транзакции, а если произойдет откат, то менеджер запросов их не увидит и запуск параллельной программы не произойдет.
Интересно в доке есть примечание
Note that a failure in the database trigger call of
FND_REQUEST.SUBMIT_REQUEST does not roll back changes.

получается что данные можно откатить, а то что наделает FND_REQUEST.SUBMIT_REQUEST - НЕТ
если раньше откатишь, чем он запустится, то он вхолостую сработает.
а если позже, то он успеет все закомитить, а потом ты откатишь исходные данные...
правильные размышления? какаято фигня...
...
Рейтинг: 0 / 0
05.08.2005, 16:51
    #33204729
Whateva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсные таблицы OEBS
Info2Интересно в доке есть примечание
Note that a failure in the database trigger call of
FND_REQUEST.SUBMIT_REQUEST does not roll back changes.

получается что данные можно откатить, а то что наделает FND_REQUEST.SUBMIT_REQUEST - НЕТ
если раньше откатишь, чем он запустится, то он вхолостую сработает.
а если позже, то он успеет все закомитить, а потом ты откатишь исходные данные...
правильные размышления? какаято фигня...
Нет, не правильные. Пока не закаммитим конкаррент нифига не увидит.
...
Рейтинг: 0 / 0
05.08.2005, 16:59
    #33204752
OA User
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсные таблицы OEBS
Info2
Интересно в доке есть примечание
Note that a failure in the database trigger call of
FND_REQUEST.SUBMIT_REQUEST does not roll back changes.

получается что данные можно откатить, а то что наделает FND_REQUEST.SUBMIT_REQUEST - НЕТ
если раньше откатишь, чем он запустится, то он вхолостую сработает.
а если позже, то он успеет все закомитить, а потом ты откатишь исходные данные...
правильные размышления? какаято фигня...
По-моему, все несколько проще. FND_REQUEST.SUBMIT_REQUEST() не запускает ничего сама по себе, она только заполняет соответствующие таблицы Fnd_conc_xxx. Вызов Set_mode(true) нужен, чтобы обойти команды управления транзакциями, коих в триггере быть не должно, внутри процедур пакета FND_REQUEST.
Соответственно, если INSERT в интерфейсную таблицу не прошел, то все откатится до исходного состояния, в том числе и изменения в таблицах менеджера запросов. Если транзакция закончилась успешно, то менеджер запросов "увидит" эти изменения и запустит параллельную программу уже исходя из собственных настроек и ограничений.
Собственно, можно для теста любую хранимую процедуру написать и проверить.
...
Рейтинг: 0 / 0
08.08.2005, 17:07
    #33206163
9
9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсные таблицы OEBS
FND_REQUEST.SUBMIT_REQUEST() не запускает ничего сама по себе, она только заполняет соответствующие таблицы Fnd_conc_xxx.

Насколько я понимаю. Он заполняет таблицы Fnd_conc_xxx и после этого процесс на unix-сервере просматривает эти таблицы и если нужно запускает на unixe процесс для обработки данного запроса. причем этот процесс всегда будет в другой сессии и соответственно поэтому нужно делать commit после заполнения таблиц.
...
Рейтинг: 0 / 0
08.08.2005, 17:54
    #33206288
Info2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсные таблицы OEBS
Вопрос еще, так как вместо триггера конвертацию может выполнять пакет
APPS.GL_CRM_UTILITIES_PKG

а в нем имеется, вот такой лог ошибок
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
fnd_file.put_line
(fnd_file.LOG,
'Error: Duplicate Row or Overlapping Date Range found.');
fnd_file.put_line
(fnd_file.output,
'Error: Duplicate Row or Overlapping Date Range found.');
set_completion_status_result :=
fnd_concurrent.set_completion_status
('ERROR',
'Error: Duplicate Row or Overlapping Date Range found.');
END;

на самом деле fnd_file вроде обычный пакет utl_file.
Так вот вопросы:
1. Файл лога один на систему, или както они по разному именуются для разных процессов
2. Если один, то как там искать именно свои ошибки?
3. Где настраивается физическое размещение данного файла?

Спасибо
...
Рейтинг: 0 / 0
08.08.2005, 18:27
    #33206351
9
9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсные таблицы OEBS
fnd_file.put_line
(fnd_file.LOG,

пишет информацию в свой LOG-файл. его можно взять по адресу

select fcr.logfile_name
from fnd_concurrent_requests fcr

он же просматривается по кнопке Просмотр Журнала в окне Запросы.
...
Рейтинг: 0 / 0
Форумы / ERP и учетные системы [игнор отключен] [закрыт для гостей] / Интерфейсные таблицы OEBS / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]