Архив

Архив автора

Скрипт вывода полей для XML шаблона данных на основе таблицы

28 Октябрь 2014 Нет комментариев

Скрипт вывода столбцов таблицы в XML шаблон данных( BI Publisher Data Template )

declare
  p_table_owner varchar2(30) := 'APPLSYS';
  p_table_name  varchar2(30) := 'FND_USER';
begin
  for i_cur in (
                  select t.column_name
                        ,t.data_type
                        ,max(length(t.column_name)) over() 
                         - length(t.column_name) as cur_gap_length
                  from all_tab_columns t
                  where 1=1
                        and t.owner = p_table_owner
                        and t.table_name = p_table_name
                  order by t.column_id
                )
   loop
     dbms_output.put_line('<element name="' ||i_cur.column_name
                          ||'"'||rpad(' ',i_cur.cur_gap_length)||' value="'||i_cur.column_name
                          ||'" />');
   end loop;
end;

-- Пример вывода
<element name="USER_ID"                       value="USER_ID" />
<element name="USER_NAME"                     value="USER_NAME" />
<element name="LAST_UPDATE_DATE"              value="LAST_UPDATE_DATE" />
<element name="LAST_UPDATED_BY"               value="LAST_UPDATED_BY" />
<element name="CREATION_DATE"                 value="CREATION_DATE" />
<element name="CREATED_BY"                    value="CREATED_BY" />
<element name="LAST_UPDATE_LOGIN"             value="LAST_UPDATE_LOGIN" />
<element name="ENCRYPTED_FOUNDATION_PASSWORD" value="ENCRYPTED_FOUNDATION_PASSWORD" />
<element name="ENCRYPTED_USER_PASSWORD"       value="ENCRYPTED_USER_PASSWORD" />
<element name="SESSION_NUMBER"                value="SESSION_NUMBER" />
<element name="START_DATE"                    value="START_DATE" />
<element name="END_DATE"                      value="END_DATE" />
<element name="DESCRIPTION"                   value="DESCRIPTION" />
<element name="LAST_LOGON_DATE"               value="LAST_LOGON_DATE" />
<element name="PASSWORD_DATE"                 value="PASSWORD_DATE" />
<element name="PASSWORD_ACCESSES_LEFT"        value="PASSWORD_ACCESSES_LEFT" />
<element name="PASSWORD_LIFESPAN_ACCESSES"    value="PASSWORD_LIFESPAN_ACCESSES" />
<element name="PASSWORD_LIFESPAN_DAYS"        value="PASSWORD_LIFESPAN_DAYS" />
<element name="EMPLOYEE_ID"                   value="EMPLOYEE_ID" />
<element name="EMAIL_ADDRESS"                 value="EMAIL_ADDRESS" />
<element name="FAX"                           value="FAX" />
<element name="CUSTOMER_ID"                   value="CUSTOMER_ID" />
<element name="SUPPLIER_ID"                   value="SUPPLIER_ID" />
<element name="WEB_PASSWORD"                  value="WEB_PASSWORD" />
<element name="USER_GUID"                     value="USER_GUID" />
<element name="GCN_CODE_COMBINATION_ID"       value="GCN_CODE_COMBINATION_ID" />
<element name="PERSON_PARTY_ID"               value="PERSON_PARTY_ID" />     

OAF: Передача параметра с кириллицей в URL

27 Октябрь 2014 Нет комментариев

Oracle Application Framework: Пример кода для передачи параметра с кириллицей в URL.

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import oracle.apps.fnd.framework.OANLSServices;
import oracle.apps.fnd.framework.server.OAApplicationModuleImpl;
...
OAApplicationModuleImpl am = (OAApplicationModuleImpl)pageContext.getApplicationModule(webBean);  
OANLSServices nls = am.getOADBTransaction().getOANLSServices();
           
try {
         pAssignmentSet = URLEncoder.encode(pAssignmentSet, nls.getJAVAClientEncoding());
     
    } catch (UnsupportedEncodingException e) {
        throw new OAException(e.getMessage());
    }
...

OEBS API: Деактивация контрагента в HZ_PAPTIES (тип person)

6 Октябрь 2014 Нет комментариев

Пример использования API для перевода контрагента (таблица HZ_PAPTIES) с типом “PERSON” в статус “Неактивно”:

declare
  p_party_id      number := 17323325;
  --
  l_person_rec  HZ_PARTY_V2PUB.PERSON_REC_TYPE;
  l_party_rec   HZ_PARTY_V2PUB.PARTY_REC_TYPE;
  l_object_version_number number;
  --
  x_profile_id    NUMBER;
  x_return_status VARCHAR2(1);
  x_msg_count     NUMBER;
  x_msg_data      VARCHAR2(4000);  
