Архив

Архив автора

R12: Таблицы IBY

29 Август 2012 Нет комментариев

Описание нескольких таблиц из схемы IBY (Payments):

IBY.IBY_EXTERNAL_PAYEES_ALL
Платежные атрибуты поставщика (получателя)

IBY.IBY_EXTERNAL_PAYERS_ALL
Платежные атрибуты заказчика (плательщика)

IBY.IBY_ACCOUNT_OWNERS
Владельцы банковского счета

IBY.IBY_PMT_INSTR_USES_ALL
Назначения платежных средств.
Содержит связь между платежными средствами (payment instruments) и плательщиком/получателем (Payer/Payee). Платежным средством может быть кредитная карта или банковсвкий счет.

IBY.IBY_EXT_BANK_ACCOUNTS
Внешние банковские счета
Oracle EBS IBY tables

SLA — Как узнать поле для связки со счетом-фактурой

Посмотреть поля по которым можно связать счет-фактуру (СФ) и данные в XLA таблицах можно через форму настройки.
Аналогичным способом можно посмотреть связку для платежей, поступлений и т.д.

Полномочия «Payables Manager» — меню «Setup» — «Accounting Setup» — «Subledger Accounting Setup» — «Accounting Methods Builder» — «Events» — «Event Model»

Связь между счетом-фактурой и xla

Oracle Forms: Удалить элемент из списка (List item)

В Oracle Forms для удаления элемента из списка (List item)
используем комбинацию CTRL+SHIFT+< .

Удаляем элемент из списка Oracle Forms

Categories: Oracle Forms Tags: ,

Модуль AR – Обновление корр. счета банка

25 Апрель 2012 Нет комментариев

Пример использования API для обновления корреспондентского счёта банка. (корр. счёт)

declare
 p_brunch_number varchar2(30) := '!NUM';
 p_ksnp          varchar2(40) := '!CORR_ACCOUNT';
--
 l_contact_point_rec   hz_contact_point_v2pub.contact_point_rec_type;
 l_edi_rec             hz_contact_point_v2pub.edi_rec_type;
 l_obj_vers            NUMBER;
 l_party_id            number;
--
  x_return_status varchar2(1);
 x_msg_count     number;
 x_msg_data      varchar2(4000);
begin
  
 select party_id into l_party_id
 from ar.hz_organization_profiles hop 
 where 1=1
       and sysdate between hop.effective_start_date and nvl(hop.effective_end_date, sysdate+1)
       and hop.bank_or_branch_number = p_brunch_number;
 
 dbms_output.put_line('l_party_id='||l_party_id);

 SELECT contact_point_id, object_version_number 
  into l_contact_point_rec.contact_point_id, l_obj_vers
 FROM hz_contact_points
 WHERE contact_point_type = 'EDI'
       AND owner_table_name = 'HZ_PARTIES'
       AND owner_table_id = l_party_id;
       
 dbms_output.put_line('l_obj_vers='||l_obj_vers);
 dbms_output.put_line('contact_point_id='||l_contact_point_rec.contact_point_id);        

 l_edi_rec.edi_ece_tp_location_code := p_ksnp;
 
  hz_bank_pub.update_edi_contact_point (fnd_api.g_true,
                                        l_contact_point_rec,
                                        l_edi_rec,
                                        l_obj_vers,
                                        x_return_status,
                                        x_msg_count,
                                        x_msg_data
                                       );   

  dbms_output.put_line('--');                                         
  dbms_output.put_line('Return status = '||x_return_status);                                                                     
  if x_return_status != fnd_api.g_ret_sts_success then
    if x_msg_count = 1 then
      dbms_output.put_line ('Error:' || x_msg_data);      
    else
      FOR i IN 1 .. x_msg_count LOOP
        dbms_output.put_line('Error:' || fnd_msg_pub.get(fnd_msg_pub.g_next, fnd_api.g_false) );
      END LOOP;
    end if;
  end if;   
   
  -- commit; 
exception
  when others then
       dbms_output.put_line('SQLERRM:'||SQLERRM||chr(10));
       dbms_output.put_line('FORMAT_ERROR_BACKTRACE:'||chr(10)||dbms_utility.format_error_backtrace);
       raise;                
end;                        

Модуль AR — Обновление БИК банка

25 Апрель 2012 Нет комментариев

Пример использования API для обновления БИК банка.

declare
 p_brunch_number varchar2(30) := '!NUM';
 p_bic           varchar2(9)  := '!NEW_BIC';
