procedure proc_csv_output is
w_output_string long;
v_inv varchar2_varray;
w_title varchar2(10000);
inv_name varchar2(4000);
lv_desc1 varchar2(240);
lv_desc2 varchar2(240);
lv_class_code wip_discrete_jobs.class_code%type;
v_inv_names varchar2(4000);
v_isactive varchar2(1);
l_str varchar2(30);
begin
w_title := 'WO_Number,Class Code,EMS ,Item No,Description,OP,PrimaryItem,Description'
||',Subs Flag,ParentItem,Required,Issued,OpenQty,EMS_Onhand,WO_Shortage,Subs Qty,';
v_inv_names := '';
if inv_names.count > 0 then
for ix in 1 .. inv_names.count loop
if (inv_names(ix) is null or inv_names(ix) = '') then exit; end if;
v_inv_names := v_inv_names || inv_names(ix) || ',';
end loop;
end if;
dbms_output.put_line('g_csv_output.COUNT='||g_csv_output.count);
fnd_file.put_line(fnd_file.log,g_csv_output.count);
w_title := w_title || v_inv_names || 'PackMtl.PO';
dbms_output.put_line('w_title='||w_title);
fnd_file.put_line(2, w_title);
v_isactive := 'Y';
for i in 1 .. g_csv_output.count loop
if g_csv_output(i).isactive is not null then
v_isactive := g_csv_output(i).isactive;
end if;
if g_item is not null and g_item != '%' then
l_str := g_item||'%';
if g_csv_output(i).item_no not like l_str then
goto xx_next_record;
end if;
end if;
if (g_csv_output(i).job_no is not null and v_isactive='Y') then
w_output_string :=
g_csv_output(i).job_no || ',' ||
g_csv_output(i).lv_class_code || ',' ||
g_csv_output(i).ems_name || ',' ||
g_csv_output(i).item_no || ',"' ||
g_csv_output(i).lv_desc1 || '",' ||
g_csv_output(i).op || ',' ||
g_csv_output(i).primary_item || ',"' ||
g_csv_output(i).lv_desc2 || '",' ||
g_csv_output(i).replace_falg || ',' ||
g_csv_output(i).parent_item || ',' ||
g_csv_output(i).required_quantity || ',' ||
g_csv_output(i).issued_quantity || ',' ||
g_csv_output(i).open_quantity || ',' ||
g_csv_output(i).on_hand_quantity || ',' ||
g_csv_output(i).need_quantity || ',';
v_inv := varchar2_varray(); --create empty varray
v_inv.extend(25);
v_inv := g_csv_output(i).inv;
v_inv_names := '';
if inv_names.count > 0 then
for ix in 1 .. inv_names.count loop
if (inv_names(ix) is null or inv_names(ix) = '') then exit;
end if;
v_inv_names := v_inv_names || nvl(v_inv(ix),' ') || ',';
end loop;
end if;
w_output_string := w_output_string || ',' || v_inv_names;
fnd_file.put_line(2, w_output_string);
end if;
<
null;
end loop; -- FOR i IN 1 .. g_csv_output.COUNT LOOP
<
null;
exception
when e_program_err then
raise e_program_err;
when others then
raise;
end proc_csv_output;
type inv_array is table of varchar2(50) index by binary_integer;
inv_names varchar2_varray;
type tbl_csv_output is table of grec_csv_output index by binary_integer;
g_csv_output tbl_csv_output;
type grec_csv_output is record(
job_no varchar2(200),
lv_class_code varchar2(200),
ems_name varchar2(200),
item_no varchar2(200),
lv_desc1 varchar2(200),
op number,
replace_falg varchar2(1),
parent_item varchar2(200),
primary_item varchar2(200),
lv_desc2 varchar2(200),
required_quantity varchar2(200),
issued_quantity varchar2(200),
open_quantity varchar2(200),
on_hand_quantity varchar2(200),
need_quantity varchar2(200),
replace_quantity varchar2(200),
-- inv NUMBER_VARRAY25,
inv varchar2_varray,
po varchar2(200),
isactive varchar2(1));
CREATE SYNONYM varchar2_varray
FOR VARCHAR2_VARRAY
/
-- Start of DDL Script for Type SYSTEM.VARCHAR2_VARRAY
-- Generated 19-Nov-2012 10:54:58 from SYSTEM@EBS_8005
CREATE OR REPLACE
TYPE varchar2_varray AS VARRAY(10000) OF VARCHAR2(240);
/
-- Grants for Type
GRANT EXECUTE ON varchar2_varray TO apps
WITH GRANT OPTION
/
GRANT DEBUG ON varchar2_varray TO apps
WITH GRANT OPTION
/

沒有留言:
張貼留言