• 利用HTP工具包开发报表


    利用这种方式的优点是不需要跑请求就可以打印报表

    工具包中常用程序说明

    htp.print 

    语法   htp.print (cbuf | dbuf | nbuf);
    作用   generates a line in an HTML document.
    参数   cbuf in varchar2 or
    dbuf in dateor
    nbuf in number

    Generates Generates a line in an HTML document based on the value passed to it.



    htp.p 
    Alias for htp.print 
    Structure Tags 结构标记
    The following tags are used to identify the major parts of an HTML 
    document. 
    Note: Although this section shows hypertext procedures (HTP), all of 

    them are also available as hypertext functions (HTF). 



    htp.htmlOpen 
    语法   htp.htmlOpen;
    作用   Prints a tag that indicates the beginning of an HTML document
    ERP REPORT 
    参数   none
    Generates <HTML>
    htp.htmlClose 
    语法   htp.htmlClose;
    作用   Prints a tag that indicates the end of an HTML document
    参数   none

    Generates </HTML>



    htp.headOpen 
    语法   htp.headOpen;
    作用   Prints a tag that indicates the beginning of the HTML document head
    参数   none

    Generates <HEAD>



    htp.headClose 
    语法   htp.headClose;
    作用   Prints a tag that indicates the end of the HTML document head
    参数   none

    Generates </HEAD>



    htp.bodyOpen 
    语法   htp.bodyOpen (cbackground, cattributes);
    作用   Prints the tag that identifies the beginning of the body of an HTML document, and 
    allows you to specify an image as the background of the document
    参数   cbackground in varchar2 DEFAULT NULL 
    cattributes in varchar2 DEFAULT NULL
    Generates <BODY background="cbackground" cattributes>
    Note: If cbackground and cattributes are NULL, this tag generates <BODY>. 
    ERP REPORT 
    Example htp.bodyOpen ('/img/background.gif');  This line produces:<BODY 

    background="background.gif">



    htp.bodyClose 
    语法   htp.bodyClose;
    作用   Defines the end of the HTML document body
    参数   none
    Generates   </BODY>
    Generates   <TITLE>ctitle</TITLE><Hnsize
    ALIGN="calign" NOWRAP CLEAR="cclear" 
    cattributes>ctitle</Hnsize>
    Note that htp.htitle produces non-standard 
    HTML. However, most Web Browsers accept 
    it. To produce standard HTML, the <TITLE> 
    tag must be in the HEAD section of the page, 
    and the level heading tag (<H
    n>) must be in the BODY section. For example: 
    htp.headOpen; htp.title(...); 
    htp.headClose; htp.bodyOpen; htp.header 
    (1,...)); ...
    Table Tags 表格标记
    The Table tags allow the user to insert tables and manipulate the size 
    and columns of the table in a document. 
    Note: All the hypertext procedures (HTP) shown in this section are also 

    available as hypertext functions (HTF). 



    htp.tableOpen 
    语法    htp.tableOpen (cborder, calign, cnowrap, cclear, cattributes); 
    作用    Prints an HTML tag that begins an HTML table. 
    参数    cborder in varchar2 DEFAULT NULL 
    calign in varchar2 DEFAULT NULL 
    cnowrap in varchar2 DEFAULT NULL 
    cclear in varchar2 DEFAULT NULL 
    cattributes in varchar2 DEFAULT NULL; 
    Generates <TABLE BORDER NOWRAP ALIGN="calign" CLEAR="cclear" cattributes>
    Note: The BORDER attribute is only determined by whether cborder is null 
    or not null. 

    ERP REPORT 



    htp.tableClose 
    语法    htp.tableClose; 
    作用    Prints an HTML tag that ends an HTML table. 
    参数    none 

    Generates </TABLE>



    htp.tableRowOpen 
    语法    htp.tableRowOpen (calign, cvalign,cdp, cnowrap, cattributes); 
    作用    Prints an HTML tag that inserts a row tag into a table. 
    参数    calign in varchar2 DEFAULT NULL 
    cvalign in varchar2 DEFAULT NULL 
    cdp in varchar2 DEFAULT NULL 
    cnowrap in varchar2 DEFAULT NULL 
    cattributes in varchar2 DEFAULT NULL 

    Generates <TR ALIGN="calign" VALIGN="cvalign" DP="cdp" NOWRAP catttributes>



    htp.tableRowClose 
    语法    htp.tableRowClose; 
    作用    Prints an HTML tag that ends a row in a table. 
    参数    none 

    Generates </TR> 



    htp.tableData 
    语法    htp.tableData (cvalue, calign, cdp, cnowrap, cattributes); 
    作用    Prints an HTML tag that inserts data into the rows and columns of a selected table. 
    参数    cvalue in varchar2 DEFAULT NULL 
    calign in varchar2 DEFAULT NULL 
    cdp in varchar2 DEFAULT NULL 
    cnowrap in varchar2 DEFAULT NULL 
    cattributes in varchar2 DEFAULT NULL 
    Generates <TD ALIGN="calign" DP="cdp" ROWSPAN="crowspan" COLSPAN="ccolspan" NOWRAP 
    ERP REPORT 
    cattributes>cvalue</TD>
    包里面别的程序和用法可以查

    http://www.lnu.edu.cn/book/oracleweb/ows402.htm

    一个例子

    <span style="font-size:18px;">PROCEDURE CUXTS001( 
    p_header_id IN VARCHAR2 default null, 
    p_org_id IN VARCHAR2 default null 
    ) 
    AS 
    ---declare the data source 
    ------Report page parameters 
    v_row_num NUMBER; 
    v_first_flag NUMBER := 0; -----标志
    x_count NUMBER; -------总行数
    v_page_rows NUMBER := 1; ------定义每张报表的line数量
    v_page_count NUMBER; 
    v_page_width NUMBER := 800; 
    v_font_size NUMBER := 2; 
    v_page_num NUMBER := 1; 
    v_line_count NUMBER := 0; 
    v_jes NUMBER := 0; 
    v_dis_no NUMBER := 0; 
    max_line NUMBER := 7; 
    ---------------------------------------------------- 
    t_qty NUMBER := 0; 
    t_amount NUMBER := 0; 
    x_org_name VARCHAR2 (100); 
    x_sum_count_no NUMBER := 0; 
    ----采购题头
    CURSOR c_header 
    IS 
    SELECT pha.segment1 po_num, 
    pha.po_header_id, 
    pha.type_lookup_code, 
    pha.agent_id, 
    pha.comments, 
    ppf.full_name full_name, 
    pha.creation_date, 
    ERP REPORT 
    pv.vendor_id, 
    SUBSTR (pv.vendor_name, 1, 38) vendor_name 
    FROM po_headers_all pha, 
    po_vendors pv, 
    per_people_f ppf 
    WHERE pha.vendor_id = pv.vendor_id 
    AND pha.agent_id = ppf.person_id 
    AND pha.org_id = TO_NUMBER (p_org_id) 
    AND pha.po_header_id = p_header_id; 
    ----行信息
    CURSOR c_line (x_header_id NUMBER) 
    IS 
    SELECT pda.destination_subinventory, 
    pll.quantity, 
    pla.line_num, 
    pla.unit_meas_lookup_code, 
    pla.unit_price, 
    pla.item_description item_desc, 
    pll.quantity * pla.unit_price amount, 
    pla.po_header_id, 
    pll.shipment_num, 
    msi.segment1 item, 
    pll.need_by_date need_by, 
    pll.ship_to_organization_id, 
    pll.promised_date, 
    pll.note_to_receiver, 
    ood.organization_code 
    FROM po_lines_all pla, 
    po_distributions_all pda, 
    po_line_locations_all pll, 
    mtl_system_items_b msi, 
    financials_system_params_all fsp, 
    org_organization_definitions ood 
    WHERE pla.po_line_id = pda.po_line_id 
    AND pll.line_location_id = pda.line_location_id 
    AND (pll.closed_code = 'OPEN' OR pll.closed_code IS NULL) 
    AND pla.item_id = msi.inventory_item_id(+) 
    AND pla.po_header_id = x_header_id 
    AND NVL (msi.organization_id, fsp.inventory_organization_id) = 
    fsp.inventory_organization_id 
    ERP REPORT 
    AND fsp.org_id = p_org_id 
    AND pll.ship_to_organization_id = ood.organization_id(+) 
    ; 
    BEGIN 
    fnd_client_info.set_org_context(p_org_id); 
    HTP.htmlopen; 
    HTP.p ('<head>'); 
    HTP.p ('<STYLE>'); 
    HTP.p (' P { page-break-before: always }'); 
    HTP.p ('</STYLE>'); 
    HTP.p ('</head>'); 
    HTP.bodyopen; 
    FOR lc_h IN c_header 
    LOOP 
    ---title2 
    HTP.tableopen ( 
    cattributes=> 'cellspacing=0 cellpadding=15 border=0 width=' 
    || v_page_width 
    || ' bgcolor="#000000"' 
    ); 
    HTP.tablerowopen (cattributes => 'bgcolor="#ffffff"'); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || 3 
    || '"> <b><U>采  购  单  据</b></U>', 
    cattributes=> 'width="16%"', 
    calign=> 'center' 
    ); 
    HTP.tablerowclose; 
    HTP.tableclose; 
    ---header 
    HTP.tableopen ( 
    cattributes=> 'cellspacing=0 cellpadding=4 border=0 width=' 
    || v_page_width 
    || ' bgcolor="#000000"' 
    ); 
    HTP.tablerowopen (cattributes => 'bgcolor="#ffffff" height="8"'); 
    ERP REPORT 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '">  采购单号:' 
    || lc_h.po_num, 
    cattributes=> 'width="15%"', 
    calign=> 'left' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '">  采购类型:' 
    || lc_h.type_lookup_code, 
    cattributes=> 'width="20%"', 
    calign=> 'left' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '">  采购日期:' 
    || TO_CHAR (lc_h.creation_date, 'YYYY/MM/DD'), 
    cattributes=> 'width="20%"', 
    calign=> 'left' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '">采购员:' 
    || lc_h.full_name, 
    cattributes=> 'width="15%"', 
    calign=> 'left' 
    ); 
    HTP.tablerowclose; 
    HTP.tableclose; 
    HTP.tableopen ( 
    cattributes=> 'cellspacing=0 cellpadding=4 border=0 width=' 
    || v_page_width 
    || ' bgcolor="#000000"' 
    ); 
    HTP.tablerowopen (cattributes => 'bgcolor="#ffffff"'); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '">供应商:' 
    ERP REPORT 
    || lc_h.vendor_name, 
    cattributes=> 'width="20%"', 
    calign=> 'left' 
    ); 
    HTP.tablerowclose; 
    HTP.tableclose; 
    HTP.tableopen ( 
    cattributes=> 'cellspacing=0 cellpadding=2 border=0 width=' 
    || v_page_width 
    || ' bgcolor="#000000"' 
    ); 
    HTP.tablerowopen (cattributes => 'bgcolor="#ffffff"'); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '">备注:' 
    || lc_h.comments, 
    cattributes=> 'width="20%"', 
    calign=> 'left' 
    ); 
    HTP.tablerowclose; 
    HTP.tableclose; 
    -- line 
    BEGIN 
    HTP.tableopen ( 
    cattributes=>  'border="1" borderColorDark="#FFFFFF" 
    borderColorLight="#000000" cellPadding="0" cellSpacing="0" width=' 
    || v_page_width 
    || ' ' 
    ); 
    HTP.tablerowopen (cattributes => 'bgcolor="#ffffff"'); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"><b>  项目</b></font>', 
    calign=> 'center', 
    cattributes=> 'width=18%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"><b>  货物名称</b></font>', 
    ERP REPORT 
    calign=> 'center', 
    cattributes=> 'width=22%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"><b>  单位</b></font>', 
    calign=> 'center', 
    cattributes=> 'width=6%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"><b>  采购单价</b></font>', 
    calign=> 'center', 
    cattributes=> 'width=8%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"><b>  数量</b></font>', 
    calign=> 'center', 
    cattributes=> 'width=7%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"><b>  金额</b></font>', 
    calign=> 'center', 
    cattributes=> 'width=13%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"><b>  需要日期</b></font>', 
    calign=> 'center', 
    cattributes=> 'width=10%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"><b>  仓库</b></font>', 
    calign=> 'center', 
    cattributes=> 'width=8%' 
    ERP REPORT 
    ); 
    HTP.tablerowclose; 
    SELECT COUNT (pla.po_line_id) 
    INTO v_jes 
    FROM po_lines_all pla, 
    po_distributions_all pda, 
    po_line_locations_all pll, 
    mtl_system_items_b msi, 
    financials_system_params_all fsp, 
    org_organization_definitions ood 
    WHERE pla.po_line_id = pda.po_line_id 
    AND pll.line_location_id = pda.line_location_id 
    AND (pll.closed_code = 'OPEN' OR pll.closed_code IS NULL) 
    AND pla.item_id = msi.inventory_item_id(+) 
    AND pla.po_header_id = lc_h.po_header_id 
    AND NVL (msi.organization_id, fsp.inventory_organization_id) = 
    fsp.inventory_organization_id 
    AND fsp.org_id = p_org_id 
    AND pll.ship_to_organization_id = ood.organization_id(+); 
    FOR lc_l IN c_line (lc_h.po_header_id) 
    LOOP 
    HTP.tablerowopen (cattributes => 'bgcolor="#ffffff"'); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> ' 
    || '&' 
    || 'nbsp' 
    || lc_l.item, 
    calign=> 'left', 
    cattributes=> 'width=16%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> ' 
    || '&' 
    || 'nbsp' 
    || lc_l.item_desc, 
    calign=> 'left', 
    cattributes=> 'width=22%' 
    ERP REPORT 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> ' 
    || '&' 
    || 'nbsp' 
    || lc_l.unit_meas_lookup_code, 
    calign=> 'left', 
    cattributes=> 'width=6%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> ' 
    || '&' 
    || 'nbsp' 
    || lc_l.unit_price, 
    calign=> 'right', 
    cattributes=> 'width=12%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> ' 
    || '&' 
    || 'nbsp' 
    || lc_l.quantity, 
    calign=> 'right', 
    cattributes=> 'width=7%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> ' 
    || '&' 
    || 'nbsp' 
    || lc_l.amount, 
    calign=> 'right', 
    cattributes=> 'width=13%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    ERP REPORT 
    || '"> ' 
    || '&' 
    || 'nbsp' 
    || TO_CHAR (lc_l.PROMISED_DATE, 'YYYY/MM/DD'), 
    calign=> 'center', 
    cattributes=> 'width=10%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> ' 
    || '&' 
    || 'nbsp' 
    || lc_l.organization_code, 
    calign=> 'center', 
    cattributes=> 'width=6%' 
    ); 
    t_qty := t_qty 
    + lc_l.quantity; 
    t_amount := t_amount 
    + lc_l.amount; 
    END LOOP; 
    v_jes := max_line 
    - v_jes; 
    LOOP 
    EXIT WHEN v_jes <= 0; 
    HTP.tablerowopen (cattributes => 'bgcolor="#ffffff"'); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> <b>' 
    || '&' 
    || 'nbsp'|| ' ' , 
    calign=> 'center', 
    cattributes=> 'width=18%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> <b>' 
    || '&' 
    ERP REPORT 
    || 'nbsp' || ' ', 
    calign=> 'center', 
    cattributes=> 'width=22%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> <b>' 
    || '&' 
    || 'nbsp' || ' ', 
    calign=> 'center', 
    cattributes=> 'width=6%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> <b>' 
    || '&' 
    || 'nbsp' || ' ', 
    calign=> 'center', 
    cattributes=> 'width=8%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> <b>' 
    || '&' 
    || 'nbsp' || ' ', 
    calign=> 'center', 
    cattributes=> 'width=7%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> <b>' 
    || '&' 
    || 'nbsp' || ' ', 
    calign=> 'center', 
    cattributes=> 'width=13%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> <b>' 
    ERP REPORT 
    || '&' 
    || 'nbsp' || ' ', 
    calign=> 'center', 
    cattributes=> 'width=10%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> <b>' 
    || '&' 
    || 'nbsp' || ' ', 
    calign=> 'center', 
    cattributes=> 'width=8%' 
    ); 
    v_jes := v_jes 
    - 1; 
    END LOOP; 
    --sum 
    HTP.tablerowopen (cattributes => 'bgcolor="#ffffff"'); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> <b>' 
    || '合计', 
    calign=> 'center', 
    cattributes=> 'width=18%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> <b>' 
    || '&' 
    || 'nbsp' || ' ', 
    calign=> 'center', 
    cattributes=> 'width=22%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> <b>' 
    || '&' 
    || 'nbsp' || ' ', 
    calign=> 'center', 
    ERP REPORT 
    cattributes=> 'width=6%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> <b>' 
    || '&' 
    || 'nbsp', 
    calign=> 'center', 
    cattributes=> 'width=8%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> ' 
    || '&' 
    || 'nbsp' 
    || t_qty, 
    calign=> 'right', 
    cattributes=> 'width=7%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> ' 
    || '&' 
    || 'nbsp' || ' ' 
    || t_amount, 
    calign=> 'right', 
    cattributes=> 'width=13%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> ' 
    || '&' 
    || 'nbsp' || ' ', 
    calign=> 'right', 
    cattributes=> 'width=10%' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '"> ' 
    ERP REPORT 
    || '&' 
    || 'nbsp' || ' ', 
    calign=> 'right', 
    cattributes=> 'width=8%' 
    ); 
    HTP.tablerowclose; 
    HTP.tableclose; 
    END; 
    HTP.tableopen ( 
    cattributes=> 'cellspacing=0 cellpadding=8 border=0 width=' 
    || v_page_width 
    || ' bgcolor="#000000"' 
    ); 
    HTP.tablerowopen (cattributes => 'bgcolor="#ffffff"'); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '">  打印人:', 
    cattributes=> 'width="10%"', 
    calign=> 'left' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '">部门主管:', 
    cattributes=> 'width="10%"', 
    calign=> 'left' 
    ); 
    HTP.tabledata ( 
    cvalue=> '<font size="' 
    || v_font_size 
    || '">总经理:', 
    cattributes=> 'width="10%"', 
    calign=> 'left' 
    ); 
    HTP.tablerowclose; 
    HTP.tableclose; 
    END LOOP; 
    HTP.tableclose; 
    HTP.bodyclose; 
    HTP.htmlclose; 
    END; </span>


    开发好后注册程序:

    路径:系统管理员->安全性->WEB PL/SQL



    然后在需要的地方调用就可以直接打印出报表

    DECLARE 
    v_command VARCHAR2 (200); 
    v_org_id NUMBER := fnd_profile.VALUE ('ORG_ID'); 
    BEGIN 
    v_command := fnd_profile.VALUE ('APPS_WEB_AGENT'); 
    v_command := v_command || '/CUXTS001?p_header_id=' || :submit.header_id; 
    v_command := v_command || '&p_org_id=' || TO_CHAR (v_org_id); 
    web.show_document (v_command, '_blank'); 
    END; 



  • 相关阅读:
    【亲测有效】安装npm慢的解决方案
    设置redis开机自动启动
    win10开启redis失败解决方案
    ajax跨域问题
    python进程不能并行的原因,进程阻塞
    python多进程并行代码
    python多进程间通信
    orangepi自启动打开一个终端并且运行脚本
    lxterminal命令打开新窗口并执行python脚本
    orangepi获取cpu温度
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299246.html
Copyright © 2020-2023  润新知