interface批量导入库存现有量

来源:互联网 发布:英文小说 知乎 编辑:程序博客网 时间:2024/05/18 00:14

对于一些期初库存需要导入系统,或者盘点的时候需要对盘盈的库存进行导入等情况会批量导入库存,

与之前批量导出库存一样,用interface,不同点在于导出数量是负的,导入数量是正的

以下code只考虑到物料批次管控,有序列管控,版本管控,储位管控的以下代码需要修改方可使用:

create or replace procedure jw_import_onhand_proc as  cursor c_item is  select organization_id         ,new_item         ,sub_code         ,lot_number         ,quantity         ,account1         ,transaction_date         ,description1         ,flag         ,rowid    from JW_IMPORT_ITEM_20150611   where flag is null;   R_J EXCEPTION;   v_num number;   v_num1 number;   v_num2 number;   v_lot_flag varchar2(1);   v_item_id number;   v_mtl_transactions_inter    mtl_transactions_interface%rowtype;   v_mtl_transaction_lot_inter mtl_transaction_lots_interface%rowtype;begin  null;  --防呆  for v_item in c_item loop  begin    select count(*)      into v_num      from mtl_parameters mp     where mp.organization_id =  v_item.organization_id;    if v_num = 0 then      raise R_J;    end if;    select count(*)      into v_num1      from mtl_system_items_b msib      where msib.organization_id = v_item.organization_id        and msib.segment1 = TRIM(v_item.new_item)        and msib.inventory_item_status_code <> 'Inactive';    if v_num1 = 0 then      raise R_J;    end if;    select count(*)      into v_num2      from mtl_secondary_inventories msi      where msi.organization_id = v_item.organization_id        and msi.secondary_inventory_name = TRIM(v_item.sub_code)        and msi.disable_date is null;    if v_num2 = 0 then      raise R_J;    end if;    select msib.lot_control_code,msib.inventory_item_id      into v_lot_flag,v_item_id      from mtl_system_items_b msib     where msib.organization_id = v_item.organization_id       and msib.segment1 = TRIM(v_item.new_item)       and msib.inventory_item_status_code <> 'Inactive';    if (v_lot_flag = 2) and v_item.lot_number is null then      raise R_J;    end if;    select fnd_flex_ext.get_ccid(application_short_name => 'SQLGL',                                     key_flex_code          => 'GL#',                                     structure_number       => '50348',                                     validation_date        => to_char(SYSDATE,                                                                       'YYYY-MM-DD'),                                     concatenated_segments  => TRIM(v_item.account1))                                     into v_mtl_transactions_inter.DISTRIBUTION_ACCOUNT_ID                                     from dual;    SELECT mtl_material_transactions_s.nextval      INTO v_mtl_transactions_inter.transaction_interface_id      FROM dual;    v_mtl_transactions_inter.transaction_mode := '3'; --3    v_mtl_transactions_inter.process_flag := '1'; --1    v_mtl_transactions_inter.transaction_type_id := 42; --1   40  --  v_mtl_transactions_inter.DISTRIBUTION_ACCOUNT_ID := , --1034       --zw:6381    v_mtl_transactions_inter.organization_id := v_item.organization_id; -- 86 102           --85    v_mtl_transactions_inter.inventory_item_id := v_item_id; --3501    v_mtl_transactions_inter.subinventory_code := TRIM(v_item.sub_code); --QXCPLPC    22102    --v_mtl_transactions_inter.LOC_SEGMENT1, --BA1R12    v_mtl_transactions_inter.transaction_quantity := ABS(v_item.quantity); --入是正,出是负    v_mtl_transactions_inter.transaction_uom := 'PCS'; --PCS    v_mtl_transactions_inter.transaction_date := v_item.transaction_date; --DATE    v_mtl_transactions_inter.source_code := '11'; --MANUAL_INSERT    v_mtl_transactions_inter.source_header_id := '11'; --11    v_mtl_transactions_inter.source_line_id := '11'; --11    v_mtl_transactions_inter.transaction_reference := v_item.description1;    v_mtl_transactions_inter.LAST_UPDATE_LOGIN := null;    v_mtl_transactions_inter.LAST_UPDATE_DATE := sysdate;    v_mtl_transactions_inter.LAST_UPDATED_BY := 1111;    v_mtl_transactions_inter.CREATION_DATE := sysdate;    v_mtl_transactions_inter.CREATED_BY := 1111;    v_mtl_transactions_inter.LAST_UPDATE_LOGIN := null;    insert into mtl_transactions_interface values v_mtl_transactions_inter;    if v_lot_flag = 2 then       v_mtl_transaction_lot_inter.transaction_interface_id := v_mtl_transactions_inter.transaction_interface_id;       v_mtl_transaction_lot_inter.source_code := '11';       v_mtl_transaction_lot_inter.source_line_id := 11;       v_mtl_transaction_lot_inter.last_update_date := sysdate;       v_mtl_transaction_lot_inter.last_updated_by := 1111;       v_mtl_transaction_lot_inter.creation_date := sysdate;       v_mtl_transaction_lot_inter.created_by := 1111;       v_mtl_transaction_lot_inter.last_update_login := null;       v_mtl_transaction_lot_inter.lot_number := TRIM(v_item.lot_number);       v_mtl_transaction_lot_inter.transaction_quantity := ABS(v_item.quantity);       v_mtl_transaction_lot_inter.primary_quantity := ABS(v_item.quantity);       v_mtl_transaction_lot_inter.process_flag := '1';       insert into mtl_transaction_lots_interface values v_mtl_transaction_lot_inter;    end if;    update JW_IMPORT_ITEM_20150611 j       set j.flag = 'Y'     where j.rowid = v_item.rowid;    commit;    NULL;  exception     when R_J then       ROLLBACK;       update JW_IMPORT_ITEM_20150611 j          set j.flag = 'E'        where j.rowid = v_item.rowid;        COMMIT;        null;  end ;  end loop;end;


 

0 0
原创粉丝点击