ORACLE WEBADI 开发示例

时间:2024-04-13 13:45:05


https://blog.****.net/guardiangel/article/details/38898579

一、建表

create table SGQ_WEBADI_DEMO

(

    ADI_ID  NUMBER,

    ADI_ORGANIZATION_ID  NUMBER,

    ADI_CODE  VARCHAR2(30),

    ADI_NAME VARCHAR2(100),

    ADI_DATE  DATE

);

二、创建同义词

SQL> CREATE PUBLIC SYNONYM SGQ_WEBADI_DEMO FOR SGQ_WEBADI_DEMO;

 

Synonym created

三、创建序列

SQL> CREATE SEQUENCE SGQ_WEBADI_DEMO_S;

 

Sequence created

四、创建序列同义词

SQL> CREATE PUBLIC SYNONYM SGQ_WEBADI_DEMO_S FOR SGQ_WEBADI_DEMO_S;

 

Synonym created

五、插入测试数据

SQL> INSERT INTO SGQ_WEBADI_DEMO VALUES(1,83,'TEST01','青羊支行',SYSDATE);

 

1 row inserted

 

SQL> commit;

 

Commit complete

六、登记表

 参数的涵义分别为:所有者、表名、扩展(T自动,S非自动)下一区,*、已使用

                :所有者、表名、列字段名、序号、类型、字段宽度、是否为空,是否可以转换。

SQL> BEGIN

    ad_dd.register_table('XXT','SGQ_WEBADI_DEMO','t');

    ad_dd.register_column('XXT','SGQ_WEBADI_DEMO','adi_id',1,'number',38,'y','n');

    ad_dd.register_column('XXT','SGQ_WEBADI_DEMO','adi_organization_id',2,'number',38,'y','n');

    ad_dd.register_column('XXT','SGQ_WEBADI_DEMO','adi_code',3,'varchar2',30,'y','n');

    ad_dd.register_column('XXT','SGQ_WEBADI_DEMO','adi_name',4,'varchar2',100,'y','n');

    ad_dd.register_column('XXT','SGQ_WEBADI_DEMO','adi_date',5,'date',9,'y','n');

    COMMIT;

    END;

   /

 

PL/SQL procedure successfully completed

七、创建视图

SQL> create or replace view sgq_webadi_demo_v as select * from sgq_webadi_demo;

 

View created

八、创建包

SQL> CREATE OR REPLACE PACKAGE SGQ_WEBADI_DEMO_PKG IS

      PROCEDURE UPLOAD_DATA(P_ID              IN NUMBER,

                            P_ORGANIZATION_ID NUMBER,

                           P_CODE            IN VARCHAR2,

                            P_NAME            IN VARCHAR2,

                            P_DATE            IN DATE);

    END;

    /

 

Package created

SQL> CREATE OR REPLACE PACKAGE BODY SGQ_WEBADI_DEMO_PKG IS

      PROCEDURE UPLOAD_DATA(P_ID              IN NUMBER,

                            P_ORGANIZATION_ID NUMBER,

                            P_CODE            IN VARCHAR2,

                            P_NAME            IN VARCHAR2,

                           P_DATE            IN DATE) IS

      BEGIN

        IF P_ID IS NULL THEN

          INSERT INTO SGQ_WEBADI_DEMO

           (ADI_ID, ADI_ORGANIZATION_ID, ADI_CODE, ADI_NAME, ADI_DATE)

           SELECT SGQ_WEBADI_DEMO_S.NEXTVAL,

                  P_ORGANIZATION_ID,

                  P_CODE,

                  P_NAME,

                  P_DATE

             FROM DUAL;

       ELSE

         UPDATE SGQ_WEBADI_DEMO T

            SET T.ADI_ORGANIZATION_ID = P_ORGANIZATION_ID,

                T.ADI_CODE            = P_CODE,

                T.ADI_NAME            = P_NAME,

                T.ADI_DATE            = P_DATE

          WHERE T.ADI_ID = P_ID;

       END IF;

     END;

   END SGQ_WEBADI_DEMO_PKG;

   /

 