--
 l_contact_point_rec   hz_contact_point_v2pub.contact_point_rec_type;
 l_eft_rec             hz_contact_point_v2pub.eft_rec_type;
 l_eft_vers            number;
 l_party_id            number;
--
 x_return_status varchar2(1);
 x_msg_count     number;
 x_msg_data      varchar2(4000);
begin
  
 select party_id into l_party_id
 from ar.hz_organization_profiles hop 
 where 1=1
       and sysdate between hop.effective_start_date and nvl(hop.effective_end_date, sysdate+1)
       and hop.bank_or_branch_number = p_brunch_number;
 
 dbms_output.put_line('l_party_id='||l_party_id);

 SELECT contact_point_id, object_version_number 
  into l_contact_point_rec.contact_point_id, l_eft_vers
 FROM hz_contact_points
 WHERE contact_point_type = 'EFT'
       AND owner_table_name = 'HZ_PARTIES'
       AND owner_table_id = l_party_id;
       
 dbms_output.put_line('l_eft_vers='||l_eft_vers);
 dbms_output.put_line('contact_point_id='||l_contact_point_rec.contact_point_id);        

 l_eft_rec.eft_swift_code := p_bic;
 
 hz_bank_pub.update_eft_contact_point ( fnd_api.g_true,
                                        l_contact_point_rec,
                                        l_eft_rec,
                                        l_eft_vers,
                                        x_return_status,
                                        x_msg_count,
                                        x_msg_data
                                       );

  dbms_output.put_line('--');                                         
  dbms_output.put_line('Return status = '||x_return_status);                                                                     
  if x_return_status != fnd_api.g_ret_sts_success then
    if x_msg_count = 1 then
      dbms_output.put_line ('Error:' || x_msg_data);      
    else
      FOR i IN 1 .. x_msg_count LOOP
        dbms_output.put_line('Error:'
          ||fnd_msg_pub.get(fnd_msg_pub.g_next,fnd_api.g_false));
      END LOOP;
    end if;
  end if;   
   
  -- commit; 
exception
  when others then
       dbms_output.put_line('SQLERRM:'||SQLERRM||chr(10));
       dbms_output.put_line('FORMAT_ERROR_BACKTRACE:'||chr(10)
         ||dbms_utility.format_error_backtrace);
       raise;                
end;                        

Поиск VIEW по используемым объектам

24 Апрель 2012 Нет комментариев

Поиск VIEW

Запрос для поиска VIEW, в которой используются определенные объекты.
Можно, например, использовать для поиска связки между таблицами.

with s as (
select 'XLA_AE_HEADERS' obj1, 'XLA_AE_LINES' obj2 from dual
)
select owner, name from All_Dependencies t, s
where type='VIEW' and t.REFERENCED_NAME like s.obj1
 intersect      
select owner, name from All_Dependencies t, s
where type='VIEW' and t.REFERENCED_NAME like s.obj2

OWNER                          NAME
------------------------------ ------------------------------
APPS                           ARFV_ADJ_DISTS_ALC_V
APPS                           ARFV_APP_DISTS_ALC_V
APPS                           ARFV_CASH_DISTS_ALC_V
APPS                           ARFV_FREIGHT_DISTS_ALC_V
APPS                           ARFV_REVENUE_DISTS_ALC_V
APPS                           ARFV_TAX_DISTS_ALC_V
APPS                           ARFV_UNREC_DISTS_ALC_V
APPS                           ARFV_UNREV_DISTS_ALC_V
...
Categories: SQL Tags: , , ,

SLA — Запрос для просмотра данных учета (Subledger Accounting)

13 Апрель 2012 Нет комментариев

Запрос для просмотра данных учета

select xte.application_id        as appl_id
      ,xte.entity_code           as entity_code
      ,ec.event_class_code       as event_class_code
      ,ec.name                   as event_class
      ,xal.code_combination_id   as cc_id     
      ,fnd_flex_ext.get_segs('SQLGL','GL#',gl.chart_of_accounts_id, xal.code_combination_id)      as ACCOUNT
      --,xla_oa_functions_pkg.get_ccid_description(gl.chart_of_accounts_id,xal.code_combination_id) as account_description
      ,xah.ae_header_id          as xah_ae_header_id
      ,xal.ae_line_num           as xal_ae_line_num
      ,xal.ledger_id             as xal_ledger_id
      ,xte.ledger_id             as xte_ledger_id
      ,xae.event_type_code       as event_type_code
      ,et.name                   as event_type
      ,xae.event_number          as event_number
      ,xal.accounting_class_code as acc_class_code   -- класс учета
      ,lk1.meaning               as accounting_class
      ,xal.accounting_date       as accounting_date
      ,xal.accounted_dr          as accounted_dr
      ,xal.accounted_cr          as accounted_cr
      ,xal.currency_code         as currency_code
      ,nvl(xte.source_id_int_1, -99) as source_id_int_1
      ,decode(xal.party_type_code, 'C', xal.party_id)      as customer_id
      ,decode(xal.party_type_code, 'C', xal.party_site_id) as customer_site_id
