API實現分批挑庫

2021-07-31 11:18:38 字數 2804 閱讀 7597

通過sql將資料根據特定的條件進行分組,並把每組的資料進行挑庫生成乙個物料搬運單。

--分批測試挑庫demo

declare

p_attribute6 varchar2(240) := null;

p_attribute10 varchar2(240) := null;

x_return_status varchar2(1);

x_msg_count number;

x_msg_data varchar2(4000);

l_delivery_detail_tab wsh_util_core.id_tab_type;

x_del_rows wsh_util_core.id_tab_type;

v_msg_index_out number;

l_action_prms wsh_glbl_var_strct_grp.dd_action_parameters_rec_type;

l_action_out_rec wsh_glbl_var_strct_grp.dd_action_out_rec_type;

i number := 0;

--獲取本次所有的提貨位址和收貨位址

cursor cur1 is

select distinct wdd.attribute6,

wdd.attribute10

from wsh_delivery_details wdd

where wdd.split_from_delivery_detail_id = 1594660

and wdd.released_status = 'r';

--根據收貨位址和提貨位址獲取id, 同時生成乙個批

cursor cur2(p_attribute6 in varchar2,

p_attribute10 in varchar2) is

select wdd.delivery_detail_id,

wdd.attribute6,

wdd.attribute10

from wsh_delivery_details wdd

where wdd.split_from_delivery_detail_id = 1594660

and wdd.released_status = 'r'

and wdd.attribute6 = p_attribute6

and wdd.attribute10 = p_attribute10;

begin

--模擬登陸

begin

resp_id => 54237,

mo_global.set_policy_context(p_access_mode => 's',

p_org_id => 662);

mo_global.init('cux');

end;

l_action_prms.phase := 1;

l_action_prms.caller := 'wsh_pub';

l_action_prms.action_code := 'pick-release';

for rec1 in cur1 loop

for rec2 in cur2(rec1.attribute6,

rec1.attribute10) loop

i := i + 1;

l_delivery_detail_tab(i) := rec2.delivery_detail_id;

dbms_output.put_line('l_delivery_detail_tab(' || i || ')' ||

l_delivery_detail_tab(i));

end loop;

fnd_msg_pub.initialize;

wsh_inte***ce_grp.delivery_detail_action(p_api_version_number => 1.0,

p_init_msg_list => fnd_api.g_false,

p_commit => fnd_api.g_false,

x_return_status => x_return_status,

x_msg_count => x_msg_count,

x_msg_data => x_msg_data,

p_detail_id_tab => l_delivery_detail_tab,

p_action_prms => l_action_prms,

x_action_out_rec => l_action_out_rec);

dbms_output.put_line(x_return_status);

if x_msg_count > 0 then

for v_index in 1 .. x_msg_count loop

fnd_msg_pub.get(p_msg_index => v_index,

p_encoded => 'f',

p_data => x_msg_data,

p_msg_index_out => v_msg_index_out);

dbms_output.put_line(x_msg_data);

end loop;

end if;

--迴圈一次之後清空資料

l_delivery_detail_tab.delete;

--重置i的值

i := 0;

end loop;

end;

OM Shipping 不能挑庫

倉庫文員反映 om shipping transaction不能挑庫,訂單沒有hold,schedule ship date 也填寫了。挑庫時執行的併發程式,其日誌沒有提示錯誤資訊。使用者操作時,看到有個note資訊,第一次她很已快就關閉了,我沒有看到內容,第二次讓她慢些操作,每個提示都要認真看。這...

php mysql實現資料分批插入

上週需要將雲端的資料有條件的錄入到mysql中,最開始是使用遍歷資料然後一條條的插入的笨方法,結果速度慢的要死,所以又隨便寫了個笨方法2.0,記錄一下自己菜鳥的成長歷程。同時這也是在的第一篇文章,目的僅僅是單純的記錄一下自己的狗屎 因為我是菜鳥,哈哈。比如說有10001條資料,每次插入1000條,分...

小技巧 分批取資料庫資料

在有些業務場景中需要分批去取資料庫表中的全部資料來進行處理,最簡單的方法就是使用分頁查詢語句 偷懶以mysql為例 select from datatable limit offset,amount 這裡就會有乙個問題,隨著offset值的越來越大,這條sql要掃瞄的表資料就會越來越多,因為要定位到...