Package body created

九、创建集成器

9.1     Desktop Integrator -->创建文档(Create Document)
ORACLE WEBADI 开发示例

9.2选择HR集成器设置,下一步

ORACLE WEBADI 开发示例

9.3 查看程序选择EXCEL 2003,否则可能会有问题。 报告框不要选,否则不能编辑上传。下一步。

ORACLE WEBADI 开发示例

9.4 内容选择,下一步。

ORACLE WEBADI 开发示例

9.5 点击创建文档

ORACLE WEBADI 开发示例

9.6 保存并打开文档

ORACLE WEBADI 开发示例

ORACLE WEBADI 开发示例

9.7 文档创建完成后,点弹出界面的关闭按钮,并编辑(注意点一下加载列的第一个单元格,用来进行标记,本测试后续导入时,只导入标记的行)。

ORACLE WEBADI 开发示例

 以上内容填写如下:

       ORACLE WEBADI 开发示例

9.8 加载到EBS(加载项-ORACLE-加载)

ORACLE WEBADI 开发示例

9.9选择标记的行,点击加载


ORACLE WEBADI 开发示例
ORACLE WEBADI 开发示例

9.10 验证,因为在中文环境下创建的集成器,所以查看时如果无数据,则要先初始化语言环境,再进行一遍查询操作。

SQL> alter session set nls_language='SIMPLIFIED CHINESE';

 

Session altered

SQL> SELECT BNI.APPLICATION_ID, --应用ID

  2         BNI.INTEGRATOR_CODE, --集成器代码

  3         BNI.USER_NAME --集成器名称

  4    FROM BNE_INTEGRATORS_VL BNI

  5   WHERE BNI.USER_NAME = 'SGQ_WEBADI_DEMO';

 

  APPLICATION_ID INTEGRATOR_CODE                USER_NAME

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

           20003 GENERAL_141_INTG               SGQ_WEBADI_DEMO

十、维护集成器表单功能关联

10.1    Desktop Integrator -->创建文档(Create Document)

ORACLE WEBADI 开发示例

10.2 选择HR 维护集成器表单功能关联(HR Maintain Integrator Form Function Associations),下一步

ORACLE WEBADI 开发示例

10.3 选择EXCEL 2003 ,报告前面的框不打勾,理由参见上面说明,,下一步。

ORACLE WEBADI 开发示例

10.4 选择内容参数

ORACLE WEBADI 开发示例

PS:应用程序简称为本系统的客户化应用名称XXT,其他系统按之前加载时导入的应用程序简称填写。同样,集成器用户名也是在之前加载时定义的。填写完成后,继续。

10.5 复查,无问题,则点击创建文档

ORACLE WEBADI 开发示例

10.6 保存文件并打开

ORACLE WEBADI 开发示例

文档创建后如图:

ORACLE WEBADI 开发示例

表单功能列表字段暂不填写,我们定义此功能名称后再进行填写。

十一、定义功能

11.1 进入路径:应用开发员-->应用产品-->功能

a)在说明选项卡,填写如下:

ORACLE WEBADI 开发示例

其中,SGQ_WEBADI_FUNCTION为自定义的功能。

b)在特性选项卡,填写如下:

ORACLE WEBADI 开发示例

功能: SGQ_WEBADI_FUNCTION

用户功能名:SGQ_WEBADI_FUNCTION

类型:子函数

保存退出当前界面。

十二 添加功能到菜单

12.1 进入路径:应用开发员-->应用产品-->菜单

a)查找DESKTOP INTEGRATION MENU,添加一行,功能列填写:SGQ_WEBADI_FUNCTION,即上面定义的功能。提示列保存为空。然后保存退出。

ORACLE WEBADI 开发示例

十三、填写第十步创建的表单功能EXCEL中的表单功能列表,并进行加载

ORACLE WEBADI 开发示例

ORACLE WEBADI 开发示例

13.1 验证