from xla.xla_transaction_entities  xte
   , xla.xla_ae_headers            xah
   , xla.xla_ae_lines              xal
   , xla.xla_events                xae
   , xla_lookups                   lk1
   , xla_gl_ledgers_v              gl   
   , xla.xla_event_types_tl        et
   , xla.xla_event_classes_tl      ec
where 1=1
      -- sla xah
      and xah.entity_id      = xte.entity_id
      and xah.application_id = xte.application_id
      and xah.ledger_id      = xal.ledger_id
      -- sla xal
      and xal.ae_header_id   = xah.ae_header_id
      and xal.application_id = xah.application_id
      and (nvl(xal.accounted_dr,0) != 0 or nvl(xal.accounted_cr,0)!=0)
      -- sla xae
      and xae.application_id  = xah.application_id
      and xae.event_id        = xah.event_id  
      -- lk1
      and lk1.lookup_code = xal.accounting_class_code
      and lk1.lookup_type = 'XLA_ACCOUNTING_CLASS'
      -- gl
      and gl.ledger_id = xah.ledger_id
      -- et 
      and et.application_id  = xte.application_id
      and et.entity_code     = xte.entity_code      
      and et.event_type_code = xae.event_type_code
      and et.language        = USERENV('LANG')
      -- ec
      and ec.application_id   = xte.application_id
      and ec.entity_code      = xte.entity_code
      and ec.event_class_code = et.event_class_code
      and ec.language         = USERENV('LANG')
      -- ======
      -- and xte.entity_code    = 'RECEIPTS'
      -- and xte.application_id = 222
      -- and xte.ledger_id = fnd_profile.value('GL_SET_OF_BKS_ID')
      -- and nvl(source_id_int_1,(-99)) = 

PL/SQL Developer — отображение чисел (number -> char)

13 Апрель 2012 Нет комментариев

Иногда требуется отследить числа (визуально), с большим количеством знаков после точки.
Но столкнемся с тем, что PL/SQL Developer при отображении обрезает число.

select 1.000000000000001234567 v from dual
union all
select 1.000000100000001234567 from dual
union all
select 1.001000000000001234567 from dual
union all
select 1.123456789123456789123 from dual
Отображение чисел

В PL/SQL Developer есть полезная опция Number fields to_char
Читать дальше про “PL/SQL Developer — отображение чисел (number -> char)” »

Вызов формы FNDRSRUN для запуска канкарента с определенными параметрами

10 Апрель 2012 Нет комментариев

Открытие формы FNDRSRUN с определенным канкарентом и выставленными параметрами:

1) Создаем свою форм функцию XX_FNDRSRUN для доступа к форме FNDRSRUN. (необязательный шаг)

2) Помещаем вызов нашего канкарента в меню Сервис на определенный SPECIAL.

3) Строка для вызова

CONCURRENT_PROGRAM_NAME ="<CODE>"
PROGRAM_APPL_SHORT_NAME="<APPL_CODE>"
CHAR1="<param1:param2:...>"
SUBMIT_ONCE="Y"

В параметр CHAR1 записываем параметры канкарента (value), через двоеточие.

FNDDSRUN Запуск канкарента ОЕБС

Читать дальше про “Вызов формы FNDRSRUN для запуска канкарента с определенными параметрами” »

ОЕБС Расширенный скрипт инициализации сессиии

6 Апрель 2012 3 comments

ОЕБС Инициализация сессии
ОЕБС Расширенный скрипт для инициализации сессии:

  • Выводит в output короткую запись для инициализации.
  • Если не заданы полномочия или приложение, то выводит в output список назначенных пользователю полномочий.
