بتاريخ: 10 أغسطس 201411 سنة comment_253502 لو سمحت انا عايز اعرف API بتعمل allocate move order ارجو المساعدة لان الموجود على النت مش شغال كويس تقديم بلاغ
بتاريخ: 8 أبريل 201511 سنة comment_261550 السلام عليكم. انا ابحث عن الموضع. هل يوجد اي نتيجة؟ تقديم بلاغ
بتاريخ: 14 أبريل 201511 سنة كاتب الموضوع comment_261738 انا لقيت api شغالة بس لازم تضيف سطر update فى الاخر غير كده مش هاتشتغل كويس declare p_line_id NUMBER ; p_transaction_header_id NUMBER ; p_transaction_mode NUMBER ; p_move_order_type NUMBER ; p_serial_flag VARCHAR2(500) ; p_plan_tasks BOOLEAN ; p_auto_pick_confirm BOOLEAN ; p_commit BOOLEAN --------out-------------- ; x_number_of_rows NUMBER ; x_detailed_qty NUMBER ; x_detailed_qty2 NUMBER ; x_return_status VARCHAR2(500) ; x_msg_count NUMBER ; x_msg_data VARCHAR2(500) ; x_revision VARCHAR2(500) ; x_locator_id NUMBER ; x_transfer_to_location NUMBER ; x_lot_number VARCHAR2(500) ; x_expiration_date DATE ; x_transaction_temp_id NUMBER; begin fnd_global.APPS_INITIALIZE(1202,50601,401); --inv_replenish_detail_pub. -- line_details_pub (p_line_id => 9935011 -- , x_number_of_rows => x_number_of_rows -- , x_detailed_qty => x_detailed_qty -- , x_return_status => x_return_status -- , x_msg_count => x_msg_count -- , x_msg_data => x_msg_data -- , x_revision => x_revision -- , x_locator_id => x_locator_id -- , x_transfer_to_location => x_transfer_to_location -- , x_lot_number => x_lot_number -- , x_expiration_date => x_expiration_date -- , x_transaction_temp_id => x_transaction_temp_id -- , p_transaction_header_id => NULL -- , p_transaction_mode => NULL -- , p_move_order_type => 1 -- , p_serial_flag => fnd_api.g_false -- , p_plan_tasks => FALSE -- , p_auto_pick_confirm => FALSE -- , p_commit => FALSE); -- commit; inv_replenish_detail_pub.line_details_pub( p_line_id => 497480 -- ,x_detailed_qty => x_detailed_qty , p_transaction_header_id =>null , p_transaction_mode =>null , p_move_order_type =>1 , p_serial_flag => fnd_api.G_FALSE , p_plan_tasks =>false , p_auto_pick_confirm =>false , p_commit =>FALSE , x_number_of_rows =>x_number_of_rows , x_detailed_qty =>x_detailed_qty , x_detailed_qty2 =>x_detailed_qty2 , x_return_status =>x_return_status , x_msg_count =>x_msg_count , x_msg_data =>x_msg_data , x_revision =>x_revision , x_locator_id =>x_locator_id , x_transfer_to_location =>x_transfer_to_location , x_lot_number =>x_lot_number , x_expiration_date =>x_expiration_date , x_transaction_temp_id =>x_transaction_temp_id ); commit; update MTL_TXN_REQUEST_lines set QUANTITY_DETAILED=23 where line_id=497480; commit; dbms_output.PUT_LINE('id '||x_transaction_temp_id); end; تقديم بلاغ
بتاريخ: 14 أبريل 201511 سنة comment_261754 السلام عليكم, متشكر قوي. انا لقيت حاجة كاملة ازا كنت عاوز. تم تعديل 14 أبريل 201511 سنة بواسطة haboos تقديم بلاغ
بتاريخ: 19 أبريل 201511 سنة كاتب الموضوع comment_261866 السلام عليكم شكرا جدا لردك ولوينفع ابعت الكود من فضلك تقديم بلاغ
بتاريخ: 22 أبريل 201511 سنة comment_261947 السلام عليكم و اسف عالاطالة. CREATE TABLE wfg_mv_ord_api ( id NUMBER(15,0), batch_id NUMBER(15,0), status VARCHAR2(2000), org_id NUMBER(15,0), user_id NUMBER(15,0), resp_id NUMBER(15,0), from_subinventory_code VARCHAR2(2000), to_subinventory_code VARCHAR2(2000), application_id NUMBER(15,0), header_id NUMBER, move_order_status VARCHAR2(200), allocate_status VARCHAR2(200), transact_status VARCHAR2(200), creation_date DATE, PRIMARY KEY (ID)); CREATE TABLE wfg_move_ord_api_dtl ( serial NUMBER, inventory_item_id NUMBER(15,0), quantity NUMBER(15,0), uom_code VARCHAR2(100), wfg_mv_ord_api_id NUMBER(15,0), header_id NUMBER(15,0), move_order_status VARCHAR2(200), allocate_status VARCHAR2(200), transact_status VARCHAR2(200), line_number NUMBER(15,0), line_id NUMBER(15,0) ) ; create or replace PROCEDURE create_move_order ( x_hdr_rec OUT inv_move_order_pub.trohdr_rec_type , x_line_tbl OUT inv_move_order_pub.trolin_tbl_type , x_return_status OUT VARCHAR2 , x_msg_data OUT VARCHAR2 , x_msg_count OUT NUMBER , p_wfg_mv_ord_api_id IN NUMBER ) IS l_hdr_rec inv_move_order_pub.trohdr_rec_type := inv_move_order_pub.g_miss_trohdr_rec; l_line_tbl inv_move_order_pub.trolin_tbl_type := inv_move_order_pub.g_miss_trolin_tbl; x_hdr_val_rec inv_move_order_pub.trohdr_val_rec_type; x_line_val_tbl inv_move_order_pub.trolin_val_tbl_type; v_msg_index_out NUMBER; l_rsr_type inv_reservation_global.mtl_reservation_tbl_type; v_line_number number:=0; BEGIN for move_order_rec in ( select ID,BATCH_ID,STATUS,ORG_ID,USER_ID,RESP_ID,FROM_SUBINVENTORY_CODE,TO_SUBINVENTORY_CODE,APPLICATION_ID from WFG_MV_ORD_API where id=p_WFG_MV_ORD_API_ID) loop v_line_number:=0; l_line_tbl.DELETE; x_line_tbl.DELETE; l_hdr_rec.date_required := SYSDATE; l_hdr_rec.header_status := inv_globals.G_TO_STATUS_INCOMPLETE; l_hdr_rec.organization_id := move_order_rec.org_id;--113;--hbs l_hdr_rec.status_date := SYSDATE; l_hdr_rec.transaction_type_id := inv_globals.g_type_transfer_order_SUBXFR; l_hdr_rec.move_order_type := inv_globals.g_move_order_requisition; l_hdr_rec.db_flag := fnd_api.g_true; l_hdr_rec.operation := inv_globals.g_opr_create; l_hdr_rec.description := 'Test Move Order 1234'; l_hdr_rec.from_subinventory_code := move_order_rec.FROM_SUBINVENTORY_CODE;--'Store';--hbs l_hdr_rec.to_subinventory_code := move_order_rec.TO_SUBINVENTORY_CODE;--'Route 201';--hbs for move_order_dtl_rec in (select rowid,SERIAL,INVENTORY_ITEM_ID,QUANTITY,UOM_CODE,WFG_MV_ORD_API_ID from WFG_MOVE_ORD_API_DTL where WFG_MV_ORD_API_ID = p_wfg_mv_ord_api_id) loop v_line_number:=v_line_number+1; l_line_tbl (v_line_number).date_required := SYSDATE; l_line_tbl (v_line_number).inventory_item_id := move_order_dtl_rec.INVENTORY_ITEM_ID;--120;--hbs l_line_tbl (v_line_number).line_id := fnd_api.g_miss_num; l_line_tbl (v_line_number).line_number := v_line_number;--hbs l_line_tbl (v_line_number).line_status := inv_globals.g_to_status_incomplete; l_line_tbl (v_line_number).transaction_type_id := inv_globals.g_type_transfer_order_SUBXFR; l_line_tbl (v_line_number).organization_id :=move_order_rec.org_id;-- 113;--hbs l_line_tbl (v_line_number).quantity := move_order_dtl_rec.QUANTITY;--1;--hbs l_line_tbl (v_line_number).status_date := SYSDATE; l_line_tbl (v_line_number).uom_code := move_order_dtl_rec.UOM_CODE;--'CRT';--hbs l_line_tbl (v_line_number).db_flag := fnd_api.g_true; l_line_tbl (v_line_number).operation := inv_globals.g_opr_create; l_line_tbl (v_line_number).from_subinventory_code := move_order_rec.FROM_SUBINVENTORY_CODE;--'Store'; l_line_tbl (v_line_number).to_subinventory_code := move_order_rec.TO_SUBINVENTORY_CODE;--'Route 201'; dbms_output.put_line(fnd_api.g_miss_num); update WFG_MOVE_ORD_API_DTL set line_number=v_line_number where rowid=move_order_dtl_rec.rowid; end loop; inv_move_order_pub.process_move_order (p_api_version_number => 1.0 , p_init_msg_list => fnd_api.g_false , p_return_values => 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_trohdr_rec => l_hdr_rec , p_trolin_tbl => l_line_tbl , x_trohdr_rec => x_hdr_rec , x_trohdr_val_rec => x_hdr_val_rec , x_trolin_tbl => x_line_tbl , x_trolin_val_tbl => x_line_val_tbl ); invtroap.start_to_approval (to_header_id => x_hdr_rec.request_number, item_type => 'INVTROAP', item_key => to_char(x_hdr_rec.request_number) ); DBMS_OUTPUT.put_line ('Return Status is :' || x_return_status); DBMS_OUTPUT.put_line ('Message Count is :' || x_msg_count); DBMS_OUTPUT.put_line ('Move Order Number is :' || x_hdr_rec.request_number); DBMS_OUTPUT.put_line ('Move Order ID is :' || x_hdr_rec.header_id); DBMS_OUTPUT.put_line ('Number of Lines Created are :' || x_line_tbl.COUNT); IF x_return_status = 'S' THEN COMMIT; ELSE ROLLBACK; END IF; 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); x_msg_data := SUBSTR (x_msg_data, 1, 200); DBMS_OUTPUT.put_line (x_msg_data); DBMS_OUTPUT.put_line ('============================================================'); END LOOP; END IF; end loop; END; create or replace PROCEDURE allocate_move_order ( p_line_tbl IN inv_move_order_pub.trolin_tbl_type , x_return_status OUT VARCHAR2 , x_msg_data OUT VARCHAR2 , x_msg_count OUT NUMBER , p_wfg_mv_ord_api_id IN NUMBER ) IS x_line_tbl inv_move_order_pub.trolin_tbl_type; l_trolin_tbl inv_move_order_pub.trolin_tbl_type; l_mold_tbl inv_mo_line_detail_util.g_mmtt_tbl_type; l_qty_detailed NUMBER; l_qty_delivered NUMBER; l_return_status VARCHAR2 (1); v_msg_index_out NUMBER; l_rsr_type inv_reservation_global.mtl_reservation_tbl_type; i INTEGER; l_trolin_rec inv_move_order_pub.trolin_rec_type; v_count number:=0; v_counter number:=0; BEGIN x_line_tbl := p_line_tbl; DBMS_OUTPUT.put_line ('0- v_counter = '||v_counter); IF x_line_tbl.COUNT > 0 THEN DBMS_OUTPUT.put_line ('1- v_counter = '||v_counter||' x_line_tbl.FIRST = '||x_line_tbl.FIRST||' x_line_tbl.LAST = '||x_line_tbl.LAST); FOR j IN x_line_tbl.FIRST .. x_line_tbl.LAST LOOP DBMS_OUTPUT.put_line ('2- v_counter = '||v_counter); v_counter:=v_counter+1; DBMS_OUTPUT.put_line (x_line_tbl (j).line_id); dbms_output.put_line(x_line_tbl (j).organization_id||'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'); BEGIN inv_ppengine_pvt.create_suggestions (p_api_version => 1.0 , p_init_msg_list => fnd_api.g_false , p_commit => fnd_api.g_false , p_validation_level => fnd_api.g_valid_level_none , x_return_status => x_return_status , x_msg_count => x_msg_count , x_msg_data => x_msg_data , p_transaction_temp_id => x_line_tbl (j).line_id , p_reservations => l_rsr_type , p_suggest_serial => fnd_api.g_true , p_plan_tasks => FALSE , p_quick_pick_flag => 'N' , p_organization_id => x_line_tbl (j).organization_id--hbs ); commit; DBMS_OUTPUT.put_line ('Return Status is XYZ :' || x_return_status); DBMS_OUTPUT.put_line ('Message Count is :' || x_msg_count); update WFG_MOVE_ORD_API_DTL set line_id=x_line_tbl (j).line_id, allocate_status=x_return_status where wfg_mv_ord_api_id=p_wfg_mv_ord_api_id and line_number=x_line_tbl (j).line_number; end; end loop; IF x_return_status = 'S' THEN BEGIN l_trolin_tbl := x_line_tbl; IF (l_trolin_tbl.COUNT <> 0) THEN i := l_trolin_tbl.FIRST; WHILE i IS NOT NULL LOOP dbms_output.put_line(' i ='||i); IF ( l_trolin_tbl (i).return_status <> fnd_api.g_ret_sts_unexp_error AND l_trolin_tbl (i).return_status <> fnd_api.g_ret_sts_error ) THEN l_trolin_rec := inv_trolin_util.query_row (l_trolin_tbl (i).line_id); l_trolin_tbl (i) := l_trolin_rec; l_qty_detailed := l_trolin_tbl (i).quantity_detailed; l_qty_delivered := NVL (l_trolin_tbl (i).quantity_delivered, 0); IF NVL (l_qty_detailed, 0) = 0 THEN l_mold_tbl := inv_mo_line_detail_util.query_rows (p_line_id => l_trolin_tbl (i).line_id); dbms_output.put_line('l_mold_tbl.COUNT= '||l_mold_tbl.COUNT); FOR j IN 1 .. l_mold_tbl.COUNT LOOP -- l_mold_tbl (j).transaction_status := 3; -- l_mold_tbl (j).transaction_mode := 1; l_mold_tbl (j).source_line_id := l_trolin_tbl (i).line_id; inv_mo_line_detail_util.update_row (l_return_status, l_mold_tbl (j)); END LOOP; dbms_output.put_line('l_trolin_tbl (i).line_id = '||l_trolin_tbl (i).line_id||' v_count = '||v_count); SELECT transaction_header_id, transaction_quantity INTO l_trolin_tbl (i).transaction_header_id, l_trolin_tbl (i).quantity_detailed FROM mtl_material_transactions_temp WHERE move_order_line_id in ( l_trolin_tbl (i).line_id);--, l_trolin_tbl (i).line_id-1,l_trolin_tbl (i).line_id+1); dbms_output.put_line('l_trolin_tbl (i).transaction_header_id after select'||l_trolin_tbl (i).transaction_header_id); l_trolin_tbl (i).last_update_date := SYSDATE; l_trolin_tbl (i).last_update_login := fnd_global.login_id; IF l_trolin_tbl (i).last_update_login = -1 THEN l_trolin_tbl (i).last_update_login := fnd_global.conc_login_id; END IF; l_trolin_tbl (i).last_updated_by := fnd_global.user_id; l_trolin_tbl (i).program_id := fnd_global.conc_program_id; l_trolin_tbl (i).program_update_date := SYSDATE; l_trolin_tbl (i).request_id := fnd_global.conc_request_id; l_trolin_tbl (i).program_application_id := fnd_global.prog_appl_id; inv_trolin_util.update_row (l_trolin_tbl (i)); END IF; END IF; i := l_trolin_tbl.NEXT (i); END LOOP; END IF; END; ELSE dbms_output.put_line('oppaaaaah'); ROLLBACK; END IF; 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 ); x_msg_data := SUBSTR (x_msg_data, 1, 200); DBMS_OUTPUT.put_line (x_msg_data); DBMS_OUTPUT.put_line ('============================================================'); END LOOP; END IF; -- END; -- END LOOP; END IF; END; create or replace procedure transact_move_order2(p_move_order_id IN NUMBER, x_return_status OUT VARCHAR2,p_organization_id in number,p_wfg_mv_ord_api_id in number) is l_api_version NUMBER := 1.0; l_init_msg_list VARCHAR2 (2) := fnd_api.g_true; l_commit VARCHAR2 (2) := fnd_api.g_false; -- x_return_status VARCHAR2 (2); x_msg_count NUMBER := 0; x_msg_data VARCHAR2 (255); l_move_order_type NUMBER := 1; l_transaction_mode NUMBER := 1; l_trolin_tbl inv_move_order_pub.trolin_tbl_type; l_mold_tbl inv_mo_line_detail_util.g_mmtt_tbl_type; x_mmtt_tbl inv_mo_line_detail_util.g_mmtt_tbl_type; x_trolin_tbl inv_move_order_pub.trolin_tbl_type; l_transaction_date DATE := SYSDATE; -- l_user_id NUMBER; l_resp_id NUMBER; l_appl_id NUMBER; CURSOR c_mo_details IS SELECT mtrh.header_id, mtrh.request_number, mtrh.move_order_type, mtrh.organization_id, mtrl.line_id, mtrl.line_number, mtrl.inventory_item_id, mtrl.lot_number, mtrl.quantity, revision, mtrl.from_locator_id, (SELECT DISTINCT operating_unit FROM org_organization_definitions WHERE organization_id = mtrh.organization_id ) org_id FROM mtl_txn_request_headers mtrh, mtl_txn_request_lines mtrl WHERE mtrh.header_id = mtrl.header_id AND mtrh.request_number = p_move_order_id-- '6539818' AND mtrh.organization_id = p_organization_id; BEGIN FOR i IN c_mo_details LOOP l_trolin_tbl (1).line_id := i.line_id; -- call API to create move order header DBMS_OUTPUT.put_line ('======================================================='); DBMS_OUTPUT.put_line ('Calling INV_Pick_Wave_Pick_Confirm_PUB.Pick_Confirm API'); inv_pick_wave_pick_confirm_pub.pick_confirm (p_api_version_number => l_api_version, p_init_msg_list => l_init_msg_list, p_commit => l_commit, x_return_status => x_return_status, x_msg_count => x_msg_count, x_msg_data => x_msg_data, p_move_order_type => i.move_order_type, p_transaction_mode => l_transaction_mode, p_trolin_tbl => l_trolin_tbl, p_mold_tbl => l_mold_tbl, x_mmtt_tbl => x_mmtt_tbl, x_trolin_tbl => x_trolin_tbl, p_transaction_date => l_transaction_date ); DBMS_OUTPUT.put_line ('======================================================='); DBMS_OUTPUT.put_line ('Return Status:'||x_return_status); update WFG_MOVE_ORD_API_DTL set transact_status=x_return_status where wfg_mv_ord_api_id=p_wfg_mv_ord_api_id and line_id=i.line_id; DBMS_OUTPUT.put_line (x_msg_data); DBMS_OUTPUT.put_line (x_msg_count); IF (x_return_status <> fnd_api.g_ret_sts_success) THEN DBMS_OUTPUT.put_line (x_msg_data); END IF; DBMS_OUTPUT.put_line ('======================================================='); END LOOP; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('Exception Occured :'); DBMS_OUTPUT.put_line ('SQLCODE :'|| SQLERRM); DBMS_OUTPUT.put_line ('======================================================='); END; create or replace procedure wfg_move_order_alct_trsnct is l_header_rec inv_move_order_pub.trohdr_rec_type; l_line_tbl inv_move_order_pub.trolin_tbl_type; x_return_status VARCHAR2 (1); x_msg_data VARCHAR2 (4000); x_msg_count NUMBER; BEGIN mo_global.set_policy_context ('S', 113);--hbs inv_globals.set_org_id (113);--hbs fnd_global.apps_initialize (10341, 51017, 401);--hbs DBMS_OUTPUT.put_line ('Creating Move Order'); for move_order_rec in ( select ID,BATCH_ID,STATUS,ORG_ID,USER_ID,RESP_ID,FROM_SUBINVENTORY_CODE,TO_SUBINVENTORY_CODE,APPLICATION_ID from WFG_MV_ORD_API where Status='Not In' order by id) loop create_move_order (l_header_rec, l_line_tbl, x_return_status, x_msg_data, x_msg_count,move_order_rec.id); update WFG_MV_ORD_API set move_order_status=x_return_status, creation_date=sysdate, header_id=l_header_rec.header_id where id=move_order_rec.id; IF x_return_status = 'S' THEN COMMIT; DBMS_OUTPUT.put_line ('Move Order Created'); IF l_line_tbl.COUNT > 0 THEN x_return_status := NULL; x_msg_data := NULL; x_msg_count := NULL; DBMS_OUTPUT.put_line ('Allocating Move Order'); allocate_move_order (l_line_tbl, x_return_status, x_msg_data, x_msg_count,move_order_rec.id); update WFG_MV_ORD_API set allocate_status=x_return_status where id=move_order_rec.id; IF x_return_status = 'S' THEN COMMIT; DBMS_OUTPUT.put_line ('Move Order Allocated'); x_return_status := NULL; DBMS_OUTPUT.put_line ('Transacting Move Order'); DBMS_OUTPUT.put_line ('l_header_rec.header_id :' || l_header_rec.header_id); transact_move_order2 (l_header_rec.header_id, x_return_status,l_header_rec.organization_id,move_order_rec.id); update WFG_MV_ORD_API set transact_status=x_return_status where id=move_order_rec.id; IF x_return_status = 'S' THEN COMMIT; DBMS_OUTPUT.put_line ('Move Order Transacted'); END IF; END IF; END IF; END IF; end loop; END; الان يمكنك فقط استدعاء wfg_move_order_alct_trsnct . طبعا بامكتنك التعديل عليه بما يتوافق مع ال business الذي يخصك او يلزمك تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.