SQL> alter session set nls_language='SIMPLIFIED CHINESE';

 

Session altered

SQL>  SELECT BNI.APPLICATION_ID,

            BNI.INTEGRATOR_CODE, --集成器CODE

            BNI.USER_NAME, --集成器名称

            BSR.SECURITY_VALUE --功能CODE

       FROM BNE_INTEGRATORS_VL BNI

       JOIN BNE_SECURITY_RULES BSR ON (BSR.APPLICATION_ID = BNI.APPLICATION_ID AND

                                      BSR.SECURITY_CODE = BNI.INTEGRATOR_CODE)

      WHERE BNI.USER_NAME = 'SGQ_WEBADI_DEMO';

 

  APPLICATION_ID INTEGRATOR_CODE                USER_NAME                      SECURITY_VALUE

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

           20003 GENERAL_141_INTG               SGQ_WEBADI_DEMO                SGQ_WEBADI_FUNCTION

十四、定义布局

14.1    Desktop Integrator -->定义布局

ORACLE WEBADI 开发示例

14.2 选择刚创建的集成器(本例为SGQ_WEBADI_DEMO),查找。再点创建

ORACLE WEBADI 开发示例

14.3 填写如下:输入自定义的布局名称SGQ_WEBADI_DEMO_LAYOUT,题头数不用管,下一步。

ORACLE WEBADI 开发示例

14.4 选择相关字段展示区域

ORACLE WEBADI 开发示例

必须字段里面的ORGANIZATION_ID改为题头,其他全部为行。

改为题头,则字段显示的Header里面,如果改为行,则显示在行里面。必需字段是自动出来的API PROCEDURE NAME里面的参数列表,并去提了前面的P_,我们可以安排这些字段的显示区域,(Header或者Line)

注意:

1.这些值将传给API PROCEDURE NAME,也就是参数列表,一行一次,不管是Header还是Line。

2.视图的字段名和变量名P_XXX,变量名去年P_前缀后,最好不要和视图里面的字段名相同。

因此在EXCEL里面显示的参数是分题头、行、传递给API PRECECURE NAME时是并列的,至于在API PROCEDURE NAME里面,我们又可以自己把头字段和行字段进行区分,以便插入到不同的表中。

可选字段是VIEW的字段,可以不进行显示。

14.4 对字段属性是否只读等进行设置,此处我们只设置行ID为只读。标题为测试组织ID,然后应用(设置为只读后,上传时此值为空)。

ORACLE WEBADI 开发示例

14.5 应用之后的界面如下:

ORACLE WEBADI 开发示例

14.6 验证:

    SELECT BNI.APPLICATION_ID,

        BNI.INTEGRATOR_CODE--集成器CODE

        BNI.USER_NAME--集成器名称

        BLV.LAYOUT_CODE--布局代码

        BLV.USER_NAME--布局用户名称

        BLC.SEQUENCE_NUM,

        BIC.*

   FROM BNE_INTEGRATORS_VL    BNI,

        BNE_LAYOUTS_VL        BLV,

        BNE_LAYOUT_COLS       BLC,

        BNE_INTERFACE_COLS_VL BIC

  WHERE BNI.USER_NAME = 'SGQ_WEBADI_DEMO'

    AND BLV.INTEGRATOR_APP_ID = BNI.APPLICATION_ID

    AND BLV.INTEGRATOR_CODE = BNI.INTEGRATOR_CODE

    AND BLV.LAYOUT_CODE = BLC.LAYOUT_CODE

    AND BLC.INTERFACE_APP_ID = BIC.APPLICATION_ID

    AND BLC.INTERFACE_CODE = BIC.INTERFACE_CODE

    AND BLC.INTERFACE_SEQ_NUM = BIC.SEQUENCE_NUM;

十五、定义映射

15.1    Desktop Integrator -->定义映射

ORACLE WEBADI 开发示例

15.2 查找SGQ_WEBADI_DEMO,然后点更新,然后下一步。

