ORACLE WEBADI 开发示例



https://blog.csdn.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)

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

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

9.4 内容选择,下一步。

9.5 点击创建文档

9.6 保存并打开文档

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

 以上内容填写如下:

       

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

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



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)

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

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

10.4 选择内容参数

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

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

10.6 保存文件并打开

文档创建后如图:

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

十一、定义功能

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

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

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

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

功能: SGQ_WEBADI_FUNCTION

用户功能名:SGQ_WEBADI_FUNCTION

类型:子函数

保存退出当前界面。

十二 添加功能到菜单

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

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

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

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 -->定义布局

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

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

14.4 选择相关字段展示区域

必须字段里面的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,然后应用(设置为只读后,上传时此值为空)。

14.5 应用之后的界面如下:

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 -->定义映射

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


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

这里显示界面定义的字段对应到数据库的哪个字段。我们增加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 -->创建文档

16.2 创建独立查询,下一步

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

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

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

16.5 复查

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



16.7 加载到EBS

十七、使用:

17.1    Desktop Integrator -->创建文档

17.2 选择集成器,下一步

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

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

17.5 复查

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

进阶:客户化开发

十八、进阶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;


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

理解如下字段:

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

 


18.6 加入菜单

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

18.7 定义参数

        路径:Desktop Integrator--> SGQ_WEBADI_PARAMETER

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

18.9 下一界面

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

18.11 点击右上角的复制 按钮

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

code 必须与bne_components_b中的param_list_code一致。

保存退出。

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

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

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';

在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属性

注意:这一步很重要,必须与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

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

18.17 修改table header

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

18.18 修改       window-width

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

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

猜你喜欢

转载自blog.csdn.net/weixin_41367660/article/details/80230646