TEC1701.WebADI开发技术总结 - 第五章 通过API自动创建Web ADI(5/6)

来源:互联网 发布:淘宝查假冒伪劣的规律 编辑:程序博客网 时间:2024/06/07 18:46

         第五章 通过API自动创建Web ADI

在创建一些不是很复杂的WebADI时,使用标准的API来创建会非常方便。通过API生成的WebADI在界面上是无法修改的。

客制化的Integrator后台表bne_integrators_b中的source'C',因此我们可以在桌面集成管理器职责中修改,如果不想让人改,把C删了;同样,如果想修改oracle标准的Integrator,可把source改为C,这样就可以修改了,不过不建议修改,因为升级不支持。不过改成C后,你可以直观的在manager职责中看到它的详细的setup,比在后台看方便一点。

1.     创建IntegratorRequired

实现代码:

--1.创建IntergratorDECLARE  o_integrator_code VARCHAR2(30);BEGIN  bne_integrator_utils.create_integrator(p_application_id       => '20003',  --应用id                                         p_object_code          => 'CUXWBAT01',--内部名称,API会自动添加'_INTG'的后缀                                         p_integrator_user_name => 'CUX_WEBADI_TEST01',--集成器名称                                         p_language             => userenv('LANG'),                                         p_source_language      => userenv('LANG'),                                         p_user_id              => fnd_global.user_id,                                         p_integrator_code      => o_integrator_code);  --返回生成的integrator_code  dbms_output.put_line(o_integrator_code);END;

2.     创建InterfaceRequired

实现代码:

--2.创建InterfaceDECLARE  o_param_list_code VARCHAR2(30);  o_interface_code  VARCHAR2(30);BEGIN  bne_integrator_utils.create_interface_for_api(p_application_id      => '20003',                                                p_object_code         => 'CUXWBAT01',                                                p_integrator_code     => 'CUXWBAT01_INTG',                                                p_api_package_name    => 'CUX_WBA_TEST01_PKG',                                                p_api_procedure_name  => 'IMPORT_REC',                                                p_interface_user_name => 'CUXWBAT01',                                                p_param_list_name     => 'CUXWBAT01_PLIST',                                                p_api_type            => 'PROCEDURE',                                                p_api_return_type     => '',                                                p_upload_type         => '2', --1= upload to Table. 2 = Upload to PL/SQL API                                                p_language            => userenv('LANG'),                                                p_source_lang         => userenv('LANG'),                                                p_user_id             => fnd_global.user_id,                                                p_param_list_code     => o_param_list_code,                                                p_interface_code      => o_interface_code);  dbms_output.put_line(o_param_list_code || ',' || o_interface_code);END;

3.     创建LayoutRequired

实现代码:

--3.创建LayoutDECLARE  o_layout_code VARCHAR2(30);BEGIN  bne_integrator_utils.create_default_layout(p_application_id  => '20003',                                             p_object_code     => 'CUXWBAT01',                                             p_integrator_code => 'CUXWBAT01_INTG',                                             p_interface_code  => 'CUXWBAT01_INTF',                                             p_user_id         => fnd_global.user_id,                                             p_force           => FALSE,                                             p_all_columns     => TRUE,                                             p_layout_code     => o_layout_code);  dbms_output.put_line(o_layout_code);END;

到目前为止WebADI已经创建完毕,可以使用了。可以通过预览查看效果的,不过template上的字段提示都还是代码,可以通过直接更新bne_interface_cols_vl表来修改成中文提示。

4.     定义功能(Required

实现代码:

DECLARE  l_parameters  VARCHAR2(500) := 'bne:page=BneCreateDoc' || chr(38) ||                                 'bne:';  l_function_id NUMBER;  l_rowid       VARCHAR2(20); BEGIN  l_parameters := l_parameters || chr(38) || 'bne:integrator=' || 20003 || ':' ||                  'CUXWBAT01_INTG' || chr(38) || 'bne:noreview=true';  dbms_output.put_line('parameters:' || l_parameters);  SELECT fnd_form_functions_s.nextval INTO l_function_id FROM sys.dual;  fnd_form_functions_pkg.insert_row(x_rowid                    => l_rowid,                                    x_function_id              => l_function_id,                                    x_web_host_name            => '',                                    x_web_agent_name           => '',                                    x_web_html_call            => 'BneApplicationService',                                    x_web_encrypt_parameters   => '',                                    x_web_secured              => '',                                    x_object_id                => '',                                    x_region_application_id    => '',                                    x_region_code              => '',                                    x_web_icon                 => '',                                    x_function_name            => 'CUXWBAT01_INTG',                                    x_application_id           => '',                                    x_form_id                  => '',                                    x_parameters               => l_parameters,                                    x_type                     => 'SERVLET',                                    x_user_function_name       => 'CUX:API生成WebADI导入',                                    x_description              => '',                                    x_creation_date            => SYSDATE,                                    x_created_by               => fnd_global.user_id,                                    x_last_update_date         => SYSDATE,                                    x_last_updated_by          => fnd_global.user_id,                                    x_last_update_login        => fnd_global.login_id,                                    x_maintenance_mode_support => '',                                    x_context_dependence       => '',                                    x_jrad_ref_path            => '');  dbms_output.put_line('function_id:' || l_function_id);END;

5.     实现List功能

实现代码:

6.     实现Lov功能

注意:

使用桌面集成管理器在页面配置出来的集成器,使用此API自动创建Lov是可以成功使用的。

使用API自动创建集成器和接口,再使用API自动创建LovTemplate会报错。具体原因待查。

参考代码:

BEGIN  bne_integrator_utils.create_table_lov(p_application_id     => 20003,                                        p_interface_code     => 'CUXWBAT01_INTF',                                        p_interface_col_name => 'P_USER_ID', --LOV创建字段                                        --以下为LOV定义参数                                        p_id_col           => 'USER_ID',  --表id                                        p_mean_col         => 'USER_NAME',                                        p_desc_col         => 'USER_NAME',                                        p_table            => 'FND_USER', --表名                                        p_addl_w_c         => 'ROWNUM<10', --WHERE条件                                        p_window_caption   => 'USER', --LOV窗口title                                        p_window_width     => NULL,                                        p_window_height    => NULL,                                        p_table_block_size => NULL,                                        p_table_sort_order => NULL,                                        p_user_id          => 0,                                        --以下为component的定义参数                                        p_table_columns        => 'USER_ID,USER_NAME', --提取的表的实际字段,即LOV的显示字段                                        p_table_select_columns => 'P_USER_ID', --需要提取到template上的字段,需与interface的字段名一致                                        p_table_column_alias   => 'P_USER_ID', --如果提取的LOV字段名与interface的字段名不一样,需要在此为LOV的字段定义别名,与interface字段名一致即可                                        p_table_headers        => 'userNAME,userID'); --LOV字段titleEND;

7.     实现日期Lov功能

实现代码:

BEGIN  bne_integrator_utils.create_calendar_lov(p_application_id     => 20003, --Your custom application                                           p_interface_code     => 'CUXWBAT01_INTF', --Your custom interface code                                           p_interface_col_name => 'P_DATE', --Your date_item ininterface                                           p_window_caption     => '选择日期', --Window Prompt                                           p_window_width       => NULL, --Use default                                           p_window_height      => NULL, --Use default                                           p_table_columns      => 'ADI_DATE', --Your table date_fields                                           p_user_id            => 0);END;


0 0
原创粉丝点击