ORACLE WEBADI 开发示例
ORACLE WEBADI 开发示例

ORACLE WEBADI 开发示例

15.3 更新映射,这里我们添加5行,和数据库视图列数保持一致。

ORACLE WEBADI 开发示例

这里显示界面定义的字段对应到数据库的哪个字段。我们增加4行,把视图出来的值传给API PROCEDURE NAME的参数。

15.4 验证:

SQL> SELECT BNI.APPLICATION_ID,

           BNI.INTEGRATOR_CODE, --集成器CODE

           BNI.USER_NAME, --集成器名称

           BMV.MAPPING_CODE --映射CODE

      FROM BNE_INTEGRATORS_VL BNI, BNE_MAPPINGS_VL BMV

     WHERE BMV.INTEGRATOR_APP_ID = BNI.APPLICATION_ID

       AND BMV.INTEGRATOR_CODE = BNI.INTEGRATOR_CODE

       AND BNI.USER_NAME = 'SGQ_WEBADI_DEMO'

       AND BMV.INTEGRATOR_APP_ID = BNI.APPLICATION_ID

      AND BMV.INTEGRATOR_CODE = BNI.INTEGRATOR_CODE;

 

  APPLICATION_ID INTEGRATOR_CODE                USER_NAME                      MAPPING_CODE

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

           20003 GENERAL_141_INTG               SGQ_WEBADI_DEMO                GENERAL_141_MAP

十六、定义查询条件 ,用来定义过滤条件

16.1    Desktop Integrator -->创建文档

ORACLE WEBADI 开发示例

16.2 创建独立查询,下一步

ORACLE WEBADI 开发示例

注意:这里创建独立查询,以后要修改,则要HR 维护查询(HR Maintain Standalone Query)

16.3,选择EXCEL 2003 ,报告前面的框不选 ,下一步。

ORACLE WEBADI 开发示例

16.4 选择对应的应用程序简称和集成器用户名,下一步。

ORACLE WEBADI 开发示例

16.5 复查

ORACLE WEBADI 开发示例

16.6创建文档,保存并打开,并填写:

ORACLE WEBADI 开发示例


ORACLE WEBADI 开发示例

16.7 加载到EBS

十七、使用:

17.1    Desktop Integrator -->创建文档

ORACLE WEBADI 开发示例

17.2 选择集成器,下一步

ORACLE WEBADI 开发示例

17.3 选择EXCEL 2003,报告前面的框不选 ,下一步。

ORACLE WEBADI 开发示例

17.4 机构组织ID为83,即前面插入的SQL值,继续。

ORACLE WEBADI 开发示例

17.5 复查

ORACLE WEBADI 开发示例

17.6 创建文档,保存并打开。

ORACLE WEBADI 开发示例

进阶:客户化开发

十八、进阶EXCEL LOV

18.1 定义字段与LOV字段的关系

直接在APPS下面执行:

SELECT BIC.INTERFACE_COL_NAME--字段名

       BIC.VAL_TYPE--TABLE

       BIC.VAL_ID_COL--传递给程序参数的字段 ORGANIZATION_ID

       BIC.VAL_MEAN_COL--EXCEL中显示的字段ORGANIZATION_ID

       BIC.VAL_DESC_COL--LOV中说明字段organization_code,organization_name

       BIC.VAL_OBJ_NAME--列表所在的表名 ORG_ORGANIZATION_DEFINITIONS

       BIC.VAL_ADDL_W_C--WHERE 语句可不填

       BIC.VAL_COMPONENT_APP_ID--组件应用20003

       BIC.VAL_COMPONENT_CODE--组件代码还未创建先填一个然后创建CUX_ORGANIZATION

       BIC.LOV_TYPE--POPLISTSTANDARD也可以填NONE

       BIC.OFFLINE_LOV_ENABLED_FLAG --离线编辑EXCEL表格时是否可用Y

  FROM BNE_INTERFACE_COLS_B BIC

 WHERE EXISTS (SELECT NULL

          FROM BNE_INTERFACES_VL INTF,BNE_INTEGRATORS_VL INTG --集成器

         WHERE BIC.INTERFACE_CODE = INTF.INTERFACE_CODE

           AND INTF.INTEGRATOR_CODE = INTG.INTEGRATOR_CODE

           AND INTG.USER_NAME = 'SGQ_WEBADI_DEMO')

   AND BIC.INTERFACE_COL_NAME = 'P_ORGANIZATION_ID'

   FOR UPDATE;


