数据以报表形式展现的实现方法研究(转载)

背景:系统的信息业务数据往往我们需要将其显示出来,通常我们用的方式是利用报表的形式将数据打印出来,这样的好处是可以生成形式多样的格式例如pdf,html等等,但是我们也可以使用htp的形式将数据打印出来,而不用提交一个Request,下面将对两种方式分别进行说明

一.Request形式

1..report生成xml数据源,或者用plsql输出,看个人喜好,都可以实现

例如生成的TRNORD5632.xml

[html]  view plain  copy
  1. <span style="font-size:18px;"><?xml version="1.0" encoding="GBK"?>  
  2. <!-- Generated by Oracle Reports version 10.1.2.0.2 -->  
  3. <TRNORD5632>  
  4.   <LIST_G_HEAD_DES>  
  5.     <G_HEAD_DES>  
  6.       <ORDER_NUMBER>2</ORDER_NUMBER>  
  7.       <ORDER_DATE>10-SEP-13</ORDER_DATE>  
  8.       <VENDOR_NUMBER>V00001</VENDOR_NUMBER>  
  9.       <VENDOR_NAME>HAND Corporation</VENDOR_NAME>  
  10.       <CONTACT_NAME>Scott</CONTACT_NAME>  
  11.       <TELEPHONE>021-38953345</TELEPHONE>  
  12.       <HEAD_DES>2</HEAD_DES>  
  13.       <LIST_G_ITEM_NUMBER>  
  14.         <G_ITEM_NUMBER>  
  15.           <LINE_NUMBER>2</LINE_NUMBER>  
  16.           <ITEM_NUMBER>01002001</ITEM_NUMBER>  
  17.           <ITEM_NAME>Mouse</ITEM_NAME>  
  18.           <QUANTITY>1</QUANTITY>  
  19.           <UNIT_PRICE>200</UNIT_PRICE>  
  20.           <AMOUNT>200</AMOUNT>  
  21.           <ACCOUNT_ID>01-000-2990-0000-000</ACCOUNT_ID>  
  22.           <ACCOUNT_DES>Operations-No Department-Suspense-No Sub Account-No Product</ACCOUNT_DES>  
  23.           <LINE_DES>2</LINE_DES>  
  24.         </G_ITEM_NUMBER>  
  25.       </LIST_G_ITEM_NUMBER>  
  26.       <PRINT_DATE>10-SEP-13</PRINT_DATE>  
  27.       <SUM_AMOUNT>200</SUM_AMOUNT>  
  28.     </G_HEAD_DES>  
  29.   </LIST_G_HEAD_DES>  
  30. </TRNORD5632>  
  31. </span>  

2利用“1”中生成的数据源开发rtf模板,具体开发语法方法可以参考我的博客 BI Publisher(rtf)模板开发语法大全 。http://blog.csdn.net/cai_xingyun/article/details/17094863

3.修改report程序

(1)必须有参数:P_CONC_REQUEST_ID

(2)必须在before report 中调用:SRW.USER_EXIT('FND SRWINIT');

(3)必须在after report中调用:SRW.USER_EXIT('FND SRWEXIT');

修改后直接保存成rdf文件就行(不用编译;也编译不过)

 

4.上传rdf文件到对应的服务器例如$CUX_TOP/reports/ZHS

 

5.定义可执行:APPLICATION DEVELOPER--》并发》可执行

6.定义并发程序:APPLICATION DEVELOPER--》并发》程序

如果report有参数则点击:参数Parameters

主要选项

参数界面内容设置

 

注意:

7.把报表分配给请求组

1)先查找我们要挂报表的职责,并记住该职责的请求组   系统管理员->安全性责任à定义;查找出需要的责任;记住请求组

(2)分配给请求组

系统管理员->安全性责任à请求      查找出上一步记住的请求组名;把前面定义好的并发程序挂在请求组下

8.注册数据和模板

声明注意

(1).    切换责任到:XML Publisher Administrator

(2).    定义数据: XML Publisher Administratorà主页à数据定义;点创建数据定义

(3).    定义模板XML Publisher Administratorà主页à模板;点创建模板

9.切换到相应责任下提交请求,输入请求参数等就可以查看输出

二,在FORM中调用请求输出数据

