Пример SQL запроса для склонения слова «ошибка» для вывода количества ошибок: «Найдена 1 ошибка»; «Найдено 3 ошибки»; «Найдено 5 ошибок» :
select
val
,case when mod(val,10) between 2 and 4 then 'Найдено '||val||' ошибки'
when val between 11 and 14 or mod(val,10) between 5 and 9
or mod(val,10) = 0 then 'Найдено '||val||' ошибок'
when mod(val,10) = 1 then 'Найдена '||val||' ошибка'
end str
from ( select level val from dual connect by level<=25 )
VAL STR
---------- -------------------------------------------------------
1 Найдена 1 ошибка
2 Найдено 2 ошибки
3 Найдено 3 ошибки
4 Найдено 4 ошибки
5 Найдено 5 ошибок
6 Найдено 6 ошибок
7 Найдено 7 ошибок
8 Найдено 8 ошибок
9 Найдено 9 ошибок
10 Найдено 10 ошибок
11 Найдено 11 ошибок
12 Найдено 12 ошибки
13 Найдено 13 ошибки
14 Найдено 14 ошибки
15 Найдено 15 ошибок
16 Найдено 16 ошибок
17 Найдено 17 ошибок
18 Найдено 18 ошибок
19 Найдено 19 ошибок
20 Найдено 20 ошибок
21 Найдена 21 ошибка
22 Найдено 22 ошибки
23 Найдено 23 ошибки
24 Найдено 24 ошибки
25 Найдено 25 ошибок
25 rows selected
Пример использования API для получения текущего или доступного для резервирования количества для позиции:
declare
p_organization_id NUMBER := 155;
p_inventory_item_id NUMBER := 546;
--
p_revision VARCHAR2(3);
p_lot_number VARCHAR2(80);
p_subinventory_code VARCHAR2(10) := 'VAlVALVAL';
p_locator_id NUMBER;
--
lx_qoh NUMBER; -- Total Quantity (Onhand)
lx_rqoh NUMBER;
lx_qr NUMBER;
lx_qs NUMBER;
lx_att NUMBER; -- Available to Transact
lx_atr NUMBER; -- Available to Reserve
--
lx_return_status VARCHAR2(1);
lx_msg_count NUMBER;
lx_msg_data VARCHAR2(4000);
begin
inv_quantity_tree_grp.clear_quantity_cache;
inv_quantity_tree_pub.query_quantities(
p_api_version_number => 1.0,
p_init_msg_lst => fnd_api.g_false,
x_return_status => lx_return_status,
x_msg_count => lx_msg_count,
x_msg_data => lx_msg_data,
--
p_organization_id => p_organization_id,
p_inventory_item_id => p_inventory_item_id,
p_tree_mode => apps.inv_quantity_tree_pub.g_transaction_mode,
p_is_revision_control => case when p_revision is null then FALSE else TRUE end,
p_is_lot_control => case when p_lot_number is null then FALSE else TRUE end,
p_is_serial_control => FALSE,
p_revision => p_revision,
p_lot_number => p_lot_number,
p_subinventory_code => p_subinventory_code,
p_locator_id => p_locator_id,
x_qoh => lx_qoh, -- OnHand Quantity
x_rqoh => lx_rqoh,
x_qr => lx_qr,
x_qs => lx_qs,
x_att => lx_att, -- Available To Transact
x_atr => lx_atr -- Available To Reserve
);
if lx_return_status ='S' then
DBMS_OUTPUT.put_line ('Общее количество: ' || lx_qoh);
DBMS_OUTPUT.put_line ('Доступно для резервирования: ' || lx_atr);
DBMS_OUTPUT.put_line ('Доступно для транзакции: ' || lx_att);
else
fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
p_count => lx_msg_count,
p_data => lx_msg_data);
dbms_output.put_line('ERROR for p_inventory_item_id='||p_inventory_item_id);
if lx_msg_count = 1 then
dbms_output.put_line(lx_msg_data);
else
FOR i IN 1 .. lx_msg_count LOOP
dbms_output.put_line(fnd_msg_pub.get(fnd_msg_pub.g_next,
fnd_api.g_false));
END LOOP;
end if;
end if;
end;
Так же есть запрос для просмотра текущего количества Модуль INV – Текущее количество для позиции
Categories: API, OEBS Tags: API, INV, inv_quantity_tree_pub, inventory, inventory_item_id, OEBS, onhand, query_quantities, доступно для резервирования, доступное, количество, текущее количество
Пакет inv_convert
FUNCTION inv_um_convert(p_item_id IN NUMBER,
p_from_uom_code IN VARCHAR2,
p_to_uom_code IN VARCHAR2) RETURN NUMBER;
Пример:
select msi.segment1,
msi.primary_uom_code,
'кг' as second_uom,
inv_convert.inv_um_convert(msi.inventory_item_id,'кг',
msi.primary_uom_code) as coefficient
from mtl_system_items_b msi
where msi.primary_uom_code = 'т'
and rownum <= 10
Последние комментарии