begin
  
  fnd_global.apps_initialize(-1, 20639, 200); --Диспетчер кредиторов - Кредиторы
 
  l_party_rec.party_id   := p_party_id;
  l_party_rec.status     := 'I';
  
  l_person_rec.party_rec := l_party_rec;
 
  select hp.object_version_number into l_object_version_number
  from hz_parties hp where hp.party_id = l_party_rec.party_id;
  
  hz_party_v2pub.update_person (
      p_init_msg_list                    => fnd_api.g_false,
      p_person_rec                       => l_person_rec,
      p_party_object_version_number      => l_object_version_number,
      x_profile_id                       => x_profile_id,
      x_return_status                    => x_return_status,
      x_msg_count                        => x_msg_count,
      x_msg_data                         => x_msg_data
      );
      
  dbms_output.put_line(x_return_status);
  if (x_return_status <> 'S') then
    fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
                              p_count   => x_msg_count,
                              p_data    => x_msg_data);
 
    dbms_output.put_line('ERROR update for party_id='||l_party_rec.party_id||':');
 
    if x_msg_count = 1 then
      dbms_output.put_line(x_msg_data);
    else
      FOR i IN 1 .. x_msg_count LOOP
        dbms_output.put_line(fnd_msg_pub.get(fnd_msg_pub.g_next,
                                             fnd_api.g_false));
      END LOOP;
    end if;
  end if;
 
  commit;      
end;

OEBS API: Деактивация контрагента в HZ_PAPTIES (тип organization)

6 Октябрь 2014 Нет комментариев

Пример использования API для перевода контрагента (таблица HZ_PAPTIES) с типом «organization» в статус “Неактивно”:

declare
  p_party_id      number := 2661479911;
  --  
  l_organization_rec  HZ_PARTY_V2PUB.ORGANIZATION_REC_TYPE;
  l_party_rec         HZ_PARTY_V2PUB.PARTY_REC_TYPE;
  l_object_version_number number;
  --
  x_profile_id    NUMBER;  
  x_return_status VARCHAR2(1);
  x_msg_count     NUMBER;
  x_msg_data      VARCHAR2(4000);  
begin
  
  fnd_global.apps_initialize(-1, 20639, 200); --Диспетчер кредиторов - Кредиторы

  l_party_rec.party_id  := p_party_id;
  l_party_rec.status    := 'I';
  l_organization_rec.party_rec := l_party_rec;
  
  select hp.object_version_number into l_object_version_number 
  from hz_parties hp where hp.party_id = l_party_rec.party_id;
    
  HZ_PARTY_V2PUB.update_organization(p_init_msg_list               => fnd_api.g_false,
                                     p_organization_rec            => l_organization_rec,
                                     p_party_object_version_number => l_object_version_number,
                                     x_profile_id                  => x_profile_id,
                                     x_return_status               => x_return_status,
                                     x_msg_count                   => x_msg_count,
                                     x_msg_data                    => x_msg_data);
      
  dbms_output.put_line(x_return_status);
  if (x_return_status <> 'S') then
    fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
                              p_count   => x_msg_count,
                              p_data    => x_msg_data);
                                      
    dbms_output.put_line('ERROR update for party_id='||l_party_rec.party_id||':');
     
    if x_msg_count = 1 then
      dbms_output.put_line(x_msg_data);
    else
      FOR i IN 1 .. x_msg_count LOOP
        dbms_output.put_line(fnd_msg_pub.get(fnd_msg_pub.g_next,
                                             fnd_api.g_false));
      END LOOP;
    end if;
  end if;
  
  commit;
                             
end;


OEBS API: Деактивация счета заказчика

1 Октябрь 2014 Нет комментариев

Пример использования API для перевода счета заказчика в статус «Неактивно» — деактивация счета заказчика.

declare
  l_cust_account_rec hz_cust_account_v2pub.cust_account_rec_type;
  l_object_version_number number;
  --
  x_return_status varchar2(1);
  x_msg_data      varchar2(4000);
  x_msg_count     number;
begin
  l_cust_account_rec := null;
  l_cust_account_rec.cust_account_id := 9787987;
  l_cust_account_rec.status := 'I';
  
  select ca.object_version_number into l_object_version_number 
  from hz_cust_accounts ca 
  where cust_account_id = l_cust_account_rec.cust_account_id;
  -- Call the procedure
  hz_cust_account_v2pub.update_cust_account(p_init_msg_list         => 'T',
                                            p_cust_account_rec      => l_cust_account_rec,
                                            p_object_version_number => l_object_version_number,
                                            x_return_status         => x_return_status,
                                            x_msg_count             => x_msg_count,
                                            x_msg_data              => x_msg_data);
                                            
  dbms_output.put_line('x_return_status='||x_return_status);   
  commit;                                         