程序单元

[sql]  view plain  copy
  1. <span style="font-size:18px;">procedure print_report(p_ord_num in NUMBER,p_date_end in date,p_date_start in dateis  
  2.             L_REQUEST_ID NUMBER;  
  3.             L_BL_RESULT  BOOLEAN;  
  4.             v_layout     BOOLEAN;  
  5.             X_PHASE      VARCHAR2(100);  
  6.             X_STATUS     VARCHAR2(100);  
  7.             X_DEV_PHASE  VARCHAR2(100);  
  8.             X_DEV_STATUS VARCHAR2(100);  
  9.             X_MESSAGE    VARCHAR2(100);  
  10.    BEGIN  
  11.   
  12.   
  13.   /*  
  14.   
  15.            --  
  16.   
  17.           -- Name  
  18.   
  19.           --   add_layout  
  20.   
  21.           -- Purpose  
  22.   
  23.           --   Called before submission to add layout options for request output.  
  24.   
  25.           --  
  26.   
  27.           -- Arguments  
  28.   
  29.           --    Template_APPL_Name            - Template Application Short name.  
  30.   
  31.           --    Template_code                 - Template code  
  32.   
  33.           --    Template_Language             - Template File language (iso value)  
  34.   
  35.           --    Template_Territory            - Template File Territory (iso value)  
  36.   
  37.           --    Output Format                 - Output Format  
  38.   
  39.           --添加输出模板,FND_REQUEST.add_layout (template_appl_name in varchar2,  
  40.   
  41.                                  template_code     in varchar2,  
  42.   
  43.                                  template_language in varchar2,  
  44.   
  45.                                  template_territory in varchar2,  
  46.   
  47.                                  output_format     in varchar2) return boolean  
  48.   
  49.         */  
  50.   
  51.       v_layout:=FND_REQUEST.ADD_LAYOUT('PO','TRNORD5632_4',NullNull,'PDF');    
  52.   
  53.   
  54.   
  55.   
  56.   /*  
  57.   
  58.           --  
  59.   
  60.           -- Name  
  61.   
  62.           --   submit_request  
  63.   
  64.           -- Purpose  
  65.   
  66.           --   Submits concurrent request to be processed by a concurrent manager  
  67.   
  68.           --  
  69.   
  70.           -- Arguments  
  71.   
  72.           --   application    - Short name of application under which the program  
  73.   
  74.           --            - is registered  
  75.   
  76.           --   program        - concurrent program name for which the request has  
  77.   
  78.           --            - to be submitted  
  79.   
  80.           --   description    - Optional. Will be displayed along with user  
  81.   
  82.           --            - concurrent program name  
  83.   
  84.           --   start_time    - Optional. Time at which the request has to start  
  85.   
  86.           --            - running  
  87.   
  88.           --   sub_request    - Optional. Set to TRUE if the request is submitted  
  89.   
  90.           --               - from another running request and has to be treated  
  91.   
  92.           --            - as a sub request. Default is FALSE  
  93.   
  94.           --   argument1..100    - Optional. Arguments for the concurrent request  
  95.   
  96.           --  提交并发请求  
  97.   
  98.           --FND_REQUEST.SUBMIT_REQUEST(application IN varchar2 default NULL,  
  99.   
  100.                                       program IN varchar2 default NULL,  
  101.   
  102.                                       description IN varchar2 default NULL,  
  103.   
  104.                                       start_time IN varchar2 default NULL,  
  105.   
  106.                                       sub_request IN boolean default FALSE  
  107.   
  108.                                       argument1,  
  109.   
  110.                                       argument2, ..., argument99,  
  111.   
  112.                                       argument100) return number;  
  113.         */    
  114.   
  115.       L_REQUEST_ID := FND_REQUEST.SUBMIT_REQUEST('PO',  
  116.                                                            'TRNORD5632_4',  
  117.                                                             '',  
  118.                                                             '',  
  119.                                                             FALSE,  
  120.                                                             P_DATE_END,  
  121.                                                             P_DATE_START,  
  122.                                                             P_ORD_NUM,  
  123.                                                             CHR(0),'','','','','','',  
  124.                                                             '','','','','','','','','','',  
  125.                                                             '','','','','','','','','','',  
  126.                                                             '','','','','','','','','','',  
  127.                                                              '','','','','','','','','','',  
  128.                                                             '','','','','','','','','','',  
  129.                                                              '','','','','','','','','','',  
  130.                                                              '','','','','','','','','','',  
  131.                                                               '','','','','','','','','','',  
  132.                                                              '','','','','','','','','','');  
  133.              
  134.              
  135.              
  136.            FND_MESSAGE.DEBUG('L_REQUEST_ID  '|| L_REQUEST_ID);                                                                                                                                                                                                                                              
  137.            COMMIT;     
  138.            IF L_REQUEST_ID IS NULL OR L_REQUEST_ID = 0 THEN  
  139.               RETURN;  
  140.            END IF;  
  141.   
  142.   
  143.  /*  
  144.   
  145.           --  
  146.   
  147.           -- Name  
  148.   
  149.           --   WAIT_FOR_REQUEST  
  150.   
  151.           -- Purpose  
  152.   
  153.           --   Waits for the request completion, returns phase/status and  
  154.   
  155.           --   completion text to the caller. Calls sleep between db checks.  
  156.   
  157.           -- Arguments (input)  
  158.   
  159.           --   request_id    - Request ID to wait on  
  160.   
  161.           --   interval         - time b/w checks. Number of seconds to sleep  
  162.   
  163.           --            - (default 60 seconds)  
  164.   
  165.           --   max_wait        - Max amount of time to wait (in seconds)  
  166.   
  167.           --            - for request's completion  
  168.   
  169.           -- Arguments (output)  
  170.   
  171.           --               User version of      phase and status  
  172.   
  173.           --               Developer version of phase and status  
  174.   
  175.           --               Completion text if any  
  176.   
  177.           --   phase         - Request phase ( from meaning in fnd_lookups )  
  178.   
  179.           --   status        - Request status( for display purposes          )  
  180.   
  181.           --   dev_phase    - Request phase as a constant string so that it  
  182.   
  183.           --            - can be used for comparisons )  
  184.   
  185.           --   dev_status    - Request status as a constatnt string  
  186.   
  187.           --   message        - Completion message if request has completed  
  188.   
  189.           --  
  190.   
  191.           --等待并发请求完成,并返回分析/状态和完成信息,FND_CONCURRENT.WAIT_FOR_REQUEST(request_id IN number default NULL,  
  192.   
  193.                                                                                           interval IN number default 60,  
  194.   
  195.                                                                                           max_wait IN number default 0,  
  196.   
  197.                                                                                           phase OUT varchar2,  
  198.   
  199.                                                                                           status OUT varchar2,  
  200.   
  201.                                                                                           dev_phase OUT varchar2,  
  202.   
  203.                                                                                           dev_status OUT varchar2,  
  204.   
  205.                                                                                           message OUT varchar2) return boolean;  
  206.   
  207.                 */  
  208.   
  209.            L_BL_RESULT := FND_CONCURRENT.WAIT_FOR_REQUEST(L_REQUEST_ID,1,0,X_PHASE, X_STATUS,X_DEV_PHASE,X_DEV_STATUS,X_MESSAGE);  
  210.            IF X_DEV_PHASE = 'COMPLETE' AND X_DEV_STATUS = 'NORMAL' THEN  
  211.               editor_pkg.report(L_REQUEST_ID,'Y'); --使输出的报表pdf文件在浏览器中显示。  
  212.            ELSE                 
  213.                     fnd_file.put_line(1,RPAD('x_phase',20,' ') || '=' || X_PHASE);  
  214.                     fnd_file.put_line(1,RPAD('x_status=',20,' ') || '=' || X_STATUS);  
  215.                     fnd_file.put_line(1,RPAD('x_dev_phase=', 20, ' ') || '=' || X_DEV_PHASE);  
  216.                     fnd_file.put_line(1,RPAD('x_dev_status=',20,' ') || '=' || X_DEV_STATUS);  
  217.                     fnd_file.put_line(1,RPAD('x_message=',20,' ') || '=' || X_MESSAGE);  
  218.                     fnd_file.put_line(1,'Warning : Starting journal print report failure! It did not running in 120 seconds, its request_id is ' ||  
  219.                                             TO_CHAR(L_REQUEST_ID) || ' please check it.');              
  220.                 END IF;  
  221.    end print_report;</span>  


在触发器中调用即可

 

三.HTP形式展现数据,直接输出在浏览器中

1.开发程序包

[sql]  view plain  copy
  1. <span style="font-size:18px;">CREATE OR REPLACE PACKAGE TEST_PKG IS  
  2. PROCEDURE POIMP_PRN (p_IMPORT_REQUEST_ID number);  
  3. PROCEDURE PRIMP_PRN (p_IMPORT_REQUEST_ID number);  
  4. End TEST_PKG;  
  5. /  
  6. CREATE OR REPLACE PACKAGE BODY TEST_PKG IS  
  7. PROCEDURE POIMP_PRN (p_IMPORT_REQUEST_ID number) is  
  8.   
  9.   
  10. V_Page_Width NUMBER := 1500 ;  
  11. V_Font_Size NUMBER := 2 ;  
  12. V_Title_Size NUMBER := 3;  
  13. v_name varchar2(100) ;  
  14. v_org_id number;  
  15. v_internal_address_line varchar2(100);  
  16. v_count number;  
  17. v_err varchar2(10000);  
  18. v_ITEM_CHECK varchar2(30);  
  19. Logo_Url Constant Varchar2(100) := 'http://host:port/OA_HTML/cmlogo.gif';  
  20. Begin  
  21. Htp.Tableopen(Cattributes => 'cellspacing=0 cellpadding=3 border=0 width=' ||  
  22. V_Page_Width || ' bgcolor="#000000"',  
  23. Calign => 'center');  
  24. Htp.Tablerowopen(Cattributes => 'bgcolor="#ffffff"');  
  25. Htp.Tabledata(Cvalue => '<img src=" ' || Logo_Url || '">',  
  26. Cattributes => 'width="20%"',  
  27. Calign => 'left');  
  28. Htp.Tabledata(Cvalue => '<font size="' || V_Title_Size || '"> <b>' ||  
  29. '采购订单导入-采购清单' || '</b>',  
  30. Cattributes => 'width="60%"',  
  31. Calign => 'center');  
  32. Htp.Tablerowclose;  
  33. Htp.Tableclose;  
  34. Htp.p('<p>');  
  35. Htp.Htmlopen;  
  36. Htp.Title(' 采购订单导入-物料采购清单');  
  37. Htp.p('<head>');  
  38. Htp.p('<META. http-equiv=Content-Type content="text/html; charset=gb2312" >');  
  39. Htp.p('<STYLE>');  
  40. Htp.p('</STYLE>');  
  41. Htp.p('</head>');  
  42. Htp.Bodyopen;  
  43. ---------------------  
  44.   
  45. fnd_client_info.set_org_context (v_org_id);  
  46.   
  47. Htp.Tableopen(Cattributes => 'cellspacing=0 cellpadding=3 border=1 width=' ||  
  48. V_Page_Width || ' bgcolor="#ffffff"',  
  49. Calign => 'center');  
  50. Htp.Tablerowopen(Cattributes => 'bgcolor="#ffffff"');  
  51.   
  52. For c_header in Cur_header Loop  
  53.   
  54. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '合同名称',  
  55. Cattributes => 'width="4%"',  
  56. Calign => 'center');  
  57. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.CONTRACT_NAME ||  
  58. Chr(38) || 'nbsp',  
  59. Cattributes => 'width="4%"',  
  60. Calign => 'center');  
  61.   
  62. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '合同总金额',  
  63. Cattributes => 'width="4%"',  
  64. Calign => 'center');  
  65. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.CONTRACT_AMOUNT ||  
  66. Chr(38) || 'nbsp',  
  67. Cattributes => 'width="4%"',  
  68. Calign => 'center');  
  69. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '合同编号',  
  70. Cattributes => 'width="4%"',  
  71. Calign => 'center');  
  72. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.CONTRACT_NUMBER ||  
  73. Chr(38) || 'nbsp',  
  74. Cattributes => 'width="4%"',  
  75. Calign => 'center');  
  76. Htp.Tablerowclose;  
  77. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || 'xx公司名称',  
  78. Cattributes => 'width="4%"',  
  79. Calign => 'center');  
  80.   
  81.   
  82. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || v_name ||  
  83. Chr(38) || 'nbsp',  
  84. Cattributes => 'width="4%"',  
  85. Calign => 'center');  
  86.   
  87. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || 'xx公司代码',  
  88. Cattributes => 'width="4%"',  
  89. Calign => 'center');  
  90.   
  91.   
  92. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || v_internal_address_line ||  
  93. Chr(38) || 'nbsp',  
  94. Cattributes => 'width="4%"',  
  95. Calign => 'center');  
  96.   
  97. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '合同日期',  
  98. Cattributes => 'width="4%"',  
  99. Calign => 'center');  
  100.   
  101.   
  102. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.CONTRACT_date ||  
  103. Chr(38) || 'nbsp',  
  104. Cattributes => 'width="4%"',  
  105. Calign => 'center');  
  106.   
  107. Htp.Tablerowclose;  
  108.   
  109. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '供应商名称',  
  110. Cattributes => 'width="4%"',  
  111. Calign => 'center');  
  112. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.vendor_name ||  
  113. Chr(38) || 'nbsp',  
  114. Cattributes => 'width="4%"',  
  115. Calign => 'center');  
  116. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '供应商编码',  
  117. Cattributes => 'width="4%"',  
  118. Calign => 'center');  
  119. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.vendor_code ||  
  120. Chr(38) || 'nbsp',  
  121. Cattributes => 'width="4%"',  
  122. Calign => 'center');  
  123. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '供应商地点',  
  124. Cattributes => 'width="4%"',  
  125. Calign => 'center');  
  126. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.vendor_site_code ||  
  127. Chr(38) || 'nbsp',  
  128. Cattributes => 'width="4%"',  
  129. Calign => 'center');  
  130.   
  131. Htp.Tablerowclose;  
  132. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '收货地点',  
  133. Cattributes => 'width="4%"',  
  134. Calign => 'center');  
  135. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.SHIP_TO_LOCATION ||  
  136. Chr(38) || 'nbsp',  
  137. Cattributes => 'width="4%"',  
  138. Calign => 'center');  
  139. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '收单地点',  
  140. Cattributes => 'width="4%"',  
  141. Calign => 'center');  
  142.   
  143. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.BILL_TO_LOCATION ||  
  144. Chr(38) || 'nbsp',  
  145. Cattributes => 'width="4%"',  
  146. Calign => 'center');  
  147. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '币种',  
  148. Cattributes => 'width="4%"',  
  149. Calign => 'center');  
  150. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.CURRENCY_CODE ||  
  151. Chr(38) || 'nbsp',  
  152. Cattributes => 'width="4%"',  
  153. Calign => 'center');  
  154.   
  155. Htp.Tablerowclose;  
  156. End Loop;  
  157.   
  158. Htp.Tableclose;  
  159. ------------  
  160. ---------------------  
  161. Htp.Tableopen(Cattributes => 'cellspacing=0 cellpadding=3 border=1 width=' ||  
  162. V_Page_Width || ' bgcolor="#ffffff"',  
  163. Calign => 'center');  
  164. Htp.Tablerowopen(Cattributes => 'bgcolor="#ffffff"');  
  165. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '行号',  
  166. Cattributes => 'width="1%"',  
  167. Calign => 'center');  
  168. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '站号',  
  169. Cattributes => 'width="1%"',  
  170. Calign => 'center');  
  171. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '物料编码',  
  172. Cattributes => 'width="1%"',  
  173. Calign => 'center');  
  174. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '物料描述',  
  175. Cattributes => 'width="1%"',  
  176. Calign => 'center');  
  177. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '物料分类',  
  178. Cattributes => 'width="1%"',  
  179. Calign => 'center');  
  180. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '单位',  
  181. Cattributes => 'width="1%"',  
  182. Calign => 'center');  
  183. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '数量',  
  184. Cattributes => 'width="1%"',  
  185. Calign => 'center');  
  186.   
  187. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '目录单价',  
  188. Cattributes => 'width="1%"',  
  189. Calign => 'center');  
  190. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '合同单价',  
  191. Cattributes => 'width="1%"',  
  192. Calign => 'center');  
  193. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '库存组织',  
  194. Cattributes => 'width="1%"',  
  195. Calign => 'center');  
  196. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '需求日期',  
  197. Cattributes => 'width="1%"',  
  198. Calign => 'center');  
  199. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '接收地点',  
  200. Cattributes => 'width="1%"',  
  201. Calign => 'center');  
  202. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '项目编码',  
  203. Cattributes => 'width="1%"',  
  204. Calign => 'center');  
  205. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '任务编码',  
  206. Cattributes => 'width="1%"',  
  207. Calign => 'center');  
  208. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '行类型',  
  209. Cattributes => 'width="1%"',  
  210. Calign => 'center');  
  211. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '支出类型',  
  212. Cattributes => 'width="1%"',  
  213. Calign => 'center');  
  214. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '支出组织',  
  215. Cattributes => 'width="1%"',  
  216. Calign => 'center');  
  217. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '支出日期',  
  218. Cattributes => 'width="1%"',  
  219. Calign => 'center');  
  220. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '错误信息或提示',  
  221. Cattributes => 'width="1%"',  
  222. Calign => 'center');  
  223. ------------  
  224. Htp.Tableopen(Cattributes => 'cellspacing=0 cellpadding=3 border=1 width=' ||  
  225. V_Page_Width || ' bgcolor="#ffffff"',  
  226. Calign => 'center');  
  227. For C_LINE in Cur_line Loop  
  228. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||  
  229. C_LINE.LINE_NUMBER || Chr(38) ||  
  230. 'nbsp',  
  231. Cattributes => 'width="1%"',  
  232. Calign => 'left');  
  233. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||  
  234. C_LINE.SITE_NUMBER || Chr(38) ||  
  235. 'nbsp',  
  236. Cattributes => 'width="1%"',  
  237. Calign => 'left');  
  238. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||  
  239. C_LINE.ITEM_NUM || Chr(38) ||  
  240. 'nbsp',  
  241. Cattributes => 'width="1%"',  
  242. Calign => 'left');  
  243. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||  
  244. C_LINE.ITEM_DESCRIPTION || Chr(38) ||  
  245. 'nbsp',  
  246. Cattributes => 'width="1%"',  
  247. Calign => 'left');  
  248. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||  
  249. C_LINE.ITEM_ATTRIBUTE || Chr(38) ||  
  250. 'nbsp',  
  251. Cattributes => 'width="1%"',  
  252. Calign => 'left');  
  253. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||  
  254. C_LINE.UNIT_OF_MEASURE || Chr(38) ||  
  255. 'nbsp',  
  256. Cattributes => 'width="1%"',  
  257. Calign => 'left');  
  258. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||  
  259. C_LINE.QUANTITY || Chr(38) ||  
  260. 'nbsp',  
  261. Cattributes => 'width="1%"',  
  262. Calign => 'left');  
  263. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||  
  264. C_LINE.LIST_PRICE_PER_UNIT || Chr(38) ||  
  265. 'nbsp',  
  266. Cattributes => 'width="1%"',  
  267. Calign => 'left');  
  268. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||  
  269. C_LINE.UNIT_PRICE || Chr(38) ||  
  270. 'nbsp',  
  271. Cattributes => 'width="1%"',  
  272. Calign => 'left');  
  273. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||  
  274. C_LINE.ORGANIZATION_CODE || Chr(38) ||  
  275. 'nbsp',  
  276. Cattributes => 'width="1%"',  
  277. Calign => 'left');  
  278. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||  
  279. C_LINE.NEED_BY_DATE || Chr(38) ||  
  280. 'nbsp',  
  281. Cattributes => 'width="1%"',  
  282. Calign => 'left');  
  283.   
  284. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||  
  285. C_LINE.DELIVER_TO_LOCATION || Chr(38) ||  
  286. 'nbsp',  
  287. Cattributes => 'width="1%"',  
  288. Calign => 'left');  
  289. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||  
  290. C_LINE.PROJECT_NUMBER || Chr(38) ||  
  291. 'nbsp',  
  292. Cattributes => 'width="1%"',  
  293. Calign => 'left');  
  294. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||  
  295. C_LINE.TASK_NUMBER || Chr(38) ||  
  296. 'nbsp',  
  297. Cattributes => 'width="1%"',  
  298. Calign => 'left');  
  299. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||  
  300. C_LINE.LINE_TYPE || Chr(38) ||  
  301. 'nbsp',  
  302. Cattributes => 'width="1%"',  
  303. Calign => 'left');  
  304. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||  
  305. C_LINE.EXPENDITURE_TYPE || Chr(38) ||  
  306. 'nbsp',  
  307. Cattributes => 'width="1%"',  
  308. Calign => 'left');  
  309. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||  
  310. C_LINE.EXPENDITURE_ORGANIZATION || Chr(38) ||  
  311. 'nbsp',  
  312. Cattributes => 'width="1%"',  
  313. Calign => 'left');  
  314. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||  
  315. C_LINE.EXPENDITURE_ITEM_DATE || Chr(38) ||  
  316. 'nbsp',  
  317. Cattributes => 'width="1%"',  
  318. Calign => 'left');  
  319.   
  320.   
  321. --Error code  
  322. v_err := null;  
  323.   
  324. For C_err in Cur_err Loop  
  325.   
  326. if C_err.line_number = C_line.line_number then  
  327. v_err := C_err.error_message || ';' || v_err ;  
  328. end if;  
  329.   
  330. End loop;  
  331.   
  332.   
  333. If ITEM_CHECK = 'Y' then  
  334. If c_line.item_num is not null then  
  335.   
  336. select count(*) into v_count  
  337. from mtl_system_items_b  
  338. where organization_id = c_line.organization_id  
  339. and segment1 = c_line.item_num;  
  340.   
  341. End if;  
  342.   
  343. If v_count > 0 then  
  344. select count(*) into v_count  
  345. from mtl_system_items_b  
  346. where organization_id = c_line.organization_id  
  347. and segment1 = c_line.item_num  
  348. and description = c_line.item_description  
  349. ;  
  350.   
  351. If v_count = 0 then  
  352. v_err := '物料描述不一致' || ';' || v_err ;  
  353. End if;  
  354. End if;  
  355. End if;  
  356.   
  357. Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||  
  358. v_err || Chr(38) ||  
  359. 'nbsp',  
  360. Cattributes => 'width="1%"',  
  361. Calign => 'left');  
  362. Htp.Tablerowclose;  
  363. End loop;  
  364.   
  365. Htp.Tableclose;  
  366. Htp.Tablerowclose;  
  367. Htp.Tableclose;  
  368. ----------------------  
  369.   
  370.   
  371. Htp.Bodyclose;  
  372. Htp.Htmlclose;  
  373.   
  374. End POIMP_PRN;  
  375.   
  376. End TEST_PKG;  
  377. </span>  


