Htp API的用法
上一篇 / 下一篇 2008-02-15 11:40:24 / 个人分类:EBS Customization
一般我们会提交一个Concurrent report来展现数据,但是,我们可以用Htp API直接把数据Run到Html上,而不用提交一个Request.
开发步骤:
一,创建一个Package类似如下:
CREATE OR REPLACE PACKAGE TEST_PKG IS
PROCEDURE POIMP_PRN (p_IMPORT_REQUEST_ID number);
PROCEDURE PRIMP_PRN (p_IMPORT_REQUEST_ID number);
End TEST_PKG;
/
CREATE OR REPLACE PACKAGE BODY TEST_PKG IS
PROCEDURE POIMP_PRN (p_IMPORT_REQUEST_ID number) is
V_Page_Width NUMBER := 1500 ;
V_Font_Size NUMBER := 2 ;
V_Title_Size NUMBER := 3;
v_name varchar2(100) ;
v_org_id number;
v_internal_address_line varchar2(100);
v_count number;
v_err varchar2(10000);
v_ITEM_CHECK varchar2(30);
Logo_Url Constant Varchar2(100) := 'http://host:port/OA_HTML/cmlogo.gif';
Begin
Htp.Tableopen(Cattributes => 'cellspacing=0 cellpadding=3 border=0 width=' ||
V_Page_Width || ' bgcolor="#000000"',
Calign => 'center');
Htp.Tablerowopen(Cattributes => 'bgcolor="#ffffff"');
Htp.Tabledata(Cvalue => '<img src=" ' || Logo_Url || '">',
Cattributes => 'width="20%"',
Calign => 'left');
Htp.Tabledata(Cvalue => '<font size="' || V_Title_Size || '"> <b>' ||
'采购订单导入-采购清单' || '</b>',
Cattributes => 'width="60%"',
Calign => 'center');
Htp.Tablerowclose;
Htp.Tableclose;
Htp.p('<p>');
Htp.Htmlopen;
Htp.Title(' 采购订单导入-物料采购清单');
Htp.p('<head>');
Htp.p('<META. http-equiv=Content-Type content="text/html; charset=gb2312" >');
Htp.p('<STYLE>');
Htp.p('</STYLE>');
Htp.p('</head>');
Htp.Bodyopen;
---------------------
fnd_client_info.set_org_context (v_org_id);
Htp.Tableopen(Cattributes => 'cellspacing=0 cellpadding=3 border=1 width=' ||
V_Page_Width || ' bgcolor="#ffffff"',
Calign => 'center');
Htp.Tablerowopen(Cattributes => 'bgcolor="#ffffff"');
For c_header in Cur_header Loop
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '合同名称',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.CONTRACT_NAME ||
Chr(38) || 'nbsp',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '合同总金额',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.CONTRACT_AMOUNT ||
Chr(38) || 'nbsp',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '合同编号',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.CONTRACT_NUMBER ||
Chr(38) || 'nbsp',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tablerowclose;
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || 'xx公司名称',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || v_name ||
Chr(38) || 'nbsp',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || 'xx公司代码',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || v_internal_address_line ||
Chr(38) || 'nbsp',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '合同日期',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.CONTRACT_date ||
Chr(38) || 'nbsp',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tablerowclose;
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '供应商名称',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.vendor_name ||
Chr(38) || 'nbsp',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '供应商编码',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.vendor_code ||
Chr(38) || 'nbsp',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '供应商地点',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.vendor_site_code ||
Chr(38) || 'nbsp',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tablerowclose;
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '收货地点',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.SHIP_TO_LOCATION ||
Chr(38) || 'nbsp',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '收单地点',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.BILL_TO_LOCATION ||
Chr(38) || 'nbsp',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '币种',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || c_header.CURRENCY_CODE ||
Chr(38) || 'nbsp',
Cattributes => 'width="4%"',
Calign => 'center');
Htp.Tablerowclose;
End Loop;
Htp.Tableclose;
------------
---------------------
Htp.Tableopen(Cattributes => 'cellspacing=0 cellpadding=3 border=1 width=' ||
V_Page_Width || ' bgcolor="#ffffff"',
Calign => 'center');
Htp.Tablerowopen(Cattributes => 'bgcolor="#ffffff"');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '行号',
Cattributes => 'width="1%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '站号',
Cattributes => 'width="1%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '物料编码',
Cattributes => 'width="1%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '物料描述',
Cattributes => 'width="1%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '物料分类',
Cattributes => 'width="1%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '单位',
Cattributes => 'width="1%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '数量',
Cattributes => 'width="1%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '目录单价',
Cattributes => 'width="1%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '合同单价',
Cattributes => 'width="1%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '库存组织',
Cattributes => 'width="1%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '需求日期',
Cattributes => 'width="1%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '接收地点',
Cattributes => 'width="1%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '项目编码',
Cattributes => 'width="1%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '任务编码',
Cattributes => 'width="1%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '行类型',
Cattributes => 'width="1%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '支出类型',
Cattributes => 'width="1%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '支出组织',
Cattributes => 'width="1%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '支出日期',
Cattributes => 'width="1%"',
Calign => 'center');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' || '错误信息或提示',
Cattributes => 'width="1%"',
Calign => 'center');
------------
Htp.Tableopen(Cattributes => 'cellspacing=0 cellpadding=3 border=1 width=' ||
V_Page_Width || ' bgcolor="#ffffff"',
Calign => 'center');
For C_LINE in Cur_line Loop
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||
C_LINE.LINE_NUMBER || Chr(38) ||
'nbsp',
Cattributes => 'width="1%"',
Calign => 'left');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||
C_LINE.SITE_NUMBER || Chr(38) ||
'nbsp',
Cattributes => 'width="1%"',
Calign => 'left');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||
C_LINE.ITEM_NUM || Chr(38) ||
'nbsp',
Cattributes => 'width="1%"',
Calign => 'left');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||
C_LINE.ITEM_DESCRIPTION || Chr(38) ||
'nbsp',
Cattributes => 'width="1%"',
Calign => 'left');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||
C_LINE.ITEM_ATTRIBUTE || Chr(38) ||
'nbsp',
Cattributes => 'width="1%"',
Calign => 'left');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||
C_LINE.UNIT_OF_MEASURE || Chr(38) ||
'nbsp',
Cattributes => 'width="1%"',
Calign => 'left');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||
C_LINE.QUANTITY || Chr(38) ||
'nbsp',
Cattributes => 'width="1%"',
Calign => 'left');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||
C_LINE.LIST_PRICE_PER_UNIT || Chr(38) ||
'nbsp',
Cattributes => 'width="1%"',
Calign => 'left');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||
C_LINE.UNIT_PRICE || Chr(38) ||
'nbsp',
Cattributes => 'width="1%"',
Calign => 'left');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||
C_LINE.ORGANIZATION_CODE || Chr(38) ||
'nbsp',
Cattributes => 'width="1%"',
Calign => 'left');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||
C_LINE.NEED_BY_DATE || Chr(38) ||
'nbsp',
Cattributes => 'width="1%"',
Calign => 'left');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||
C_LINE.DELIVER_TO_LOCATION || Chr(38) ||
'nbsp',
Cattributes => 'width="1%"',
Calign => 'left');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||
C_LINE.PROJECT_NUMBER || Chr(38) ||
'nbsp',
Cattributes => 'width="1%"',
Calign => 'left');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||
C_LINE.TASK_NUMBER || Chr(38) ||
'nbsp',
Cattributes => 'width="1%"',
Calign => 'left');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||
C_LINE.LINE_TYPE || Chr(38) ||
'nbsp',
Cattributes => 'width="1%"',
Calign => 'left');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||
C_LINE.EXPENDITURE_TYPE || Chr(38) ||
'nbsp',
Cattributes => 'width="1%"',
Calign => 'left');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||
C_LINE.EXPENDITURE_ORGANIZATION || Chr(38) ||
'nbsp',
Cattributes => 'width="1%"',
Calign => 'left');
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||
C_LINE.EXPENDITURE_ITEM_DATE || Chr(38) ||
'nbsp',
Cattributes => 'width="1%"',
Calign => 'left');
--Error code
v_err := null;
For C_err in Cur_err Loop
if C_err.line_number = C_line.line_number then
v_err := C_err.error_message || ';' || v_err ;
end if;
End loop;
If ITEM_CHECK = 'Y' then
If c_line.item_num is not null then
select count(*) into v_count
from mtl_system_items_b
where organization_id = c_line.organization_id
and segment1 = c_line.item_num;
End if;
If v_count > 0 then
select count(*) into v_count
from mtl_system_items_b
where organization_id = c_line.organization_id
and segment1 = c_line.item_num
and description = c_line.item_description
;
If v_count = 0 then
v_err := '物料描述不一致' || ';' || v_err ;
End if;
End if;
End if;
Htp.Tabledata(Cvalue => '<font size="' || V_Font_Size || '"> ' ||
v_err || Chr(38) ||
'nbsp',
Cattributes => 'width="1%"',
Calign => 'left');
Htp.Tablerowclose;
End loop;
Htp.Tableclose;
Htp.Tablerowclose;
Htp.Tableclose;
----------------------
Htp.Bodyclose;
Htp.Htmlclose;
End POIMP_PRN;
End TEST_PKG;
/
create public synonym TEST_PKG for TEST_PKG
/
二,在System administrator职责
->Security->Web PL/SQL界面注册Package。
三,Form中的调用方法:
DECLARE
v_command VARCHAR2 (2000);
BEGIN
v_command := fnd_profile.VALUE ('APPS_WEB_AGENT');
v_command := v_command || '/TEST_PKG.POIMP_PRN?p_IMPORT_REQUEST_ID=' || :Test.Import_id;
/*
--v_command := v_command || '&p_Doc_Comb =' || v_doc_comb;
v_command := v_command || '&p_Doc_id =' || :HEADER.REQUEST_HEADER_ID;
v_command := v_command || '&p_Doc_type =' || :HEADER.DOC_TYPE_NAME;
v_command := v_command || '&p_Date_From =' || Null;
v_command := v_command || '&p_Date_To =' || Null;
v_command := v_command || '&p_Create_By =' || :REQ_HEADER.CREATED_BY;
v_command := v_command || '&p_Print_Person =' || V_PRN_PERSON;
*/
web.show_document (v_command, '_blank');
-- FND_MESSAGE.SET_STRING('O');
-- FND_MESSAGE.HINT;
END;
相关阅读:
- Oracle ERP系统工具栏上ZOOM按钮的开发 (OracleERPR12, 2008-2-15)
- Oracle EBS标准错误信息如何追踪 (Debug) (OracleERPR12, 2008-2-15)
- Oracle EBS 打印机(Printer)的格式设置 (OracleERPR12, 2008-2-15)
- XML报表中,行信息超过一页后,头信息在第二页继续显示。 (OracleERPR12, 2008-2-15)
导入论坛 引用链接 收藏 分享给好友 推荐到圈子 管理 举报
