您的位置:首页 > Web前端 > HTML

EBS并发请求程序 Html 模板

2017-12-25 16:20 260 查看
一、PL/SQL写包头

CREATE OR REPLACE PACKAGE cux_fengzuo_pkg IS

  /*==================================================

  Copyright (C)  Enterprise Solutions Co.,Ltd.

             AllRights Reserved

  ==================================================*/

  PROCEDURE output_line(p_content IN VARCHAR2);

  PROCEDURE output_html_head(p_report_title IN VARCHAR2,

                             p_report_css   IN VARCHAR2);

  /*==========================================================================+

  |       Name  :

  |              main

  |   Arguments :

             模板

  |             errbuf     description

  |             retcode    description

  |    Revision  :

  |             2017-12-25    Ciel      Created

  +==========================================================================*/

  PROCEDURE main(errbuf      OUT VARCHAR2,

                 retcode     OUT VARCHAR2,

                 p_org_id    IN NUMBER,

                 p_date_from IN VARCHAR2,

                 p_date_to   IN VARCHAR2);

END cux_fengzuo_pkg;

二、写包体

CREATE OR REPLACE PACKAGE BODY cux_fengzuo_pkg IS

  ------------------- Global variables ------------------------

  g_pkg_name         CONSTANT VARCHAR2(30) := 'CUX_PROJ_INFO_FZTEST';

  g_lookup_type      CONSTANT VARCHAR2(120) := 'CUX_PROJ_INFO_FZTEST_LAYOUT'; --快速编码

  g_msg_lu_not_found CONSTANT VARCHAR2(300) := 'Report lookup type  not found';

  g_debug VARCHAR2(1) := nvl(fnd_profile.value('AFLOG_ENABLED'), 'N');

  g_nbsp CONSTANT VARCHAR2(240) := chr(38) || 'nbsp;'; --字符集

  g_salary_format VARCHAR2(240) := 'FM999G999G999G999G990D00';

  --------------------------------------------------------------

  /*=================================================

  * PROCEDURE NAME: log

  *====================================
4000
=============*/

  PROCEDURE log(p_content IN VARCHAR2) IS

  BEGIN

    -- IF g_debug = 'Y' THEN

    cux_conc_utl.log_msg(p_msg => p_content);

    --  END IF;

  END log;

  /*=================================================

  * PROCEDURE NAME: raise_exception 抛出异常函数

  *=================================================*/

  PROCEDURE raise_exception(x_return_status VARCHAR2) IS

  BEGIN

  

    IF (x_return_status = fnd_api.g_ret_sts_unexp_error)

    THEN

      RAISE fnd_api.g_exc_unexpected_error;

    ELSIF (x_return_status = fnd_api.g_ret_sts_error)

    THEN

      RAISE fnd_api.g_exc_error;

    END IF;

  

  END raise_exception;

  /*=================================================+

  |   FUNCTION

  |       date_to_char

  |   DESCRIPTION:

  |       日期格式转换

  |   ARGUMENT:

  |       p_date    - HTML content

  |   HISTORY:

  |     1.00 2017/12/25  Zuo.Feng Created.

  +==================================================*/

  FUNCTION date_to_char(p_date IN DATE) RETURN VARCHAR2 IS

    l_char VARCHAR2(30);

  BEGIN

    IF p_date IS NOT NULL

    THEN

      l_char := to_char(p_date, 'YYYY-MM-DD');

    END IF;

    RETURN l_char;

  EXCEPTION

    WHEN OTHERS THEN

      RETURN NULL;

  END date_to_char;

  /*=================================================

  * FUNCTION NAME: output_blank_filed  --输出空文件

  *=================================================*/

  FUNCTION output_blank_filed(p_char IN VARCHAR2) RETURN VARCHAR2 IS

  BEGIN

    RETURN nvl(p_char, g_nbsp);

  END output_blank_filed;

  /*=================================================

  * FUNCTION NAME: get_lookup_meaning  --获取快速编码

  *=================================================*/

  FUNCTION get_lookup_meaning(p_lookup_code IN VARCHAR2) RETURN VARCHAR2 IS

    l_meaning VARCHAR2(80);

  BEGIN

    SELECT flv.meaning

      INTO l_meaning

      FROM apps.fnd_lookup_values_vl flv

     WHERE flv.lookup_type = g_lookup_type

       AND flv.lookup_code = p_lookup_code

       AND flv.enabled_flag = 'Y'

       AND trunc(SYSDATE) BETWEEN

           nvl(flv.start_date_active, trunc(SYSDATE - 1)) AND

           nvl(flv.end_date_active, trunc(SYSDATE + 1));

    RETURN l_meaning;

  EXCEPTION

    WHEN OTHERS THEN

      RETURN NULL;

  END get_lookup_meaning;

  /*=================================================

  * FUNCTION NAME: get_report_title

  *=================================================*/

  FUNCTION get_report_title RETURN VARCHAR2 IS

    l_report_title VARCHAR2(80);

  BEGIN

    SELECT flt.description

      INTO l_report_title

      FROM apps.fnd_lookup_types_vl flt, apps.fnd_application fa

     WHERE flt.lookup_type = g_lookup_type

       AND flt.security_group_id = 0

       AND flt.view_application_id = fa.application_id;

    RETURN l_report_title;

  EXCEPTION

    WHEN OTHERS THEN

      RETURN NULL;

  END get_report_title;

  /*=================================================

  * FUNCTION NAME: get_client_charset  --获取用户字符集

  *=================================================*/

  FUNCTION get_client_charset RETURN VARCHAR2 IS

    l_client_charset VARCHAR2(150);

  BEGIN

    SELECT v.tag

      INTO l_client_charset

      FROM fnd_lookup_values_vl v

     WHERE v.lookup_type = 'FND_ISO_CHARACTER_SET_MAP'

       AND v.lookup_code = fnd_profile.value('ICX_CLIENT_IANA_ENCODING')

       AND v.enabled_flag = 'Y'

       AND trunc(SYSDATE) BETWEEN

           nvl(v.start_date_active, trunc(SYSDATE - 1)) AND

           nvl(v.end_date_active, trunc(SYSDATE + 1));

    RETURN l_client_charset;

  EXCEPTION

    WHEN no_data_found THEN

      RETURN 'UTF-8';

  END get_client_charset;

  /*==============================================+

  |  Function Name: get_org_name

  |  Function Desc:获取业务实体名称

  +==============================================*/

  FUNCTION get_org_name(p_org_id IN NUMBER) RETURN VARCHAR2 IS

    l_procedure_name VARCHAR2(240) := 'GET_ORG_NAME';

    l_org_name       VARCHAR2(240);

  BEGIN

    SELECT o.name

      INTO l_org_name

      FROM hr_operating_units o

     WHERE o.organization_id = p_org_id;

  

    RETURN l_org_name;

  EXCEPTION

    WHEN no_data_found THEN

      RETURN NULL;

    WHEN OTHERS THEN

      fnd_msg_pub.add_exc_msg(p_pkg_name       => g_pkg_name,

                              p_procedure_name => l_procedure_name,

                              p_error_text     => substr(SQLERRM, 1, 240));

  END get_org_name;

  /*=================================================+

  |   PROCEDURE NAME

  |       output_line

  |   DESCRIPTION:

  |       output one HTML line

  |   ARGUMENT:

  |       p_content    - HTML content

  |   HISTORY:

  |     1.00 2017/12/25  Zuo.Feng Created.

  +==================================================*/

  PROCEDURE output_line(p_content IN VARCHAR2) IS

  BEGIN

    cux_conc_utl.out_msg(p_content);

  END output_line;

  /*=================================================+

  |   PROCEDURE NAME

  |          output_title

  |   DESCRIPTION:

  |           output report title

  |   HISTORY:

  |        1.00 2017/12/25  Zuo.Feng Created.

  +==================================================*/

  PROCEDURE output_title(p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false,

                         p_commit        IN VARCHAR2 DEFAULT fnd_api.g_false,

                         x_return_status OUT NOCOPY VARCHAR2,

                         x_msg_count     OUT NOCOPY NUMBER,

                         x_msg_data      OUT NOCOPY VARCHAR2) IS

    l_api_name CONSTANT VARCHAR2(30) := 'OUTPUT_TITLE';

    l_report_title fnd_lookup_types_vl.meaning%TYPE;

    l_report_css   fnd_lookup_types_vl.description%TYPE;

  BEGIN

    -- start activity to create savepoint, check compatibility

    -- and initialize message list, include debug message hint to enter api

    x_return_status := hand_api.start_activity(p_pkg_name      => g_pkg_name,

                                               p_api_name      => l_api_name,

                                               p_init_msg_list => p_init_msg_list);

    raise_exception(x_return_status);

    BEGIN

      SELECT l.meaning, l.description

        INTO l_report_title, l_report_css

        FROM fnd_lookup_types_vl l

       WHERE l.lookup_type = g_lookup_type;

    EXCEPTION

      WHEN no_data_found THEN

        hand_api.set_message(p_app_name     => hand_api.g_app_name,

                             p_msg_name     => g_msg_lu_not_found,

                             p_token1       => 'REPORT_LU_TYPE',

                             p_token1_value => g_lookup_type);

        RAISE fnd_api.g_exc_error;

    END;

  

    --

    -- output title and header

    --

    output_html_head(l_report_title, l_report_css);

    -- API end body

    -- end activity, include debug message hint to exit api

    x_return_status := hand_api.end_activity(p_pkg_name  => g_pkg_name,

                                             p_api_name  => l_api_name,

                                             p_commit    => p_commit,

                                             x_msg_count => x_msg_count,

                                             x_msg_data  => x_msg_data);

  EXCEPTION

    WHEN fnd_api.g_exc_error THEN

      x_return_status := hand_api.handle_exceptions(p_pkg_name  => g_pkg_name,

                                                    p_api_name  => l_api_name,

                                                    p_exc_name  => hand_api.g_exc_name_error,

                                                    x_msg_count => x_msg_count,

                                                    x_msg_data  => x_msg_data);

    WHEN fnd_api.g_exc_unexpected_error THEN

      x_return_status := hand_api.handle_exceptions(p_pkg_name  => g_pkg_name,

                                                    p_api_name  => l_api_name,

                                                    p_exc_name  => hand_api.g_exc_name_unexp,

                                                    x_msg_count => x_msg_count,

                                                    x_msg_data  => x_msg_data);

    WHEN OTHERS THEN

      x_return_status := hand_api.handle_exceptions(p_pkg_name  => g_pkg_name,

                                                    p_api_name  => l_api_name,

                                                    p_exc_name  => hand_api.g_exc_name_others,

                                                    x_msg_count => x_msg_count,

                                                    x_msg_data  => x_msg_data);

  END output_title;

  /*==============================================+

  |   PROCEDURE NAME

  |       output_html_head

  |   DESCRIPTION:

  |       output report title and header

  |   ARGUMENT:

  |       p_report_title    - report name

  |   HISTORY:

  |     1.00 2017/12/25  Zuo.Feng    Created.

  +==============================================*/

  PROCEDURE output_html_head(p_report_title IN VARCHAR2,

                             p_report_css   IN VARCHAR2) IS

    l_client_charset VARCHAR2(150);

  BEGIN

    BEGIN

      SELECT v.tag

        INTO l_client_charset

        FROM fnd_lookup_values_vl v

       WHERE v.lookup_type = 'FND_ISO_CHARACTER_SET_MAP'

         AND v.lookup_code =

             fnd_profile.value('FND_NATIVE_CLIENT_ENCODING')

         AND v.enabled_flag = 'Y'

         AND trunc(SYSDATE) BETWEEN

             nvl(v.start_date_active, trunc(SYSDATE - 1)) AND

             nvl(v.end_date_active, trunc(SYSDATE + 1));

    EXCEPTION

      WHEN no_data_found THEN

        l_client_charset := 'UTF-8';

    END;

    output_line('<html>');

    output_line('<head>');

    output_line('<meta http-equiv="Content-Type" content="text/html; charset=' ||

                l_client_charset || '">');

    output_line('<title>' || p_report_title || '</title>');

    output_line('<style type="text/css" media="all">');

    output_line('body,table{font-size:13px;font-family:"Book Antiqua","Segoe UI", Tahoma, "Trebuchet MS", verdana, helvetica, arial, sans-serif, Georgia;}

         #table_margin{margin-left:50px;}

         .default_text {mso-number-format:"\@";};

         .num

         {mso-number-format:"\#\,\#\#0\.00_ \;\[Red\]\\-\#\,\#\#0\.00\\ ";};

         .percent

         {mso-number-format:Percent;};

         .percent1

         {font-style:italic;

          text-decoration:underline;

          text-underline-style:single;

          mso-number-format:Percent;}');

    IF substr(p_report_css, 1, 1) = '.'

    THEN

      output_line(';' || p_report_css);

    END IF;

    output_line('</style>');

    output_line('</head>');

    output_line('</br>');

    output_line('<body>');

    output_line('<H3 align=center>' || p_report_title || '</H3>');

    output_line('</br>');

  END output_html_head;

  /*=============================================+

  |   PROCEDURE NAME

  |       output_foot

  |   DESCRIPTION:

  |       output report title and header

  |   HISTORY:

  |     1.00 2017/11/20  Zuo.Feng Created.

  +==============================================*/

  PROCEDURE output_html_foot(p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false,

                             p_commit        IN VARCHAR2 DEFAULT fnd_api.g_false,

                             x_return_status OUT NOCOPY VARCHAR2,

                             x_msg_count     OUT NOCOPY NUMBER,

                             x_msg_data      OUT NOCOPY VARCHAR2) IS

    l_api_name CONSTANT VARCHAR2(30) := 'OUTPUT_FOOT';

  BEGIN

    -- start activity to create savepoint, check compatibility

    -- and initialize message list, include debug message hint to enter api

    x_return_status := hand_api.start_activity(p_pkg_name      => g_pkg_name,

                                               p_api_name      => l_api_name,

                                               p_init_msg_list => p_init_msg_list);

    raise_exception(x_return_status);

  

    -- API body

    output_line('</table>');

    output_line('</body>');

    output_line('</html>');

  

    -- API end body

    -- end activity, include debug message hint to exit api

    x_return_status := hand_api.end_activity(p_pkg_name  => g_pkg_name,

                                             p_api_name  => l_api_name,

                                             p_commit    => p_commit,

                                             x_msg_count => x_msg_count,

                                             x_msg_data  => x_msg_data);

  EXCEPTION

    WHEN fnd_api.g_exc_error THEN

      x_return_status := hand_api.handle_exceptions(p_pkg_name  => g_pkg_name,

                                                    p_api_name  => l_api_name,

                                                    p_exc_name  => hand_api.g_exc_name_error,

                                                 
e5df
  x_msg_count => x_msg_count,

                                                    x_msg_data  => x_msg_data);

    WHEN fnd_api.g_exc_unexpected_error THEN

      x_return_status := hand_api.handle_exceptions(p_pkg_name  => g_pkg_name,

                                                    p_api_name  => l_api_name,

                                                    p_exc_name  => hand_api.g_exc_name_unexp,

                                                    x_msg_count => x_msg_count,

                                                    x_msg_data  => x_msg_data);

    WHEN OTHERS THEN

      x_return_status := hand_api.handle_exceptions(p_pkg_name  => g_pkg_name,

                                                    p_api_name  => l_api_name,

                                                    p_exc_name  => hand_api.g_exc_name_others,

                                                    x_msg_count => x_msg_count,

                                                    x_msg_data  => x_msg_data);

  END output_html_foot;

  -----------------------------------------------------------

  -- output_parameter

  -----------------------------------------------------------

  PROCEDURE output_parameter(p_org_id     IN NUMBER,

                             p_start_date IN DATE,

                             p_end_date   IN DATE) IS

  BEGIN

    output_line('<table width="100%" cellspacing="0">');

    output_line('<tr>');

    output_line('<td align="right">' || get_lookup_meaning('ORG_NAME') ||

                '</td>');

    output_line('<td  class="default_text"  align="left">' ||

                nvl(get_org_name(p_org_id), g_nbsp) || '</td>');

    output_line('<td align="right">' || get_lookup_meaning('P_DATE_FROM') ||

                '</td>');

    output_line('<td  class="default_text"  align="left">' ||

                nvl(date_to_char(p_start_date), g_nbsp) || '</td>');

    output_line('<td align="right">' || get_lookup_meaning('P_DATE_TO') ||

                '</td>');

    output_line('<td  class="default_text"  align="left">' ||

                nvl(date_to_char(p_end_date), g_nbsp) || '</td>');

    output_line('<td align="right">' || get_lookup_meaning('PRINT_DATE') ||

                '</td>');

    output_line('<td  class="default_text"  align="left">' ||

                nvl(date_to_char(SYSDATE), g_nbsp) || '</td>');

    output_line('</tr>');

    output_line('</table>');

  END output_parameter;

  /*=================================================

  * FUNCTION NAME: process_request  输出报表数据

  *=================================================*/

  PROCEDURE process_request(p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false,

                            p_commit        IN VARCHAR2 DEFAULT fnd_api.g_false,

                            x_return_status OUT NOCOPY VARCHAR2,

                            x_msg_count     OUT NOCOPY NUMBER,

                            x_msg_data      OUT NOCOPY VARCHAR2,

                            p_org_id        IN NUMBER,

                            p_date_from     IN DATE,

                            p_date_to       IN DATE) IS

  

    l_api_name       VARCHAR2(30) := 'PROCESS_REQUEST';

    l_savepoint_name VARCHAR2(30);

    l_start_date     DATE;

    l_end_date       DATE;

  BEGIN

    -- start activity to create savepoint, check compatibility

    -- and initialize message list, include debug message hint to enter api

    x_return_status := hand_api.start_activity(p_pkg_name      => g_pkg_name,

                                               p_api_name      => l_api_name,

                                               p_init_msg_list => p_init_msg_list);

  

    raise_exception(x_return_status);

    -- API body

  

    --output_title

    output_title(p_init_msg_list => p_init_msg_list,

                 p_commit        => p_commit,

                 x_return_status => x_return_status,

                 x_msg_count     => x_msg_count,

                 x_msg_data      => x_msg_data);

    raise_exception(x_return_status);

  

    output_line('<table border="0">');

    --output_head

    output_line('<tr>');

    output_line('<td colspan="3" align="left" style="border:none" class="default_text" nowrap>' ||

                get_lookup_meaning('TITLE') || '</td>'); --输出报表题头

    output_line('</tr>');

    output_line('</table>');

    --输出参数

    output_parameter(p_org_id, p_date_from, p_date_to); --输出参数和打印日期

    /*output line_header 输出报表头*/

    output_line('<table width="100%" colspan ="22"  cellspacing="0" border="1" cellpadding="0"> ');

    output_line('<tr align="center" style="background-color:#BBBBBB">');

  

    output_line('<td align="center">' || get_lookup_meaning('ORG_NAME') ||

                '</td>'); --业务实体

    output_line('<td align="center">' || get_lookup_meaning('PROJ_ORG') ||

                '</td>'); --项目组织

    output_line('<td align="center">' || get_lookup_meaning('PROJ_CODE') ||

                '</td>'); --项目编号

    output_line('<td align="center">' || get_lookup_meaning('PROJ_NAME') ||

                '</td>'); --项目名称

    output_line('<td align="center">' ||

                get_lookup_meaning('PROJ_FULL_NAME') || '</td>'); --项目全称

    output_line('<td align="center">' || get_lookup_meaning('PROJ_TYPE') ||

                '</td>'); --项目类型

    output_line('<td align="center">' ||

                get_lookup_meaning('PROJ_MANAGER') || '</td>'); --项目经理

    output_line('<td align="center">' || get_lookup_meaning('PROJ_STATUS') ||

                '</td>'); --项目状态

    output_line('<td align="center">' ||

                get_lookup_meaning('BUDGETING_DEPARTMENT') || '</td>'); --预算编制部门

    output_line('<td align="center">' ||

                get_lookup_meaning('PRODUCT_LINE') || '</td>'); --产品线

    output_line('<td align="center">' || get_lookup_meaning('CLIENT') ||

                '</td>'); --客户

  

    hss_conc_utl.log_msg('开始');

  

    raise_exception(x_return_status);

  

    -- API end body

    -- end activity, include debug message hint to exit api

    x_return_status := hand_api.end_activity(p_pkg_name  => g_pkg_name,

                                             p_api_name  => l_api_name,

                                             p_commit    => p_commit,

                                             x_msg_count => x_msg_count,

                                             x_msg_data  => x_msg_data);

  

  EXCEPTION

    WHEN fnd_api.g_exc_error THEN

    

      x_return_status := hand_api.handle_exceptions(p_pkg_name       => g_pkg_name,

                                                    p_api_name       => l_api_name,

                                                    p_savepoint_name => l_savepoint_name,

                                                    p_exc_name       => hand_api.g_exc_name_error,

                                                    x_msg_count      => x_msg_count,

                                                    x_msg_data       => x_msg_data);

    

    WHEN fnd_api.g_exc_unexpected_error THEN

      x_return_status := hand_api.handle_exceptions(p_pkg_name       => g_pkg_name,

                                                    p_api_name       => l_api_name,

                                                    p_savepoint_name => l_savepoint_name,

                                                    p_exc_name       => hand_api.g_exc_name_unexp,

                                                    x_msg_count      => x_msg_count,

                                                    x_msg_data       => x_msg_data);

    

    WHEN OTHERS THEN

      x_return_status := hand_api.handle_exceptions(p_pkg_name       => g_pkg_name,

                                                    p_api_name       => l_api_name,

                                                    p_savepoint_name => l_savepoint_name,

                                                    p_exc_name       => hand_api.g_exc_name_others,

                                                    x_msg_count      => x_msg_count,

                                                    x_msg_data       => x_msg_data);

    

  END process_request;

  /*=================================================

  * PROCEDURE NAME: main

  *=================================================*/

  PROCEDURE main(errbuf      OUT VARCHAR2,

                 retcode     OUT VARCHAR2,

                 p_org_id    IN NUMBER,

                 p_date_from IN VARCHAR2,

                 p_date_to   IN VARCHAR2) IS

    l_return_status VARCHAR2(30);

    l_msg_count     NUMBER;

    l_msg_data      VARCHAR2(4000);

    l_api_name      VARCHAR2(30) := 'MAIN';

  

    l_date_from DATE;

    l_date_to   DATE;

  BEGIN

    --输出日志头

    cux_conc_utl.log_header;

    hss_conc_utl.log_msg('请求开始');

    l_date_from := fnd_conc_date.string_to_date(p_date_from);

    l_date_to   := fnd_conc_date.string_to_date(p_date_to) + 0.99999;

    process_request(p_init_msg_list => fnd_api.g_false,

                    p_commit        => fnd_api.g_false,

                    x_return_status => l_return_status,

                    x_msg_count     => l_msg_count,

                    x_msg_data      => l_msg_data,

                    p_org_id        => p_org_id,

                    p_date_from     => l_date_from,

                    p_date_to       => l_date_to);

  

    raise_exception(l_return_status);

  

    --输出日志尾

    cux_conc_utl.log_footer;

  

  EXCEPTION

    WHEN fnd_api.g_exc_error THEN

      cux_conc_utl.log_message_list;

      retcode := '1';

      apps.fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,

                                     p_count   => l_msg_count,

                                     p_data    => l_msg_data);

      IF l_msg_count > 1

      THEN

        l_msg_data := fnd_msg_pub.get_detail(p_msg_index => fnd_msg_pub.g_first,

                                             p_encoded   => fnd_api.g_false);

      END IF;

      errbuf := l_msg_data;

    WHEN fnd_api.g_exc_unexpected_error THEN

      cux_conc_utl.log_message_list;

      retcode := '2';

      fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,

                                p_count   => l_msg_count,

                                p_data    => l_msg_data);

      IF l_msg_count > 1

      THEN

        l_msg_data := fnd_msg_pub.get_detail(p_msg_index => fnd_msg_pub.g_first,

                                             p_encoded   => fnd_api.g_false);

      END IF;

      errbuf := l_msg_data;

    WHEN OTHERS THEN

      fnd_msg_pub.add_exc_msg(p_pkg_name       => g_pkg_name,

                              p_procedure_name => l_api_name,

                              p_error_text     => substrb(SQLERRM, 1, 240));

      cux_conc_utl.log_message_list;

      retcode := '2';

      errbuf  := SQLERRM;

  END;

END cux_fengzuo_pkg;

三、注册并发请求(应用开发员--并发--先注册可执行,再注册程序)



注意 格式要选 HTML 否则输出的报表会 乱码





1.在这里 p_org_id  值集 选 AR_SRS_OPERATING_UNITS  默认类型 选SQL

SQL:SELECT o.name FROM hr_operating_units o WHERE  o.organization_id = fnd_profile.value('DEFAULT_ORG_ID')  

提示 :业务实体

2.时间类型的参数

值集选 FND_STANDARD_DATE

四、到CUX:客户化超级用户--快速编码 注册汉字

(理论上PL/SQL 避免出现中文,所以到这里注册成 英文码)



做到这一步,基本上可以跑出报表了

但是在选参数的时候,可能会报错(什么 业务实体 无效。。)

这是因为 没有 设置 业务实体的权限



在系统管理这个职责,进去打开这个功能(注意不是系统管理员)
把你的请求在这里找出来

点更新进去,然后这里选择多个



再运行 ,基本的框架就出来了



再剩下的 就根据功能顾问的需求 来做了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  EBS 并发 模板