2.在System administrator职责   ->Security->Web PL/SQL界面注册Package

3.Form中调用

[sql]  view plain  copy
  1. <span style="font-size:18px;">DECLARE  
  2. v_command VARCHAR2 (2000);  
  3. BEGIN  
  4.   
  5. v_command := fnd_profile.VALUE ('APPS_WEB_AGENT');  
  6. v_command := v_command || '/TEST_PKG.POIMP_PRN?p_IMPORT_REQUEST_ID=' || :Test.Import_id;  
  7. /*  
  8. --v_command := v_command || '&p_Doc_Comb =' || v_doc_comb;  
  9. v_command := v_command || '&p_Doc_id =' || :HEADER.REQUEST_HEADER_ID;  
  10. v_command := v_command || '&p_Doc_type =' || :HEADER.DOC_TYPE_NAME;  
  11. v_command := v_command || '&p_Date_From =' || Null;  
  12. v_command := v_command || '&p_Date_To =' || Null;  
  13. v_command := v_command || '&p_Create_By =' || :REQ_HEADER.CREATED_BY;  
  14. v_command := v_command || '&p_Print_Person =' || V_PRN_PERSON;  
  15. */  
  16. web.show_document (v_command, '_blank');  
  17.   
  18. -- FND_MESSAGE.SET_STRING('O');  
  19. -- FND_MESSAGE.HINT;  
  20. END;</span>  

转载出处:https://blog.csdn.net/cai_xingyun/article/details/17316265
 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/f_zhangyu/article/details/80344740