ORACLE WEBADI 开发示例ORACLE WEBADI 开发示例

注意字段分别填写为注释中标明的值

理解如下字段:

1.VAL_ID_COL 传递给程序参数的字段,本列中只需要传值给P_ORGANIZATION,所以只填写ORGANIZATION_ID,如果还定义了P_CODE,则需要填写CODE

2.VAL_MEAN_COL 在EXCEL中显示的字段,本列中需要显示代码机构组织ID,则需要填写ORGANIZATION_ID,如果还显示机构组织代码,则填写CODE(传值还是给ORGNIZATION_ID,只是在界面上显示的是机构组织代码)

3.VAL_DESC_COL LOV中的说明字段,可以是一个,也可以是多个。

18.2 创建组件

SQL> SELECT B.APPLICATION_ID, B.VAL_COMPONENT_APP_ID, B.VAL_COMPONENT_CODE

      FROM BNE_INTERFACE_COLS_B B

     WHERE B.VAL_COMPONENT_CODE = 'SGQ_ORGANIZATION';

 

  APPLICATION_ID VAL_COMPONENT_APP_ID VAL_COMPONENT_CODE

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

           20003                20003 SGQ_ORGANIZATION

18.3向组件表插入记录

SQL> INSERT INTO BNE_COMPONENTS_B

     (

            APPLICATION_ID,

            COMPONENT_CODE,

            OBJECT_VERSION_NUMBER,

           COMPONENT_JAVA_CLASS,

            PARAM_LIST_APP_ID,

            PARAM_LIST_CODE,

            CREATED_BY,

           CREATION_DATE,

           LAST_UPDATED_BY,

           LAST_UPDATE_LOGIN,

           LAST_UPDATE_DATE

    )

    VALUES

    (

           20003,--对应的bne_interface_cols_b.val_component_app_id

           'SGQ_ORGANIZATION',--bne_interface_cols_b.val_component_CODE

           1,

           'oracle.apps.bne.integrator.component.BneOAValueSetComponent',--oraCLE标准代码

           20003,--参数应用ID

           'SGQ_ORGANIZATION',--参数的代码名称,重要

           -1,

           SYSDATE,

           -1,

           -1,

          SYSDATE

    );

 

1 row inserted

 

SQL> commit;

 

Commit complete

18.4 向组件语言表插入记录

SQL>  INSERT INTO BNE_COMPONENTS_TL

     (

            APPLICATION_ID,

            COMPONENT_CODE,

            LANGUAGE,

            SOURCE_LANG,

            USER_NAME,

            CREATED_BY,

            CREATION_DATE,

           LAST_UPDATED_BY,

           LAST_UPDATE_LOGIN,

           LAST_UPDATE_DATE

    )

    VALUES

    (

           20003,--BNE_COMPONENTS_B.APPLICATION_ID

           'SGQ_ORGANIZATION',--对应BNE_COMPONENTS_B.COMPONENT_CODE

          'ZHS',

           'ZHS',

           '机构组织',

           -1,

           SYSDATE,

           -1,

           -1,

           SYSDATE

    );

 

1 row inserted

 

SQL> commit;

 

Commit complete

18.5 定义功能

路径应用开发员-->功能,,

        功能名称如下SQL_WEBADI_PARAMETER

        类型为:SSWA servlet函数

        参数:bne:page=BneParameter

        HTML调用:BneApplicationService

 ORACLE WEBADI 开发示例ORACLE WEBADI 开发示例ORACLE WEBADI 开发示例ORACLE WEBADI 开发示例


