Архив

Публикации с меткой ‘report’

Список полномочий и групп запросов для отчета

15 Апрель 2016 Нет комментариев

Запрос для вывода списка полномочий и групп запросов по коду или имени отчета/параллельной программы:

with params as (
select 'FNDATREP' as short_name
      ,''    as long_name
      ,'RU'  as lang /* RU;US */
from dual
)
select  p1.concurrent_program_name
       ,pt.user_concurrent_program_name
       ,fa.application_short_name as appl_resp
       ,r.responsibility_key
       ,rt.responsibility_name      
       ,fa1.application_short_name as appl_request_group
       ,g.request_group_name
from fnd_request_groups      g,
     fnd_request_group_units u,
     fnd_application    fa,
     fnd_application    fa1,         
     fnd_concurrent_programs_tl pt,
     fnd_concurrent_programs    p1,
     fnd_responsibility    r,
     fnd_responsibility_tl rt,
     params
where 1=1
      and u.application_id = g.application_id
      and u.request_group_id = g.request_group_id
      and (u.request_unit_id = pt.concurrent_program_id
          or u.request_unit_type = 'A')
      and u.unit_application_id = pt.application_id
      and pt.application_id = fa.application_id
      and pt.concurrent_program_id = p1.concurrent_program_id
      and g.application_id = fa1.application_id
      and r.request_group_id = g.request_group_id
      and r.responsibility_id = rt.responsibility_id
      and rt.language = params.lang
      and pt.language  = params.lang
      and (
            (p1.concurrent_program_name like '%'||params.short_name||'%' 
             and params.short_name is not null 
            ) 
            or 
            (pt.user_concurrent_program_name like '%'||params.long_name||'%' 
             and params.long_name is not null and params.short_name is null
            )
          )
order by 1,2;

XSL-Трансформации (XSLT)

6 Февраль 2012 5 comments

Для написания красивых отчетов в Excel (под OEBS) довольно часто используем XSL шаблон.

Для тестирования XSL шаблона есть несколько вариантов:

  1. Загружаем XSL в OEBS и запускаем отчет — самый долгий способ.
  2. Используем мощный редактор Altova XMLSpy, который позволяет накладывать XSL на XML (XSL-Transformation). Основной минус, то что продукт платный.
  3. Используем javascript скрипт представленный ниже.
  4. var xmlFile = "data.xml";         // xml данные
    var xslFile = "tempalate.xsl";	  // xsl шаблон
    var outFile = "REPORT.xls";       // имя генерируемого файла
    //
    var Xml = null;
    var Xsl = null;
    var objTransformer = null;
    
    function init()
    {
       Xml = new ActiveXObject("MSXML2.DOMDocument");
       Xml.async = false;
       Xml.load(xmlFile);
    
       Xsl = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
       Xsl.async = false;
       Xsl.load(xslFile);
    
       // запись в файл   
       f = new ActiveXObject("ADODB.Stream");
       f.Charset = "UTF-8";
       f.Open();
       f.WriteText(Xml.transformNode(Xsl));
       f.SaveToFile(outFile,2);
       f.Close();   
    
       // запуск файла
       //var WshShell = new ActiveXObject("WScript.Shell");
       //WshShell.Run(outFile);   
    }
    
    init();


    Для использования скрипта создаем файл с расширением «.js», например «GenerateReportXML-XSL.js». Указываем в скрипте название файлов для шаблона и данных. Запускаем скрипт на выполнение (Windows).

  5. В данных после

    < ?xml version="1.0" encoding="UTF-8"?>

    добавляем новый тег

    < ?xml-stylesheet href="XXX.xsl" type="text/xsl"?>

    , где XXX.xsl имя xslt преобразования. Затем открываем xml через Excel

Добавление отчета в меню

declare
  vr_Form_name   VARCHAR2(100) := 'XX_NAME';
  vr_Description VARCHAR2(200) := 'XX_DESCRIPTION';
begin
  -- Регистрация функции формы
  fnd_form_functions_pkg.load_row
  (
    x_function_name           => vr_Form_name
  , x_application_short_name  => 'FND'
  , x_form_name               => 'FNDRSRUN'
  , x_parameters              => 'CONCURRENT_PROGRAM_NAME="'||vr_Form_name
                                 ||'" PROGRAM_APPL_SHORT_NAME="'||'XX'
                                 ||'" TITLE="'||vr_Description||'"'
  , x_type                    => 'FORM'
  , x_web_host_name           => NULL
  , x_web_agent_name          => NULL
  , x_web_html_call           => NULL
  , x_web_encrypt_parameters  => NULL
  , x_web_secured             => NULL
  , x_web_icon                => NULL
  , x_object_name             => NULL
  , x_region_application_name => NULL
  , x_region_code             => NULL
  , x_user_function_name      => vr_Description
  , x_description             => vr_Description
  , x_owner                   => 'INITIAL SETUP'
  , x_custom_mode             => 'FORCE'
  );
-- Регистрация пункта меню
  fnd_menu_entries_pkg.load_row
  (
    x_mode          => 'REPLACE'
  , x_ent_sequence  => 910
  , x_menu_name     => 'MENU_NAME'
  , x_sub_menu_name => NULL
  , x_function_name => vr_Form_name
  , x_grant_flag    => 'Y'
  , x_prompt        => vr_Description
  , x_description   => vr_Description
  , x_owner         => USER
  );
--
COMMIT;
EXCEPTION
  WHEN OTHERS THEN
    dbms_output.put_line(substr('Error: ' || SQLERRM, 1, 255));
ROLLBACK;
end;
/
SHOW ERRORS