在INV模块,用户查看物料数量最多的三个栏位
是现用量,可保留量,可处理量。下面的procedure是汉得技术顾问在公司上线时候提供的。
IF (l_return_status = 'S') THEN
x_onhand_qty := l_qoh;
x_reservable_qty := l_atr;
ELSE
l_return_status :='F';
RETURN ;
END IF ;
inv_quantity_tree_pub.query_quantities
( p_api_version_number => 1.0
, p_init_msg_lst => 'F'
, x_return_status => l_return_status
, x_msg_count => l_msg_count
, x_msg_data => l_msg_data
, p_organization_id => p_organization_id
, p_inventory_item_id => p_inventory_item_id
, p_tree_mode => 2
, p_is_revision_control => FALSE -- No Revision Control
, p_is_lot_control => l_is_lot_control
, p_is_serial_control => l_is_serial_control
, p_demand_source_type_id => 2
, p_revision => NULL
, p_lot_number => p_lot_number
, p_lot_expiration_date => sysdate
, p_subinventory_code => p_subinventory_code
, p_locator_id => p_locator_id
, p_onhand_source => 3
, x_qoh => l_qoh
, x_rqoh => l_rqoh
, x_qr => l_qr
, x_qs => l_qs
, x_att => l_att
, x_atr => l_atr
, p_lpn_id => NULL);
CREATE OR REPLACE PROCEDURE get_inv_quantity(p_organization_id IN NUMBER
, p_inventory_item_id IN NUMBER
, p_lot_number IN VARCHAR2
, p_subinventory_code IN VARCHAR2
, p_locator_id IN NUMBER
, x_onhand_qty OUT NUMBER
, x_reservable_qty OUT NUMBER
, x_transactable_qty OUT NUMBER) IS
l_return_status VARCHAR2(1) ;
l_msg_count NUMBER;
l_msg_data VARCHAR2(2000);
l_is_revision_control BOOLEAN := TRUE ;
l_is_lot_control BOOLEAN := TRUE ;
l_is_serial_control BOOLEAN := FALSE ;
p_revision VARCHAR2(100);
l_msg_count NUMBER;
l_msg_data VARCHAR2(2000);
l_is_revision_control BOOLEAN := TRUE ;
l_is_lot_control BOOLEAN := TRUE ;
l_is_serial_control BOOLEAN := FALSE ;
p_revision VARCHAR2(100);
l_qoh NUMBER;
l_rqoh NUMBER;
l_qr NUMBER;
l_qs NUMBER;
l_att NUMBER;
l_atr NUMBER;
p_lpn_id NUMBER;
l_rqoh NUMBER;
l_qr NUMBER;
l_qs NUMBER;
l_att NUMBER;
l_atr NUMBER;
p_lpn_id NUMBER;
BEGIN
IF p_lot_number IS NULL THEN
l_is_lot_control := FALSE ;
END IF;
l_is_lot_control := FALSE ;
END IF;
IF p_locator_id IS NULL THEN
l_is_lot_control := FALSE ;
END IF;
l_is_lot_control := FALSE ;
END IF;
inv_quantity_tree_pub.query_quantities
( p_api_version_number => 1.0
, p_init_msg_lst => 'F'
, x_return_status => l_return_status
, x_msg_count => l_msg_count
, x_msg_data => l_msg_data
, p_organization_id => p_organization_id
, p_inventory_item_id => p_inventory_item_id
, p_tree_mode => 1
, p_is_revision_control => FALSE -- No Revision Control
, p_is_lot_control => l_is_lot_control
, p_is_serial_control => l_is_serial_control
, p_demand_source_type_id => 2
, p_revision => NULL
, p_lot_number => p_lot_number
, p_lot_expiration_date => sysdate
, p_subinventory_code => p_subinventory_code
, p_locator_id => p_locator_id
, p_onhand_source => 3
, x_qoh => l_qoh
, x_rqoh => l_rqoh
, x_qr => l_qr
, x_qs => l_qs
, x_att => l_att
, x_atr => l_atr
, p_lpn_id => NULL);
( p_api_version_number => 1.0
, p_init_msg_lst => 'F'
, x_return_status => l_return_status
, x_msg_count => l_msg_count
, x_msg_data => l_msg_data
, p_organization_id => p_organization_id
, p_inventory_item_id => p_inventory_item_id
, p_tree_mode => 1
, p_is_revision_control => FALSE -- No Revision Control
, p_is_lot_control => l_is_lot_control
, p_is_serial_control => l_is_serial_control
, p_demand_source_type_id => 2
, p_revision => NULL
, p_lot_number => p_lot_number
, p_lot_expiration_date => sysdate
, p_subinventory_code => p_subinventory_code
, p_locator_id => p_locator_id
, p_onhand_source => 3
, x_qoh => l_qoh
, x_rqoh => l_rqoh
, x_qr => l_qr
, x_qs => l_qs
, x_att => l_att
, x_atr => l_atr
, p_lpn_id => NULL);
IF (l_return_status = 'S') THEN
x_onhand_qty := l_qoh;
x_reservable_qty := l_atr;
ELSE
l_return_status :='F';
RETURN ;
END IF ;
inv_quantity_tree_pub.query_quantities
( p_api_version_number => 1.0
, p_init_msg_lst => 'F'
, x_return_status => l_return_status
, x_msg_count => l_msg_count
, x_msg_data => l_msg_data
, p_organization_id => p_organization_id
, p_inventory_item_id => p_inventory_item_id
, p_tree_mode => 2
, p_is_revision_control => FALSE -- No Revision Control
, p_is_lot_control => l_is_lot_control
, p_is_serial_control => l_is_serial_control
, p_demand_source_type_id => 2
, p_revision => NULL
, p_lot_number => p_lot_number
, p_lot_expiration_date => sysdate
, p_subinventory_code => p_subinventory_code
, p_locator_id => p_locator_id
, p_onhand_source => 3
, x_qoh => l_qoh
, x_rqoh => l_rqoh
, x_qr => l_qr
, x_qs => l_qs
, x_att => l_att
, x_atr => l_atr
, p_lpn_id => NULL);
IF (l_return_status = 'S') THEN
x_onhand_qty := l_qoh;
x_transactable_qty := l_att;
ELSE
l_return_status :='F';
RETURN;
END IF ;
x_onhand_qty := l_qoh;
x_transactable_qty := l_att;
ELSE
l_return_status :='F';
RETURN;
END IF ;
END get_inv_quantity ;
create or replace function get_reservable_qty(p_organization_id number,p_inventory_item_id number,p_sub varchar2) return number is
l_onhand_qty number;
l_reservable_qty number;
l_transactable_qty number;
begin
--p_sub可以为空,为空时,所有库别的可保留数量
get_inv_quantity(p_organization_id => p_organization_id,
p_inventory_item_id => p_inventory_item_id,
p_lot_number => null,
p_subinventory_code => p_sub,
p_locator_id => null,
x_onhand_qty => l_onhand_qty,
x_reservable_qty => l_reservable_qty,
x_transactable_qty => l_transactable_qty);
return l_reservable_qty;
end get_reservable_qty;
l_onhand_qty number;
l_reservable_qty number;
l_transactable_qty number;
begin
--p_sub可以为空,为空时,所有库别的可保留数量
get_inv_quantity(p_organization_id => p_organization_id,
p_inventory_item_id => p_inventory_item_id,
p_lot_number => null,
p_subinventory_code => p_sub,
p_locator_id => null,
x_onhand_qty => l_onhand_qty,
x_reservable_qty => l_reservable_qty,
x_transactable_qty => l_transactable_qty);
return l_reservable_qty;
end get_reservable_qty;