2012年11月18日 星期日

如何將文字串 output 到 cvs

   如何將文字串 output 到 cvs
 
    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
/

沒有留言:

關於我自己

我的相片
Skype:ADempiere/Compiere MSN:albert_a_chen@yahoo.com