博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自动创建web adi的代码
阅读量:4576 次
发布时间:2019-06-08

本文共 8931 字,大约阅读时间需要 29 分钟。

/*
Steps to create the custom integrator. 
Step 1. Using bne_integrator_utils.CREATE_INTEGRATOR package create the custom integrator 
Step 2. Using bne_integrator_utils.CREATE_INTERFACE_FOR_API package create the interface for the created integrator. 
Step 3. Using bne_integrator_utils.CREATE_DEFAULT_LAYOUT package create the default layout for the created integrator with the interface. 
Step 4. Adding POPList for the required columns. 
Step 5. Change the excel column prompts, by default the column headers will come as Database column name.  (bne_interface_cols_tl )
*/
DECLARE
   
FUNCTION is_exists_map(p_application_id 
IN 
NUMBER,
                         p_content_code   
IN 
VARCHAR2
RETURN BOOLEAN 
IS
    
CURSOR csr 
IS
      
SELECT 
1
        
FROM bne_mapping_lines
       
WHERE application_id 
= p_application_id
         
AND content_code 
= p_content_code
    l_dummy 
NUMBER
    retval  BOOLEAN
  
BEGIN
    
OPEN csr
    
FETCH csr
      
INTO l_dummy
    
IF csr
%NOTFOUND 
THEN
      retval :
= FALSE
    
ELSE
      retval :
= TRUE
    
END 
IF
    
CLOSE csr
    
RETURN retval
  
END;
  
--
BNE_CONTENT_UTILS.CREATE_CONTENT_TO_API_MAP
  
PROCEDURE create_map_line(p_application_id 
IN 
NUMBER,
                            p_interface_code 
IN 
VARCHAR2,
                            p_content_code   
IN 
VARCHAR2,
                            p_mapping_code   
IN 
VARCHAR2
IS
    
CURSOR mapping_cols_c(cp_application_id 
IN 
NUMBER, cp_content_code 
IN 
VARCHAR2, cp_interface_code 
IN 
VARCHAR2
IS
      
SELECT cc.application_id content_app_id,
             cc.content_code,
             cc.sequence_num content_seq_num,
             ic.application_id interface_app_id,
             ic.interface_code,
             ic.sequence_num interface_seq_num
        
FROM bne_content_cols_b cc, bne_interface_cols_b ic
       
WHERE cc.application_id 
= ic.application_id
         
AND cc.application_id 
= cp_application_id
         
AND (cc.
col_name 
= ic.interface_col_name 
OR
             cc.
col_name 
= substr(ic.interface_col_name, 
3
OR
             cc.sequence_num 
= ic.sequence_num 
--
add by sky.chan 
             )
         
AND cc.content_code 
= cp_content_code
         
AND ic.interface_code 
= cp_interface_code
       
ORDER 
BY cc.sequence_num 
ASC
    vn_sequence 
NUMBER
  
BEGIN
    
IF 
NOT is_exists_map(p_application_id, p_content_code) 
THEN
      vn_sequence :
= 
0
       
FOR mapping_cols_rec 
IN mapping_cols_c(p_application_id,
                                             p_content_code,
                                             p_interface_code) LOOP
         vn_sequence :
= vn_sequence 
+ 
1
         
--
 Create the Mapping records in the BNE_MAPPING_LINES table
         
INSERT 
INTO bne_mapping_lines
          (application_id,
           mapping_code,
           sequence_num,
           content_app_id,
           content_code,
           content_seq_num,
           interface_app_id,
           interface_code,
           interface_seq_num,
           object_version_number,
           created_by,
           creation_date,
           last_updated_by,
           last_update_date)
        
VALUES
          (p_application_id,
           p_mapping_code,
           vn_sequence,
           mapping_cols_rec.content_app_id,
           mapping_cols_rec.content_code,
           mapping_cols_rec.content_seq_num,
           mapping_cols_rec.interface_app_id,
           mapping_cols_rec.interface_code,
           mapping_cols_rec.interface_seq_num,
           
1,
           fnd_global.
user_id,
           SYSDATE,
           fnd_global.
user_id,
           SYSDATE)
         
EXIT 
WHEN mapping_cols_c
%NOTFOUND
       
END LOOP
    
END 
IF
  
END;
   
PROCEDURE create_bne_integrator(p_application_id  
IN 
VARCHAR2,
                                  p_object_code     
IN 
VARCHAR2,
                                  p_integrator_name 
IN 
VARCHAR2,
                                  p_package_name    
IN 
VARCHAR2,
                                  p_procedure_name  
IN 
VARCHAR2
IS
    l_integrator_name 
VARCHAR2(
200) :
= 
''
    l_integrator_code 
VARCHAR2(
100)
    l_param_list_code 
VARCHAR2(
100)
    l_interface_code  
VARCHAR2(
100)
    l_mapping_code    
VARCHAR2(
100)
    l_layout_code     
VARCHAR2(
100)
    l_content_code    
VARCHAR2(
100)
    l_parameters       
VARCHAR2(
500) :
= 
'
bne:page=BneCreateDoc
' 
                                       chr(
38)  
'
bne:
'
    l_rowid           
VARCHAR2(
100)
    l_function_id     
NUMBER
  
BEGIN
    
--
todo 1 create integrator
    bne_integrator_utils.create_integrator(p_application_id       
=> p_application_id,
                                           p_object_code          
=> p_object_code,
                                           p_integrator_user_name 
=> p_integrator_name,
                                           p_language             
=> userenv(
'
LANG
'),
                                           p_source_language      
=> userenv(
'
LANG
'),
                                           p_user_id              
=> fnd_global.
user_id,
                                           p_integrator_code      
=> l_integrator_code)
    
--
todo 2 create content
    
--
--todo 2.1 create empty content
     bne_content_utils.create_content(p_application_id,
                                     p_object_code,
                                     l_integrator_code,
                                     
'
None
',
                                     userenv(
'
LANG
'),
                                     userenv(
'
LANG
'),
                                     
'',
                                     fnd_global.
user_id,
                                     l_content_code)
    
--
--todo 2.2 create text content 
     bne_content_utils.create_content_text(p_application_id,
                                          p_object_code  
'
_TXT
',
                                          l_integrator_code,
                                          
'
Text
',
                                          
2,
                                          
'
P
',
                                          userenv(
'
LANG
'),
                                          userenv(
'
LANG
'),
                                          fnd_global.
user_id,
                                          l_content_code)
     
--
todo 3 create interface & map
     bne_integrator_utils.create_api_interface_and_map(p_application_id      
=> p_application_id,
                                                      p_object_code         
=> p_object_code,
                                                      p_integrator_code     
=> l_integrator_code,
                                                      p_api_package_name    
=> p_package_name,
                                                      p_api_procedure_name  
=> p_procedure_name,
                                                      p_interface_user_name 
=> p_integrator_name,
                                                      p_content_code        
=> l_content_code,
                                                      p_view_name           
=> 
'',
                                                      p_param_list_name     
=> p_object_code 
                                                                               
'
LIST
',
                                                      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     
=> l_param_list_code,
                                                      p_interface_code      
=> l_interface_code,
                                                      p_mapping_code        
=> l_mapping_code)
    
--
todo 4 create layout
    bne_integrator_utils.create_default_layout(p_application_id  
=> p_application_id,
                                               p_object_code     
=> p_object_code,
                                               p_integrator_code 
=> l_integrator_code,
                                               p_interface_code  
=> l_interface_code,
                                               p_user_id         
=> fnd_global.
user_id,
                                               p_force           
=> FALSE,
                                               p_all_columns     
=> TRUE,
                                               p_layout_code     
=> l_layout_code)
    
--
todo 5   change default block to  line 
    
UPDATE bne_layout_blocks_b
       
SET block_id 
= 
1, sequence_num 
= 
1
     
WHERE layout_code 
= l_layout_code
    
UPDATE bne_layout_blocks_tl
       
SET block_id 
= 
1
     
WHERE layout_code 
= l_layout_code
     
--
todo 6 create layout column
    
FOR i 
IN (
SELECT 
*
                
FROM bne_interface_cols_tl
               
WHERE interface_code 
= l_interface_code) LOOP
      bne_layout_cols_pkg.insert_row(l_rowid,
                                     p_application_id, 
--
APPLICATION_ID
                                     l_layout_code, 
--
LAYOUT_CODE
                                     
1
--
BLOCK_ID
                                     (i.sequence_num 
* 
10), 
--
SEQUENCE_NUM
                                     
1
--
OBJECT_VERSION_NUMBER
                                     p_application_id, 
--
INTERFACE_APP_ID
                                     l_interface_code, 
--
INTERFACE_CODE
                                     i.sequence_num, 
--
INTERFACE_SEQ_NUM
                                     
NULL
--
STYLE_CLASS
                                     
NULL
--
HINT_STYLE
                                     
NULL
--
HINT_STYLE_CLASS
                                     
NULL
--
PROMPT_STYLE
                                     
NULL
--
PROMPT_STYLE_CLASS
                                     
NULL
--
DEFAULT_TYPE
                                     
NULL
--
DEFAULT_VALUE
                                     
NULL
--
STYLE
                                     SYSDATE, 
--
CREATION_DATE
                                     fnd_global.
user_id
--
CREATED_BY
                                     SYSDATE, 
--
LAST_UPDATE_DATE
                                     fnd_global.
user_id
--
LAST_UPDATED_BY
                                     fnd_global.
user_id
--
LAST_UPDATE_LOGIN
                                     
NULL
--
DISPLAY_WIDTH
                                     
'
N
' 
--
READ_ONLY_FLAG
                                     )
    
END LOOP
    
--
todo 7 create map line .I think there is a bug at: BNE_CONTENT_UTILS.CREATE_CONTENT_TO_API_MAP. because they cannot create the map line.
    create_map_line(p_application_id 
=> p_application_id,
                    p_interface_code 
=> l_interface_code,
                    p_content_code   
=> l_content_code,
                    p_mapping_code   
=> l_mapping_code)
    dbms_output.put_line(
'
l_integrator_code:
'  l_integrator_code)
    dbms_output.put_line(
'
l_param_list_code
'  l_param_list_code)
    dbms_output.put_line(
'
l_interface_code:
'  l_interface_code)
    dbms_output.put_line(
'
l_mapping_code:
'  l_mapping_code)
    dbms_output.put_line(
'
l_layout_code:
'  l_layout_code)
    dbms_output.put_line(
'
l_content_code:
'  l_content_code)
     
--
 todo 8 create function
    
--
-begin create function 
    l_parameters :
= l_parameters  chr(
38)  
'
bne:integrator=
' 
                   p_application_id  
'
:
'  l_integrator_code  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            
=> l_integrator_code,
                                      x_application_id           
=> 
'',
                                      x_form_id                  
=> 
'',
                                      x_parameters               
=> l_parameters,
                                      x_type                     
=> 
'
SERVLET
',
                                      x_user_function_name       
=> p_integrator_name,
                                      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 create function 
     
--
todo 9   add other language 
    
/*
bne_integrators_pkg.add_language
    bne_interface_cols_pkg.add_language
    bne_content_cols_pkg.add_language
    bne_contents_pkg.add_language
    bne_integrators_pkg.add_language
    bne_layouts_pkg.add_language
    bne_layout_blocks_pkg.add_language
    bne_mappings_pkg.add_language
    bne_mapping_lines_pkg.add_language
*/
     
--
 todo  10 update col name OPTIONAL
    
UPDATE bne_interface_cols_tl
       
SET prompt_left 
= sky_test_webadi.get_col_name(prompt_left),
       prompt_above 
= sky_test_webadi.get_col_name(prompt_above)
     
WHERE application_id 
= p_application_id
       
AND interface_code 
= l_interface_code;
   
END;
 
BEGIN
  create_bne_integrator(p_application_id  
=> 
200,
                        p_object_code     
=> 
'
SKY_TEST_WEBADI1
',
                        p_integrator_name 
=> 
'
SKY_TEST_WEBADI1
',
                        p_package_name    
=> 
'
SKY_TEST_WEBADI
',
                        p_procedure_name  
=> 
'
CREATE_TEST
');
END;

转载于:https://www.cnblogs.com/benio/archive/2012/05/08/2490052.html

你可能感兴趣的文章
从零系列--node爬虫利用进程池写数据
查看>>
C语言中二维数组行指针是什么
查看>>
sed 常见用法
查看>>
spring boot
查看>>
js实现动态添加删除(留言板)
查看>>
如何实现一个高效的单向链表逆序输出?
查看>>
JavaScript中严格判断NaN
查看>>
json_encode不自动转义斜杠“/”的方法
查看>>
【转贴】SQL2005的系统表
查看>>
CentOS 7安装PHP依赖管理Composer以及指定PHP版本使用Composer
查看>>
循序渐进大型网站架构
查看>>
Thinkphp5.0支付宝支付扩展库类库大全
查看>>
Nodejs+Express 搭建 web应用
查看>>
2013春节出游兴“专机游”
查看>>
Leetcode 67. Add Binary
查看>>
表达式
查看>>
mysql 创建用户名及密码
查看>>
VMware虚拟机安装Centos7后设置静态ip
查看>>
关于windows nginx不能启动问题的解决,史上最坑系列之一(原文)
查看>>
ssh免密码登录与常见问题
查看>>