存储过程生成XML文件的报表
2011-10-28 16:49
253 查看
例一:
CREATE OR REPLACE PROCEDURE WST_CST_CHECK_REPORT
(ERRBUF OUT VARCHAR2,
RETCODE OUT NUMBER,
P_ORG_ID IN NUMBER,
P_SO_EXP IN VARCHAR2,
P_SO_DATE_F IN VARCHAR2,--YYYY/MM/DD
P_SO_DATE_T IN VARCHAR2,--YYYY/MM/DD
P_CST_TYPE_ID IN NUMBER,
P_ITEM_F IN VARCHAR2,
P_ITEM_T IN VARCHAR2,
P_ITEM_DATE_F IN VARCHAR2,--YYYY/MM/DD
P_ITEM_DATE_T IN VARCHAR2,--YYYY/MM/DD
P_CATEGORY_SET_ID IN NUMBER,
P_CATEGORY_STRUCTURE IN NUMBER,
P_CATEGORY_F IN VARCHAR2,
P_CATEGORY_T IN VARCHAR2)
IS
BEGIN
fnd_file.put_line(Fnd_File.OUTPUT,rpad('<?xml version="1.0" encoding="UTF-8"?>',100, ' '));
fnd_file.put_line(Fnd_File.OUTPUT,rpad('<ALLCONTENT>', 30, ' '));
fnd_file.put_line(Fnd_File.OUTPUT,
rpad('<TITLE>', 20, ' ')||
rpad('<ORG_CODE>'||ORG_CODE||'</ORG_CODE>', 100, ' ')||
rpad('<ITEM_F>'||P_ITEM_F||'</ITEM_F>', 100, ' ')||
rpad('<ITEM_T>'||P_ITEM_T||'</ITEM_T>', 100, ' ')||
rpad('<SO_EXP>'||P_SO_EXP||'</SO_EXP>', 100, ' ')||
rpad('<ITEM_DATE_F>'||P_ITEM_DATE_F||'</ITEM_DATE_F>', 100, ' ')||
rpad('<ITEM_DATE_T>'||P_ITEM_DATE_T||'</ITEM_DATE_T>', 100, ' ')||
rpad('<SO_DATE_F>'||P_SO_DATE_F||'</SO_DATE_F>', 100, ' ')||
rpad('<SO_DATE_T>'||P_SO_DATE_T||'</SO_DATE_T>', 100, ' ')||
rpad('<CATEGORY_SET>'||CATEGORY_SET||'</CATEGORY_SET>', 100, ' ')||
rpad('<CST_TYPE>'||CST_TYPE||'</CST_TYPE>', 100, ' ')||
rpad('<CATEGORY_F>'||P_CATEGORY_F||'</CATEGORY_F>', 100, ' ')||
rpad('<CATEGORY_T>'||P_CATEGORY_T||'</CATEGORY_T>', 100, ' ')||
rpad('</TITLE>', 20, ' ')
);
for k in
select msi.SEGMENT1,
msi.DESCRIPTION,
msi.PRIMARY_UOM_CODE uom,
nvl(cic.ITEM_COST,0)ITEM_COST,
mic.CATEGORY_SET_NAME CATEGORY_SET,
mic.CATEGORY_CONCAT_SEGS CATEGORYS,
decode(msi.PLANNING_MAKE_BUY_CODE,1,'Make',2,'Buy','Others')MAKE_BUY_CODE,
decode(cic.BASED_ON_ROLLUP_FLAG,1,'Yes',2,'No','Null')BASED_ON_ROLLUP,
msi.CREATION_DATE,
(select max(USER_NAME) from FND_USER where USER_ID=msi.CREATED_BY)CREATED_BY,
msi.ORGANIZATION_ID,
msi.INVENTORY_ITEM_ID,
msi.PLANNING_MAKE_BUY_CODE
from MTL_SYSTEM_ITEMS msi,
(select * from CST_ITEM_COSTS where ORGANIZATION_ID=P_ORG_ID and COST_TYPE_ID=P_CST_TYPE_ID) cic,
MTL_ITEM_CATEGORIES_V mic
where 1=1
and msi.ORGANIZATION_ID=cic.ORGANIZATION_ID(+)
and msi.ORGANIZATION_ID=mic.ORGANIZATION_ID
loop
fnd_file.put_line(Fnd_File.OUTPUT,
rpad('<H1>', 20, ' ')||
rpad('<SEGMENT1>'||k.SEGMENT1||'</SEGMENT1>', 100, ' ')||
rpad('<DESCRIPTION>'||wst_common_func_pkg.replacespecialchar(k.DESCRIPTION)||'</DESCRIPTION>', 300, ' ')||
rpad('<COST_TYPE>'||CST_TYPE||'</COST_TYPE>', 100, ' ')||
rpad('<UOM>'||k.UOM||'</UOM>', 100, ' ')||
rpad('<ITEM_COST>'||k.ITEM_COST||'</ITEM_COST>', 100, ' ')||
rpad('<CATEGORY_SET>'||k.CATEGORY_SET||'</CATEGORY_SET>', 100, ' ')||
rpad('<CATEGORYS>'||k.CATEGORYS||'</CATEGORYS>', 100, ' ')||
rpad('<MAKE_BUY_CODE>'||k.MAKE_BUY_CODE||'</MAKE_BUY_CODE>', 100, ' ')||
rpad('<BASED_ON_ROLLUP>'||k.BASED_ON_ROLLUP||'</BASED_ON_ROLLUP>', 100, ' ')||
rpad('<CREATION_DATE>'||k.CREATION_DATE||'</CREATION_DATE>', 100, ' ')||
rpad('<CREATED_BY>'||k.CREATED_BY||'</CREATED_BY>', 100, ' ')||
rpad('<BPA_FLAG>'||V_BPA_FLAG||'</BPA_FLAG>', 100, ' ')||
rpad('<PO_FLAG>'||V_PO_FLAG||'</PO_FLAG>', 100, ' ')||
rpad('<BOM_FLAG>'||V_BOM_FLAG||'</BOM_FLAG>', 100, ' ')||
rpad('<ROUT_FLAG>'||V_ROUT_FLAG||'</ROUT_FLAG>', 100, ' ')||
rpad('<MMT_FLAG>'||V_MMT_FLAG||'</MMT_FLAG>', 100, ' ')||
rpad('<JOB_FLAG>'||V_JOB_FLAG||'</JOB_FLAG>', 100, ' ')||
rpad('</H1>', 20, ' ')
);
END IF;
end loop;
fnd_file.put_line(Fnd_File.OUTPUT,rpad('</ALLCONTENT>', 30, ' '));
END;
例二:
create or replace procedure wst_pdd_vender_waste_p( ov_errbuf OUT VARCHAR2,
ov_retcode OUT VARCHAR2,
p_org_id in number,
p_vender_code_f in varchar2,
p_vender_code_t in varchar2,
p_date_year in number,
p_item_no_f in varchar2,
p_item_no_t in varchar2)
as
v_waste_rate number;
CURSOR cur_1 IS
select wps.attribute20 org_id,
wps.wip_entity_no,
pv.segment1 vender_code,
wps.item_no,
wps.wip_entity_name job_num,
sum(wps.req_qty) req_qty,
wps.item_uom,
sum(wps.issued_qty) issued_qty,
sum(wps.pick_qty) pick_qty
from wst_pick_slip_t wps,
po_lines_all pla,
po_headers_all pha,
po_vendors pv
where pla.po_header_id = pha.po_header_id
and pla.cancel_flag<>'Y'
and pha.cancel_flag<>'Y'
and pla.ATTRIBUTE4 = wps.WIP_ENTITY_NAME
and pv.VENDOR_ID = pha.VENDOR_ID
and wps.pick_type = 'SC'
and wps.ATTRIBUTE8 is null
and wps.ATTRIBUTE5='YES'
and wps.wip_entity_name like '%PDD%'
and wps.attribute20=nvl(p_org_id,wps.attribute20)
and (pv.segment1>=p_vender_code_f or p_vender_code_f is null)
and (pv.segment1<=p_vender_code_t or p_vender_code_t is null)
and (wps.wip_entity_no>=p_item_no_f or p_item_no_f is null)
and (wps.wip_entity_no<=p_item_no_t or p_item_no_t is null)
and substr(wps.wip_entity_name,6,2) =nvl(p_date_year,to_char(sysdate,'yy'))
group by wps.attribute20,
wps.wip_entity_no,
pv.segment1,
wps.item_no,
wps.wip_entity_name,
wps.item_uom
order by vender_code,wps.item_no,wps.wip_entity_name;
begin
fnd_file.put_line(fnd_file.output,
'<?xml version="1.0" encoding="UTF-8"?>');
fnd_file.put_line(fnd_file.output, '<WST_PDD_VENDER_WASTE>');
fnd_file.put_line(fnd_file.output,'<p_org_id>' || p_org_id ||'</p_org_id>');
fnd_file.put_line(fnd_file.output,'<p_vender_code_f>' || p_vender_code_f ||'</p_vender_code_f>');
fnd_file.put_line(fnd_file.output,'<p_vender_code_t>' || p_vender_code_t ||'</p_vender_code_t>');
fnd_file.put_line(fnd_file.output,'<p_date_year>' || p_date_year ||'</p_date_year>');
fnd_file.put_line(fnd_file.output,'<p_item_no_f>' || p_item_no_f ||'</p_item_no_f>');
fnd_file.put_line(fnd_file.output,'<p_item_no_t>' || p_item_no_t ||'</p_item_no_t>');
FOR V_CUR IN CUR_1 LOOP
if V_CUR.req_qty=0 then
v_waste_rate:=0;
else
v_waste_rate:=V_CUR.pick_qty/V_CUR.req_qty;
end if;
fnd_file.put_line(fnd_file.output, '<PDD_VENDER_WASTE_LINE>');
fnd_file.put_line(fnd_file.output,'<org_id>' || V_CUR.org_id ||'</org_id>');
fnd_file.put_line(fnd_file.output,'<wip_entity_no>' || V_CUR.wip_entity_no ||'</wip_entity_no>');
fnd_file.put_line(fnd_file.output,'<vender_code>' || V_CUR.vender_code ||'</vender_code>');
fnd_file.put_line(fnd_file.output,'<item_no>' || V_CUR.item_no ||'</item_no>');
fnd_file.put_line(fnd_file.output,'<job_num>' || V_CUR.job_num ||'</job_num>');
fnd_file.put_line(fnd_file.output,'<req_qty>' || V_CUR.req_qty ||'</req_qty>');
fnd_file.put_line(fnd_file.output,'<item_uom>' || V_CUR.item_uom ||'</item_uom>');
fnd_file.put_line(fnd_file.output,'<issued_qty>' || V_CUR.issued_qty ||'</issued_qty>');
fnd_file.put_line(fnd_file.output,'<pick_qty>' || V_CUR.pick_qty ||'</pick_qty>');
fnd_file.put_line(fnd_file.output,'<waste_rate>' || v_waste_rate||'</waste_rate>');
fnd_file.put_line(fnd_file.output, '</PDD_VENDER_WASTE_LINE>');
END LOOP;
fnd_file.put_line(fnd_file.output, '</WST_PDD_VENDER_WASTE>');
end;
CREATE OR REPLACE PROCEDURE WST_CST_CHECK_REPORT
(ERRBUF OUT VARCHAR2,
RETCODE OUT NUMBER,
P_ORG_ID IN NUMBER,
P_SO_EXP IN VARCHAR2,
P_SO_DATE_F IN VARCHAR2,--YYYY/MM/DD
P_SO_DATE_T IN VARCHAR2,--YYYY/MM/DD
P_CST_TYPE_ID IN NUMBER,
P_ITEM_F IN VARCHAR2,
P_ITEM_T IN VARCHAR2,
P_ITEM_DATE_F IN VARCHAR2,--YYYY/MM/DD
P_ITEM_DATE_T IN VARCHAR2,--YYYY/MM/DD
P_CATEGORY_SET_ID IN NUMBER,
P_CATEGORY_STRUCTURE IN NUMBER,
P_CATEGORY_F IN VARCHAR2,
P_CATEGORY_T IN VARCHAR2)
IS
BEGIN
fnd_file.put_line(Fnd_File.OUTPUT,rpad('<?xml version="1.0" encoding="UTF-8"?>',100, ' '));
fnd_file.put_line(Fnd_File.OUTPUT,rpad('<ALLCONTENT>', 30, ' '));
fnd_file.put_line(Fnd_File.OUTPUT,
rpad('<TITLE>', 20, ' ')||
rpad('<ORG_CODE>'||ORG_CODE||'</ORG_CODE>', 100, ' ')||
rpad('<ITEM_F>'||P_ITEM_F||'</ITEM_F>', 100, ' ')||
rpad('<ITEM_T>'||P_ITEM_T||'</ITEM_T>', 100, ' ')||
rpad('<SO_EXP>'||P_SO_EXP||'</SO_EXP>', 100, ' ')||
rpad('<ITEM_DATE_F>'||P_ITEM_DATE_F||'</ITEM_DATE_F>', 100, ' ')||
rpad('<ITEM_DATE_T>'||P_ITEM_DATE_T||'</ITEM_DATE_T>', 100, ' ')||
rpad('<SO_DATE_F>'||P_SO_DATE_F||'</SO_DATE_F>', 100, ' ')||
rpad('<SO_DATE_T>'||P_SO_DATE_T||'</SO_DATE_T>', 100, ' ')||
rpad('<CATEGORY_SET>'||CATEGORY_SET||'</CATEGORY_SET>', 100, ' ')||
rpad('<CST_TYPE>'||CST_TYPE||'</CST_TYPE>', 100, ' ')||
rpad('<CATEGORY_F>'||P_CATEGORY_F||'</CATEGORY_F>', 100, ' ')||
rpad('<CATEGORY_T>'||P_CATEGORY_T||'</CATEGORY_T>', 100, ' ')||
rpad('</TITLE>', 20, ' ')
);
for k in
select msi.SEGMENT1,
msi.DESCRIPTION,
msi.PRIMARY_UOM_CODE uom,
nvl(cic.ITEM_COST,0)ITEM_COST,
mic.CATEGORY_SET_NAME CATEGORY_SET,
mic.CATEGORY_CONCAT_SEGS CATEGORYS,
decode(msi.PLANNING_MAKE_BUY_CODE,1,'Make',2,'Buy','Others')MAKE_BUY_CODE,
decode(cic.BASED_ON_ROLLUP_FLAG,1,'Yes',2,'No','Null')BASED_ON_ROLLUP,
msi.CREATION_DATE,
(select max(USER_NAME) from FND_USER where USER_ID=msi.CREATED_BY)CREATED_BY,
msi.ORGANIZATION_ID,
msi.INVENTORY_ITEM_ID,
msi.PLANNING_MAKE_BUY_CODE
from MTL_SYSTEM_ITEMS msi,
(select * from CST_ITEM_COSTS where ORGANIZATION_ID=P_ORG_ID and COST_TYPE_ID=P_CST_TYPE_ID) cic,
MTL_ITEM_CATEGORIES_V mic
where 1=1
and msi.ORGANIZATION_ID=cic.ORGANIZATION_ID(+)
and msi.ORGANIZATION_ID=mic.ORGANIZATION_ID
loop
fnd_file.put_line(Fnd_File.OUTPUT,
rpad('<H1>', 20, ' ')||
rpad('<SEGMENT1>'||k.SEGMENT1||'</SEGMENT1>', 100, ' ')||
rpad('<DESCRIPTION>'||wst_common_func_pkg.replacespecialchar(k.DESCRIPTION)||'</DESCRIPTION>', 300, ' ')||
rpad('<COST_TYPE>'||CST_TYPE||'</COST_TYPE>', 100, ' ')||
rpad('<UOM>'||k.UOM||'</UOM>', 100, ' ')||
rpad('<ITEM_COST>'||k.ITEM_COST||'</ITEM_COST>', 100, ' ')||
rpad('<CATEGORY_SET>'||k.CATEGORY_SET||'</CATEGORY_SET>', 100, ' ')||
rpad('<CATEGORYS>'||k.CATEGORYS||'</CATEGORYS>', 100, ' ')||
rpad('<MAKE_BUY_CODE>'||k.MAKE_BUY_CODE||'</MAKE_BUY_CODE>', 100, ' ')||
rpad('<BASED_ON_ROLLUP>'||k.BASED_ON_ROLLUP||'</BASED_ON_ROLLUP>', 100, ' ')||
rpad('<CREATION_DATE>'||k.CREATION_DATE||'</CREATION_DATE>', 100, ' ')||
rpad('<CREATED_BY>'||k.CREATED_BY||'</CREATED_BY>', 100, ' ')||
rpad('<BPA_FLAG>'||V_BPA_FLAG||'</BPA_FLAG>', 100, ' ')||
rpad('<PO_FLAG>'||V_PO_FLAG||'</PO_FLAG>', 100, ' ')||
rpad('<BOM_FLAG>'||V_BOM_FLAG||'</BOM_FLAG>', 100, ' ')||
rpad('<ROUT_FLAG>'||V_ROUT_FLAG||'</ROUT_FLAG>', 100, ' ')||
rpad('<MMT_FLAG>'||V_MMT_FLAG||'</MMT_FLAG>', 100, ' ')||
rpad('<JOB_FLAG>'||V_JOB_FLAG||'</JOB_FLAG>', 100, ' ')||
rpad('</H1>', 20, ' ')
);
END IF;
end loop;
fnd_file.put_line(Fnd_File.OUTPUT,rpad('</ALLCONTENT>', 30, ' '));
END;
例二:
create or replace procedure wst_pdd_vender_waste_p( ov_errbuf OUT VARCHAR2,
ov_retcode OUT VARCHAR2,
p_org_id in number,
p_vender_code_f in varchar2,
p_vender_code_t in varchar2,
p_date_year in number,
p_item_no_f in varchar2,
p_item_no_t in varchar2)
as
v_waste_rate number;
CURSOR cur_1 IS
select wps.attribute20 org_id,
wps.wip_entity_no,
pv.segment1 vender_code,
wps.item_no,
wps.wip_entity_name job_num,
sum(wps.req_qty) req_qty,
wps.item_uom,
sum(wps.issued_qty) issued_qty,
sum(wps.pick_qty) pick_qty
from wst_pick_slip_t wps,
po_lines_all pla,
po_headers_all pha,
po_vendors pv
where pla.po_header_id = pha.po_header_id
and pla.cancel_flag<>'Y'
and pha.cancel_flag<>'Y'
and pla.ATTRIBUTE4 = wps.WIP_ENTITY_NAME
and pv.VENDOR_ID = pha.VENDOR_ID
and wps.pick_type = 'SC'
and wps.ATTRIBUTE8 is null
and wps.ATTRIBUTE5='YES'
and wps.wip_entity_name like '%PDD%'
and wps.attribute20=nvl(p_org_id,wps.attribute20)
and (pv.segment1>=p_vender_code_f or p_vender_code_f is null)
and (pv.segment1<=p_vender_code_t or p_vender_code_t is null)
and (wps.wip_entity_no>=p_item_no_f or p_item_no_f is null)
and (wps.wip_entity_no<=p_item_no_t or p_item_no_t is null)
and substr(wps.wip_entity_name,6,2) =nvl(p_date_year,to_char(sysdate,'yy'))
group by wps.attribute20,
wps.wip_entity_no,
pv.segment1,
wps.item_no,
wps.wip_entity_name,
wps.item_uom
order by vender_code,wps.item_no,wps.wip_entity_name;
begin
fnd_file.put_line(fnd_file.output,
'<?xml version="1.0" encoding="UTF-8"?>');
fnd_file.put_line(fnd_file.output, '<WST_PDD_VENDER_WASTE>');
fnd_file.put_line(fnd_file.output,'<p_org_id>' || p_org_id ||'</p_org_id>');
fnd_file.put_line(fnd_file.output,'<p_vender_code_f>' || p_vender_code_f ||'</p_vender_code_f>');
fnd_file.put_line(fnd_file.output,'<p_vender_code_t>' || p_vender_code_t ||'</p_vender_code_t>');
fnd_file.put_line(fnd_file.output,'<p_date_year>' || p_date_year ||'</p_date_year>');
fnd_file.put_line(fnd_file.output,'<p_item_no_f>' || p_item_no_f ||'</p_item_no_f>');
fnd_file.put_line(fnd_file.output,'<p_item_no_t>' || p_item_no_t ||'</p_item_no_t>');
FOR V_CUR IN CUR_1 LOOP
if V_CUR.req_qty=0 then
v_waste_rate:=0;
else
v_waste_rate:=V_CUR.pick_qty/V_CUR.req_qty;
end if;
fnd_file.put_line(fnd_file.output, '<PDD_VENDER_WASTE_LINE>');
fnd_file.put_line(fnd_file.output,'<org_id>' || V_CUR.org_id ||'</org_id>');
fnd_file.put_line(fnd_file.output,'<wip_entity_no>' || V_CUR.wip_entity_no ||'</wip_entity_no>');
fnd_file.put_line(fnd_file.output,'<vender_code>' || V_CUR.vender_code ||'</vender_code>');
fnd_file.put_line(fnd_file.output,'<item_no>' || V_CUR.item_no ||'</item_no>');
fnd_file.put_line(fnd_file.output,'<job_num>' || V_CUR.job_num ||'</job_num>');
fnd_file.put_line(fnd_file.output,'<req_qty>' || V_CUR.req_qty ||'</req_qty>');
fnd_file.put_line(fnd_file.output,'<item_uom>' || V_CUR.item_uom ||'</item_uom>');
fnd_file.put_line(fnd_file.output,'<issued_qty>' || V_CUR.issued_qty ||'</issued_qty>');
fnd_file.put_line(fnd_file.output,'<pick_qty>' || V_CUR.pick_qty ||'</pick_qty>');
fnd_file.put_line(fnd_file.output,'<waste_rate>' || v_waste_rate||'</waste_rate>');
fnd_file.put_line(fnd_file.output, '</PDD_VENDER_WASTE_LINE>');
END LOOP;
fnd_file.put_line(fnd_file.output, '</WST_PDD_VENDER_WASTE>');
end;
相关文章推荐
- Oracle学习 第29天 存储过程生成报表
- SQL 中使用系统存储过程生成xml文件的试例
- PROCEDURE_监测系统_原始数据报表数据生成存储过程—求每天平均值插入多表视图
- 【代码生成】生成数据库下某个存储过程的访问代码
- 报表查询之存储过程细节要点
- 将表数据生成SQL脚本的存储过程
- 生成表中数据的sql语法的存储过程
- 将表里的数据批量生成INSERT语句的存储过程 增强版
- 生成数据库结构设计说明书的存储过程
- 一个生成订单流水号的存储过程
- 报表SQL存储过程开发的十条军规
- SQL Server 存储过程生成insert语句
- MySQL周分区 生成周分区辅助存储过程
- 自动生成对表进行插入和更新的存储过程的存储过程
- T-SQL 存储过程: (修订版) 根据基本表结构及其数据生成 INSERT INTO ... 的 SQL
- 报表参数多个值的接收及存储过程解析
- haartraining生成.xml文件过程
- haartraining生成.xml文件过程
- ORM存储过程和实体类代码生成工具
- 使用sql server CLR项目生成的存储过程不返回值问题