18.6 加入菜单

应用开发员-->菜单,查找 DESKTOP INTEGRATION MENU 添加

ORACLE WEBADI 开发示例

18.7 定义参数

        路径:Desktop Integrator--> SGQ_WEBADI_PARAMETER

ORACLE WEBADI 开发示例

18.8 选择Web应用产品桌面集成品,去掉Restrict to this application,下一步

ORACLE WEBADI 开发示例

18.9 下一界面

ORACLE WEBADI 开发示例

18.10 点击查找,使用Oracle系统的一个原有参数(比如COMP_AVG_JNL_FLAG)来创建客户应用的参数及属性。

ORACLE WEBADI 开发示例

18.11 点击右上角的复制 按钮

ORACLE WEBADI 开发示例

注意:Application 必须是当前系统应用的名称

code 必须与bne_components_b中的param_list_code一致。

保存退出。

18.12 再次进入 路径:Desktop Integrator--> SGQ_WEBADI_PARAMETER,进入当前系统客户化应用,去掉Restrict to the application

ORACLE WEBADI 开发示例

18.13 查找,输入SGQ_ORGANIZATION,查找后选择

ORACLE WEBADI 开发示例

ORACLE WEBADI 开发示例

ORACLE WEBADI 开发示例

18.14 修改Table Columns属性

SELECT T.VAL_OBJ_NAME,

       T.VAL_ID_COL,

       T.VAL_MEAN_COL,

       T.VAL_DESC_COL,

       T.INTERFACE_COL_NAME

  FROM BNE_INTERFACE_COLS_B T

 WHERE T.VAL_COMPONENT_CODE = 'SGQ_ORGANIZATION';

ORACLE WEBADI 开发示例

在VALUE中输入各个列名,用,分隔,注意这里的字段名必须是BNE_INTERFACE_COLS_B.VAL_OBJ_NAME,也就是ORG_ORGANIZATION_DEFINITIONS表的字段之一

并且出现在BNE_INTERFACE_COLS_B中的VAL_ID_COL,VAL_MEAN_COL或者VAL_DESC_COL中,否则不会显示。

18.15 修改TABLE_COLUMN_ALIASN属性

ORACLE WEBADI 开发示例

注意:这一步很重要,必须与18.14 table column的顺序相同,名称必须与以下相同 ,即PACKAGE的参数相同,否则不会返回EXCEL

SELECT BIC.INTERFACE_COL_NAMEBIC.VAL_OBJ_NAMEBIC.*

  FROM BNE_INTERFACE_COLS_B BIC,

       BNE_INTERFACES_VL    INTF,

       BNE_INTEGRATORS_VL   INTG

 WHERE BIC.INTERFACE_CODE = INTF.INTERFACE_CODE

   AND INTF.INTEGRATOR_CODE = INTG.INTEGRATOR_CODE

   AND BIC.INTERFACE_COL_TYPE = 1

   AND INTG.USER_NAME = 'SGQ_WEBADI_DEMO';

18.16 修改table-select-column

ORACLE WEBADI 开发示例

注意:VALUE代表返回的字段,该字段必须与bne_interface_cols_b.interface_col_name保持完全一致。并且必须存在于bne_interface_col_b.val_obj_name所在的表的列中,或者使用在table column alias的参数属性中被指定假名。否则值列表挑选后,不会自动更新EXCEL表格中对应的项目。

18.17 修改table header

ORACLE WEBADI 开发示例

VALUE:机构组织ID(LOV中第一个字段题头的值)

18.18 修改       window-width

ORACLE WEBADI 开发示例

18.19 重启应用,因为LOV调用的是SERVLET类,必须重新加载方可生效,如果只修改了属性值,则不需要重启应用,只有UPDATE基表BNE_INTERFACE_COLS_B中的值的时候,才需要重启应用。

本示例环境为:(Oracle Applications 12.1.2 RDBMS 11.1.0.7.0)
系统应用名称为:XXT客户化应用
简称为:XXT