DECLARE
L_QTY_REC GMIGAPI.qty_rec_typ;
L_ic_jrnl_mst_row ic_jrnl_mst%ROWTYPE;
L_ic_adjs_jnl_row1 ic_adjs_jnl%ROWTYPE;
L_ic_adjs_jnl_row2 ic_adjs_jnl%ROWTYPE;
L_return_status VARCHAR2(10);
L_msg_count NUMBER;
L_msg_data VARCHAR2(1000);
l_dummy_cnt NUMBER := 0;
l_loop_cnt NUMBER := 0;
BEGIN
--set serveroutput on size 20000;
dbms_output.enable(20000);
dbms_application_info.set_client_info(122);
--fnd_global.APPS_INITIALIZE(1115, 1, 1);--不能执行该语句,否则提示错误,
L_QTY_REC.trans_type := 4;
L_QTY_REC.orgn_code := 'Z999';
L_QTY_REC.reason_code := 'PCZT';
L_QTY_REC.item_no := '2101001001';
L_QTY_REC.lot_no := '2008110402';
L_QTY_REC.from_whse_code := 'ZZC';
L_QTY_REC.from_location := 'A';
L_QTY_REC.lot_status := 'HG';
L_QTY_REC.trans_qty := 2;
L_QTY_REC.co_code := 'CO';
L_QTY_REC.item_um := '箱';
--L_QTY_REC.trans_date := SYSDATE;
if gmigutl.Setup('APP_USER') then
GMIPAPI.Inventory_Posting(p_api_version => apps.GMIGUTL.API_VERSION, --1.0,
p_init_msg_list => FND_API.G_FALSE,
p_commit => FND_API.G_TRUE,
p_validation_level => FND_API.G_VALID_LEVEL_FULL,
p_qty_rec => L_QTY_REC,
x_ic_jrnl_mst_row => L_ic_jrnl_mst_row,
x_ic_adjs_jnl_row1 => L_ic_adjs_jnl_row1,
x_ic_adjs_jnl_row2 => L_ic_adjs_jnl_row2,
x_return_status => L_return_status,
x_msg_count => L_msg_count,
x_msg_data => L_msg_data);
if L_msg_count > 0 then
l_loop_cnt := 1;
loop
apps.FND_MSG_PUB.Get(p_msg_index => l_loop_cnt,
p_data => L_msg_data,
p_encoded => apps.FND_API.G_FALSE,
p_msg_index_out => l_dummy_cnt);
DBMS_OUTPUT.PUT_LINE(L_msg_data);
l_loop_cnt := l_loop_cnt + 1;
if l_loop_cnt > L_msg_count then
exit;
end if;
end loop;
end if;
IF L_return_status = 'S' THEN
DBMS_OUTPUT.put_line('SUCCESS');
DBMS_OUTPUT.PUT_LINE('message is: ' || l_msg_data);
DBMS_OUTPUT.PUT_LINE('message index is: ' || l_msg_count);
COMMIT;
ELSIF L_return_status = 'E' THEN
DBMS_OUTPUT.put_line('ERROR');
DBMS_OUTPUT.PUT_LINE('message is: ' || l_msg_data);
DBMS_OUTPUT.PUT_LINE('message index is: ' || l_msg_count);
rollback;
ELSIF L_return_status = 'U' THEN
DBMS_OUTPUT.put_line('UNEXPECT');
DBMS_OUTPUT.PUT_LINE('message is: ' || l_msg_data);
DBMS_OUTPUT.PUT_LINE('message index is: ' || l_msg_count);
ROLLBACK;
ELSE
DBMS_OUTPUT.put_line('AAAAA');
END IF;
ELSE
DBMS_OUTPUT.put_line('XXX');
end if;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('EXCEPTION:' || L_return_status || '-' || sqlerrm);
END;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/797362/viewspace-592578/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/797362/viewspace-592578/
本文提供了一个使用PLSQL进行Oracle库存调整的例子,通过设置不同的参数如交易类型、组织代码、原因代码等来实现库存的批量更新。该示例展示了如何通过调用特定的API完成库存调整,并捕获并显示可能发生的错误消息。

1610

被折叠的 条评论
为什么被折叠?



