Архив

Архив раздела ‘Oracle e-Business Suite’

Workflow: Отправка уведомления

15 Сентябрь 2010 34 comments

Данная статья описывает процесс создания workflow процесса для отправки уведомления.

Версия Oracle Workflow Builder 2.6.3.5

1 Создание нового Workflow

Открываем Oracle Workflow Builder

Читать дальше про “Workflow: Отправка уведомления” »

Модуль ONT — Связь в заказах между складской и операционной организацией

18 Август 2010 Нет комментариев
select h.order_number,
       -- операционная единица
       h.org_id                 as operate_org_id,
       -- складская организация
       pla.organization_id      as inventory_org_id,
       l.header_id,
       l.line_id,
       l.ordered_quantity       as qty,
       l.request_date
       --
  from oe_order_headers_all         h,
       oe_order_lines_all           l,
       po_location_associations_all pla,
       mtl_system_items_b           msi
 where 1=1
       and h.header_id = l.header_id
       and h.sold_to_org_id = pla.customer_id
       -- msi
       and msi.inventory_item_id  = l.inventory_item_id
       and msi.organization_id    = pla.organization_id;

Создание URL для доступа к форме OEBS

16 Август 2010 2 comments

Используем стандартный API для генерации URL

declare
  url varchar2(32767);
begin
  url:= fnd_run_function.get_run_function_url (
             p_function_id       =>1043600,
             p_resp_appl_id      =>-1,
             p_resp_id           =>-1,
             p_security_group_id =>0,
             p_parameters        =>'TEST_ID=182'||' '||'TEST_ID2=548',
             p_encryptParameters =>true ) ;
  dbms_output.put_line(url);
end;

В результате получаем URL:

http://<host>:<port>/OA_HTML/RF.jsp?function_id=<function_id_or_name>
http://.../OA_HTML/RF.jsp?function_id=1043600&resp_id=-1&resp_appl_id=-1&security_group_id=0&lang_code=RU&params=QU2-OJtLRJHeJif-a9I4tPUdx3zMf-CX4yR8feCtDVM

Регистрация приложения

1 Создать структуру каталогов
2 Изменить файл (по умолчанию defaults.env) настроек переменных окружения для сервера форм. Его имя хранится в переменной окружения envFile в файле appsweb.cfg, имя и путь к которому в свою очередь хранятся в переменной окружения  FORMS_WEB_CONFIG_FILE, добавив строку с установкой значения переменной окружения <префикс приложения (ЗАГЛАВНЫМИ)>_TOP. Тем самым будет определён каталог, в котором сервер Oracle Forms сможет найти файлы приложения
3 В файл $APPL_TOP/custom<имя инстанса>.env следует добавить инициализацию тех же переменных с последующим их экспортом (это необходимо для выполнения системных процедур и вызова параллельных запросов) и проверить наличие вызова это файла из $APPL_TOP/APPS<имя инстанса>.env. При наличии в составе приложения исполняемых операционной системой программ также следует добавлять <префикс приложения (ЗАГЛАВНЫМИ)>_TOP/bin к переменной окружения PATH (если используется)
4 Остановить менеджер параллельных программ (concurrent manager)
$ADMIN_SCRIPTS_HOME/adcmctl.sh stop apps/apps
5 Выполнить файл, замещающий APPLSYS.env
. / $APPL_TOP/APPS<имя инстанса>.env
6 Перезапустить concurrent manager
$ADMIN_SCRIPTS_HOME/adcmctl.sh start apps/apps
7 Войдите в систему с полномочиями Разработчик приложений (Application Developer) и зарегистрируйте приложение
8 Войдите в систему с полномочиями System Administrator и добавьте приложение в группу данных (раздел меню «Security : ORACLE», пункт «Группа данных»)

Использование таймера

Таймер

Таймер (Timer) – это способ выполнения кода через определенное время.  По истечении указанного времени вызывается тригер WHEN-TIMER-EXPIRED, в котором и обрабатывается реакция на запуск таймера.

Таймером очень хорошо пользоваться для непрерывного отслеживания каких-либо действий. Вы также можете использовать таймер как планировщик, закрывая формы по истечении указанного времени, для выполнения автосохранения в форме, для согласованного обновления данных в разных блоках формы и т.д.

Читать дальше про “Использование таймера” »

Изменение VISUAL_ATTRIBUTE для позиции в строке блока

SET_ITEM_INSTANCE_PROPERTY — установить свойства экземпляра элемента.

set_item_instance_property('NAME_BLOCK.NAME_ITEM', CURRENT_RECORD, VISUAL_ATTRIBUTE,'NAME_VISUAL_ATTRIBUTE');

Модуль GME/INV — Связка между заданиями и транзакциями

select *
from gme_batch_header          gbh,
     gme_material_details      gmd,
     mtl_material_transactions mmt
where 1=1
      and gbh.batch_type = 0
      -- gmd
      and gmd.batch_id = gbh.batch_id
      -- mmt
      and mmt.transaction_source_id = gmd.batch_id
      and mmt.trx_source_line_id    = gmd.material_detail_id
      -- for test
      --and trunc(gbh.plan_start_date) >
      --and gbh.batch_no =
      --and mmt.attribute_category =
      and rownum<100;

Модуль GMD — Создание производственного задания

Модуль GMD R12.GMD.A.6 (Разработка продукции УНП; Process Manufacturing Product Development)
Процедура для создания производственного задания (batch).

Читать дальше про “Модуль GMD — Создание производственного задания” »

Модуль INV — Текущее количество для позиции

Select moq.organization_id                   as org_id,
       sysdate                               as date_val,
       moq.inventory_item_id                 as item_id,
       moq.subinventory_code                 as subinventory_code,
       moq.locator_id                        as locator_id,
       moq.lot_number                        as lot_number,
       msi.segment1                          as item,
       msi.primary_uom_code                  as uom_code,
       sum(moq.primary_transaction_quantity) as actual_qty
  from mtl_onhand_quantities_detail moq,
       mtl_system_items_b           msi
where 1=1
      -- msi
      and msi.inventory_item_id  = moq.inventory_item_id
      and msi.organization_id    = moq.organization_id
      --and moq.inventory_item_id  = :1
      --and moq.organization_id    = :2
      --and moq.subinventory_code  = :3
      --and moq.lot_number         = :4
group by moq.organization_id ,
         sysdate,
         moq.inventory_item_id,
         msi.segment1,
         msi.primary_uom_code,
         moq.subinventory_code,
         moq.locator_id,
         moq.lot_number
order by moq.organization_id, moq.inventory_item_id

Так же есть API для просмотра текущего количества OEBS API INV – Текущее количество для позиции (ONHAND)

Модуль PO – Сколько запрошенно по позициям

-- заявка на приобретение
select prl.destination_organization_id as org_id,
       prl.need_by_date                as date_val,
       prl.item_id                     as item_id,
       msi.segment1                    as item,
       msi.primary_uom_code            as uom_code,
       -- запрошенно
       prl.quantity                    as demand_qty
from po_requisition_lines_all   prl,
     po_requisition_headers_all phr,
     mtl_system_items_b         msi
where 1=1
      -- prl
       -- ! ограничиваем период
      and prl.need_by_date  >= trunc(sysdate, 'mm')
      -- phr
      and phr.requisition_header_id = prl.requisition_header_id
      and phr.authorization_status = 'APPROVED' -- утверждённые заявки
      -- msi
      and msi.inventory_item_id  = prl.item_id
      and msi.organization_id    = prl.destination_organization_id
order by prl.destination_organization_id,
         msi.inventory_item_id,
         prl.need_by_date