end;

Oracle SQL*Loader

SQL*Loader — мощный инструмент для импорта различных данных из файла в базу данных.
Если надо загрузить что-либо из файла в БД, то этот инструмент, как раз то что вам поможет.

Возможности SQL*Loader

  • Загрузка данных из разных файлов в одной сессии
  • Загрузка данных в разные таблицы в одной сессии
  • Указание кодировки файла данных
  • Использование SQL функций перед загрузкой
  • Генерация уникальных ключей для колонок
  • Ограничение вставляемых данных по условию
  • Загрузка двоичных данных
  • Запись ошибочных данных в файл ошибок


Читать дальше про “Oracle SQL*Loader” »

Scalability Options для XML Publisher Reports

Если при построении отчета XML Publisher Reports получили ошибку типа:
****Warning!!! Due to high volume of data, got out of memory exception…***
****Please retry with scalable option or modify the Data template to run in scalable mode…***

то могут помочь следующие параметры:

Заходим в параллельную программу и в поле «Параметры» ставим одно из значений

(a) -Xmx512m -Xss1024k
(b) -Xmx512m -Xss2048k
(c) -Xmx512m -Xss4096k
(d) -Xmx1024m -Xss1024k
(e) -Xmx1024m -Xss2048k
(f) -Xmx1024m -Xss4096k

-Xmx (-mx): maximum heap size
-Xss : Java stack size

OAF: Поиск страниц с отключенной персонализацией

Запрос для поиска страниц или регионов OEBS OAF с отключенной персонализацией:

select *
from (select att.att_value base_path
            ,jdr_mds_internal.getDocumentName(pat.path_docid) custom_path
            ,regexp_replace(jdr_mds_internal.getDocumentName(pat.path_docid),
                            '.*/customizations/([[:alpha:]]*)/.*',
                            '\1') custom_level
            ,decode(regexp_replace(jdr_mds_internal.getDocumentName(pat.path_docid),
                                   '.*/customizations/([[:alpha:]]*)/.*',
                                   '\1'),
                    'site',
                    'SITE',
                    (regexp_replace(jdr_mds_internal.getDocumentName(pat.path_docid),
                                    '.*/customizations/([[:alpha:]]*)/([0-9A-Za-z_]*)/.*',
                                    '\2'))) custom_level_value
            ,nvl((select 'N'
                 from jdr_attributes cat
                 where cat.att_comp_docid = pat.path_docid
                       and cat.att_name = 'MDSActiveDoc'
                       and cat.att_value = 'false'),
                 'Y') is_active
            ,pat.created_by
            ,pat.creation_date
            ,pat.last_updated_by
            ,pat.last_update_login
            ,pat.LAST_UPDATE_DATE
      from jdr_paths pat
      join jdr_attributes att on (pat.path_docid = att.att_comp_docid)
      where att_comp_seq = 0
            and att_name = 'customizes'
      --and regexp_like( jdr_mds_internal.getDocumentName(path_docid), 'apps/(iby|fnd)' )
      )
where is_active = 'N'

Читать дальше про “OAF: Поиск страниц с отключенной персонализацией” »

OEBS Изменить сообщение ORACLE FORMS

Как в OEBS изменить системное сообщение ORACLE FORMS.
Например, «FRM-41830 LOV не содержит входов» на какое-нибудь другое.

1)  Необходимо заменить файл fmfru.msb по адресу
    /r12/…/apps/tech_st/10.1.2/forms/mesg

2) перезагрузить OC4J

    cd $ADMIN_SCRIPTS_HOME

    adoacorectl.sh stop

    adoacorectl.sh start

Новое сообщение по длине символов должно быть равно исходному сообщению.

FMDUS.MSB contains default (American) Developer messages
FMGUS.MSB contains default (American) Generate messages
FMFUS.MSB contains default (American) Runform messages

Определение четная или нечетная текущая неделя

Запрос определения четная или нечетная неделя относительно текущей даты

Используем маску ‘IW’ — Week of year (1-52 or 1-53) based on the ISO standard.

select case when mod(to_number(to_char(sysdate, 'IW')), 2) = 0 then
          'Четная неделя'
         else
          'Нечетная неделя'
       end cur_week
      ,to_number(to_char(sysdate, 'IW')) num_week
from dual


Oracle® Database SQL Language Reference 11g Release 2 (11.2) Table Datetime Format Elements