declare
 l_lang           varchar2(2)   := 'RU';
 l_user_name      varchar2(100) := 'USER_NAME';
 l_resp_name      varchar2(400);
 l_resp_appl_name varchar2(400);
 -- ------------------------------------------------------------------
 l_user_id        NUMBER;
 l_resp_id        NUMBER;
 l_resp_appl_id   NUMBER;
 l_appl_code      VARCHAR2(10);
 l_org_id         NUMBER;
 l_mo_sec_profile NUMBER; 
begin
 
 -- l_resp_name := 'Диспетчер Дебиторов';
 -- l_resp_name := 'Разработчик приложений';
 -- l_resp_name := 'Движение денежных средств: суперпользователь';
 
 -- l_resp_appl_name := 'Главная книга';
 -- l_resp_appl_name := 'Дебиторы' 
 -- l_resp_appl_name := 'Кредиторы';
 -- l_resp_appl_name := 'Движение денежных средств';
 -- l_resp_appl_name := 'Библиотека объектов приложений';
 
   select user_id into l_user_id from fnd_user t where user_name like l_user_name; 
 
   if (l_resp_name is null or l_resp_appl_name is null) then
 
     for i in (
                 SELECT ap.application_short_name as appl_code,
                        a.application_name        as appl_name,
                        r.responsibility_name     as resp_name,
                        --
                        max(length(a.application_name )) over() as length_appl_name
                  FROM fnd_user u,
                       fnd_user_resp_groups g,
                       fnd_application_tl a,
                       fnd_responsibility_tl r,
                       fnd_application       ap
                 WHERE g.user_id(+) = u.user_id
                   AND g.responsibility_application_id = a.application_id
                   AND a.application_id = r.application_id
                   AND g.responsibility_id = r.responsibility_id
                   and a.language = l_lang
                   and ap.application_id = a.application_id
                   and r.language = l_lang
                   and u.user_name = l_user_name
                   and r.responsibility_name <> 'Диагностика приложения'
                   and r.responsibility_name = nvl(l_resp_name,r.responsibility_name)
                   and a.application_name = nvl(l_resp_appl_name,a.application_name)
 
                 ORDER BY appl_name, resp_name
               )
     loop
       dbms_output.put_line(rpad('l_resp_appl_name := '''||i.appl_name||'''',i.length_appl_name+22,' ') || ' ; l_resp_name := '''||i.resp_name||''';');
     end loop;
 
   else
 
     select t.responsibility_id into l_resp_id from fnd_responsibility_tl t where t.responsibility_name like l_resp_name and t.language = l_lang;
     
     select b.application_id, b.application_short_name into l_resp_appl_id, l_appl_code 
     from fnd_application_tl t 
         ,fnd_application    b
     where 1=1
           and t.application_name like l_resp_appl_name 
           and t.language = l_lang 
           and b.application_id = t.application_id;
 
     l_org_id := fnd_profile.VALUE_SPECIFIC(NAME => 'ORG_ID', RESPONSIBILITY_ID => l_resp_id, APPLICATION_ID=> l_resp_appl_id);
     
     fnd_global.apps_initialize( user_id      => l_user_id,
                                 resp_id      => l_resp_id,
                                 resp_appl_id => l_resp_appl_id
                               );
     begin
       MO_GLOBAL.init(l_appl_code);
       
       if (l_org_id is not null) then
         mo_global.set_policy_context('M',l_org_id);
       end if;
       
       l_mo_sec_profile := fnd_profile.value('XLA_MO_SECURITY_PROFILE_LEVEL');
       
       mo_global.set_org_context(l_resp_id,l_mo_sec_profile,l_appl_code);
     exception
       when others then
         dbms_output.put_line('SQLERRM:'||SQLERRM||chr(10));
         dbms_output.put_line('FORMAT_ERROR_BACKTRACE:'||chr(10)||dbms_utility.format_error_backtrace);
     end;

     dbms_output.put_line('begin'||chr(10)||' fnd_global.apps_initialize('||l_user_id||', '||l_resp_id||', '||l_resp_appl_id||'); --'||l_resp_name||' - '||l_resp_appl_name
                          ||chr(10)||' mo_global.init('''|| l_appl_code||''');'
                          ||case when l_org_id is not null then chr(10)||' mo_global.set_policy_context(''M'','||l_org_id||');' end                        
                          ||chr(10)||' mo_global.set_org_context('||l_resp_id||', '||l_mo_sec_profile||', '''||l_appl_code||''');'
                          ||chr(10)||'end;');     
   end if;
end;