You are on page 1of 28

Code to create Move Orders from Internal requisitions

CREATE OR REPLACE PACKAGE apps.xxey_move_order AS PROCEDURE create_move_order (p_errbuf OUT VARCHAR2, p_retcode OUT NUMBER); PROCEDURE insert_move_order_data (p_errbuf OUT VARCHAR2, p_retcode OUT NUMBER); FUNCTION run_requests (p_prog_name VARCHAR2, p_user_id NUMBER, p_resp_id NUMBER, p_resp_appl_id NUMBER) RETURN NUMBER; END xxey_move_order; /

CREATE OR REPLACE PACKAGE BODY apps.xxey_move_order AS -============================================================================= ============== -- | Oracle -- | -|============================================================================ ============== -- | Deliverable ID : -- | File name : XXEY_MOVE_ORDER -- | Author : -- | Creation Date : -- | Modified Date : -- | Functionality : This Program Will create Move Order Header and Move Order Detail -in the Inventory by taking data from the Approved Requisitions -- | Tables Used : PO_REQUISITION_HEADERS_ALL -PO_REQUISITION_LINES_ALL -PO_REQ_DISTRIBUTIONS_ALL -MTL_TRANSACTION_TYPES -MTL_UNITS_OF_MEASURE_TL -- | Functions Used : None -- | Special logic used : <Descriptive if any> -- | -- | -- | Program Parameters : -- | Oracle standard Program : None -- | Code referred or used -- | Changes made to the : None -- | Standard Program -- | -- |

-============================================================================= =============== PROCEDURE insert_move_order_data (p_errbuf OUT VARCHAR2, p_retcode OUT NUMBER) AS x_user_type VARCHAR2 (10); CURSOR type_of_user IS SELECT DISTINCT user_id, fax, prh.segment1, prh.org_id FROM fnd_user fu, po_requisition_headers_all prh, po_requisition_lines_all prl, po_req_distributions_all prd, mtl_units_of_measure_tl mum WHERE prl.requisition_header_id = prh.requisition_header_id AND prl.org_id = prh.org_id AND prl.source_type_code = 'INVENTORY' AND mum.unit_of_measure = prl.unit_meas_lookup_code AND prh.authorization_status = 'APPROVED' AND prd.requisition_line_id(+) = prl.requisition_line_id AND prh.segment1 NOT IN (SELECT DISTINCT request_number FROM mtl_txn_request_headers mtr WHERE mtr.creation_date > SYSDATE - 460) AND NVL (prl.cancel_flag, 'N') <> 'Y' AND fu.user_id = prh.created_by AND prh.segment1 NOT IN (SELECT segment1 FROM xxey_requisition_hdrs) AND prh.creation_date > SYSDATE - 360; CURSOR cur_req_header (p_req_no VARCHAR2, p_org_id NUMBER, p_user_typ VARCHAR2) IS SELECT DISTINCT prh.segment1, prh.org_id, prl.source_organization_id, -- prl.need_by_date, Commented for the ticket 335875 by vishwa on 08-Aug-12 prh.created_by, prh.creation_date FROM po_requisition_headers_all prh, po_requisition_lines_all prl, po_req_distributions_all prd, mtl_units_of_measure_tl mum WHERE prl.requisition_header_id = prh.requisition_header_id AND prh.segment1 = p_req_no AND prh.org_id = p_org_id AND prl.org_id = prh.org_id AND prh.created_by IN (SELECT user_id FROM fnd_user WHERE fax = p_user_typ) AND prl.source_type_code = 'INVENTORY' AND mum.unit_of_measure = prl.unit_meas_lookup_code

AND prh.authorization_status = 'APPROVED' AND prd.requisition_line_id(+) = prl.requisition_line_id AND NVL (prl.cancel_flag, 'N') <> 'Y'; ------'NU'' CURSOR cur_req_line (p_req_no VARCHAR2, p_org_id NUMBER, p_src_org NUMBER) IS SELECT DISTINCT prl.requisition_line_id, prl.item_id, mum.uom_code, prl.created_by, prl.quantity, prl.source_subinventory, prl.source_organization_id, prd.code_combination_id, prl.need_by_date, prl.destination_subinventory FROM po_requisition_headers_all prh, po_requisition_lines_all prl, po_req_distributions_all prd, mtl_units_of_measure_tl mum WHERE prl.requisition_header_id = prh.requisition_header_id AND prh.segment1 = p_req_no AND prl.source_organization_id = p_src_org AND prh.org_id = p_org_id AND prl.org_id = prh.org_id AND prl.source_type_code = 'INVENTORY' AND mum.unit_of_measure = prl.unit_meas_lookup_code AND prh.authorization_status = 'APPROVED' AND prd.requisition_line_id(+) = prl.requisition_line_id AND NVL (prl.cancel_flag, 'N') <> 'Y'; ------ Cursor for getting data for Move Order of Requistion Header Information ------ for Outstation User - User_Type -'OU' CURSOR cur_req_hdr_ou (p_req_no VARCHAR2, p_org_id NUMBER, p_user_typ VARCHAR2) IS SELECT DISTINCT prh.segment1, prh.org_id, prl.source_organization_id, prl.need_by_date, prh.created_by, prh.creation_date FROM po_requisition_headers_all prh, po_requisition_lines_all prl, po_req_distributions_all prd, mtl_units_of_measure_tl mum WHERE prl.requisition_header_id = prh.requisition_header_id AND prh.segment1 = p_req_no AND prh.org_id = p_org_id AND prl.org_id = prh.org_id AND prh.created_by IN (SELECT user_id FROM fnd_user WHERE fax = p_user_typ) AND prl.source_type_code = 'INVENTORY' AND mum.unit_of_measure = prl.unit_meas_lookup_code AND prh.authorization_status = 'APPROVED' AND prd.requisition_line_id(+) = prl.requisition_line_id AND prl.category_id NOT IN (SELECT category_id FROM mtl_categories Lines Information for Move Orders for End User -- User_type =

WHERE segment1 IN ('Inflight', 'Publication', 'Promotional', 'Commercial')) AND NVL (prh.attribute13, 'N') <> 'Y' AND NVL (prl.cancel_flag, 'N') <> 'Y'; ------- Lines Information for Move Orders for Outstation User -User_type = 'OU'' CURSOR cur_req_line_ou (p_req_no VARCHAR2, p_org_id NUMBER, p_src_org NUMBER) IS SELECT DISTINCT prh.segment1, prl.requisition_line_id, prl.item_id, mum.uom_code, prl.created_by, prl.quantity, prl.source_subinventory, prl.source_organization_id, prd.code_combination_id, prl.need_by_date, prl.destination_subinventory FROM po_requisition_headers_all prh, po_requisition_lines_all prl, po_req_distributions_all prd, mtl_units_of_measure_tl mum WHERE prl.requisition_header_id = prh.requisition_header_id AND prh.segment1 = p_req_no AND prl.source_organization_id = p_src_org AND prh.org_id = p_org_id AND prl.org_id = prh.org_id AND prl.source_type_code = 'INVENTORY' AND mum.unit_of_measure = prl.unit_meas_lookup_code AND prh.authorization_status = 'APPROVED' AND prd.requisition_line_id(+) = prl.requisition_line_id AND prl.category_id NOT IN (SELECT category_id FROM mtl_categories WHERE segment1 IN ('Inflight', 'Publication', 'Promotional', 'Commercial')) AND NVL (prl.attribute13, 'N') <> 'Y' AND NVL (prl.cancel_flag, 'N') <> 'Y'; BEGIN FOR user_type IN type_of_user LOOP x_user_type := user_type.fax; IF x_user_type = 'NU' THEN BEGIN FOR var_cur_req_header IN cur_req_header (user_type.segment1, user_type.org_id, user_type.fax ) LOOP INSERT INTO xxey_requisition_hdrs VALUES (var_cur_req_header.segment1, user_type.org_id, var_cur_req_header.source_organization_id, var_cur_req_header.created_by, var_cur_req_header.creation_date, 'NU', NULL); FOR var_cur_req_line IN cur_req_line (var_cur_req_header.segment1,

var_cur_req_header.org_id, var_cur_req_header.source_organization_id ) LOOP INSERT INTO xxey_requisition_lns VALUES (var_cur_req_header.segment1, var_cur_req_line.item_id, var_cur_req_line.uom_code, var_cur_req_line.created_by, var_cur_req_line.quantity, var_cur_req_line.source_subinventory, var_cur_req_line.source_organization_id, var_cur_req_header.org_id, var_cur_req_line.code_combination_id, var_cur_req_line.need_by_date, var_cur_req_line.destination_subinventory, NULL); END LOOP; END LOOP; END; ELSIF x_user_type = 'OU' THEN BEGIN FOR var_cur_req_header IN cur_req_header (user_type.segment1, user_type.org_id, user_type.fax ) LOOP INSERT INTO xxey_requisition_hdrs VALUES (var_cur_req_header.segment1, user_type.org_id, var_cur_req_header.source_organization_id, var_cur_req_header.created_by, var_cur_req_header.creation_date, 'OU', NULL); FOR var_cur_req_line IN cur_req_line (var_cur_req_header.segment1, var_cur_req_header.org_id, var_cur_req_header.source_organization_id ) LOOP INSERT INTO xxey_requisition_lns VALUES (var_cur_req_header.segment1, var_cur_req_line.item_id, var_cur_req_line.uom_code, var_cur_req_line.created_by, var_cur_req_line.quantity, var_cur_req_line.source_subinventory, var_cur_req_line.source_organization_id, var_cur_req_header.org_id, var_cur_req_line.code_combination_id, var_cur_req_line.need_by_date, var_cur_req_line.destination_subinventory, NULL); END LOOP; END LOOP; END; /* ELSIF x_user_type = 'SU' THEN BEGIN FOR var_cur_req_header IN cur_req_header (user_type.segment1,

user_type.org_id, user_type.fax ) LOOP INSERT INTO xx_ey_requisition_hdrs VALUES (var_cur_req_header.segment1, user_type.org_id, var_cur_req_header.source_organization_id, var_cur_req_header.created_by, var_cur_req_header.creation_date, 'SU', NULL); FOR var_cur_req_line IN cur_req_line (var_cur_req_header.segment1, var_cur_req_header.org_id, var_cur_req_header.source_organization_id ) LOOP INSERT INTO xx_ey_requisition_lns VALUES (var_cur_req_header.segment1, var_cur_req_line.item_id, var_cur_req_line.uom_code, var_cur_req_line.created_by, var_cur_req_line.quantity, var_cur_req_line.source_subinventory, var_cur_req_line.source_organization_id, var_cur_req_header.org_id, var_cur_req_line.code_combination_id, var_cur_req_line.need_by_date, var_cur_req_line.destination_subinventory, NULL); END LOOP; END LOOP; END; */ END IF; END LOOP; COMMIT; END insert_move_order_data; PROCEDURE create_move_order (p_errbuf OUT VARCHAR2, p_retcode OUT NUMBER) AS -============================================================================= ============== -- | SERVICES -- | -|============================================================================ ============== -- | Deliverable ID : -- | File name : XXEY_MOVE_ORDER -- | Author : -- | Creation Date : -- | Modified Date : -- | Functionality : This Program Will create Move Order Header and Move Order Detail -in the Inventory by taking data from the Approved Requisitions -- | Tables Used : PO_REQUISITION_HEADERS_ALL

-PO_REQUISITION_LINES_ALL -PO_REQ_DISTRIBUTIONS_ALL -MTL_TRANSACTION_TYPES -MTL_UNITS_OF_MEASURE_TL -- | Functions Used : None -- | Special logic used : <Descriptive if any> -- | -- | Program Parameters : -- | Oracle standard Program : None -- | Code referred or used -- | Changes made to the : None -- | Standard Program -- | -- | -============================================================================= =============== l_return_status VARCHAR2 (1) := fnd_api.g_ret_sts_success; l_msg_count NUMBER; l_msg_data VARCHAR2 (4000); msg VARCHAR2 (4000); l_header_id NUMBER := fnd_api.g_miss_num; l_line_num NUMBER := 0; l_order_count NUMBER := 1; l_count NUMBER; x_header_id NUMBER; x_line_id NUMBER; x_user_id NUMBER; x_user_type VARCHAR2 (20); x_mtl_trans_typ_id NUMBER; x_req_hdr_id NUMBER; x_req_descr VARCHAR2 (240); x_lot_itm_flag VARCHAR2 (1) := NULL; x_lot_quantity_total NUMBER; x_lot_quantity NUMBER; l_header_status VARCHAR2 (1); l_line_status VARCHAR2 (1); xx_segment1 VARCHAR2 (20); ----------------------------------------------------l_x_trohdr_rec inv_move_order_pub.trohdr_rec_type; l_x_trolin_tbl inv_move_order_pub.trolin_tbl_type; l_trohdr_rec inv_move_order_pub.trohdr_rec_type; l_trohdr_val_rec inv_move_order_pub.trohdr_val_rec_type; l_trolin_tbl inv_move_order_pub.trolin_tbl_type; l_trolin_val_tbl inv_move_order_pub.trolin_val_tbl_type; ------------------------------------------------------ Cursor to get the User Type based on which Move order or Transfer has to be done. -- If User_type is 'NU' then Move Order --- NU is End User -- 'SU' then Transfer -- SU is Stores User , OU is Outstations User -- 'OU' then if Item Category is Rotable then Transfer else Move Order -'

CURSOR type_of_user IS SELECT DISTINCT user_id, fax, prh.segment1, prh.org_id FROM fnd_user fu, po_requisition_headers_all prh, po_requisition_lines_all prl, po_req_distributions_all prd, mtl_units_of_measure_tl mum WHERE prl.requisition_header_id = prh.requisition_header_id AND prl.org_id = prh.org_id AND prl.source_type_code = 'INVENTORY' AND mum.unit_of_measure = prl.unit_meas_lookup_code AND prh.authorization_status = 'APPROVED' AND prd.requisition_line_id(+) = prl.requisition_line_id AND prh.segment1 NOT IN (SELECT DISTINCT request_number FROM mtl_txn_request_headers mtr WHERE mtr.creation_date > SYSDATE - 460) AND NVL (prl.cancel_flag, 'N') <> 'Y' AND fu.user_id = prh.created_by AND prh.creation_date > SYSDATE - 360; ---AND NVL (prh.attribute15, 'N') <> 'Y' AND NVL (prl.cancel_flag, 'N') <> 'Y' AND fu.user_id = prh.created_by;

------ Cursor for getting data to Transfer of Requistion for Outstation User - User Type ='OU' CURSOR transfer_ou IS SELECT prh.org_id, prl.item_id, prl.quantity, mum.uom_code, prl.rate, prl.created_by, prl.source_subinventory, prh.segment1, prh.description, prl.destination_subinventory, prl.source_organization_id, prl.destination_organization_id FROM po_requisition_headers_all prh, po_requisition_lines_all prl, po_req_distributions_all prd, mtl_units_of_measure_tl mum WHERE prl.requisition_header_id = prh.requisition_header_id AND prl.org_id = prh.org_id AND prh.created_by IN (SELECT user_id FROM fnd_user WHERE fax = 'OU') AND prl.source_type_code = 'INVENTORY' AND mum.unit_of_measure = prl.unit_meas_lookup_code AND prh.authorization_status = 'APPROVED' AND prd.requisition_line_id(+) = prl.requisition_line_id AND prl.category_id IN (SELECT category_id FROM mtl_categories WHERE segment1 IN ('Inflight', 'Publication', 'Promotional', 'Commercial')) AND NVL (prh.attribute15, 'N') <> 'Y' AND NVL (prl.cancel_flag, 'N') <> 'Y'; ----------- Cursor for fetching Lot Numbers for Transfers -----------CURSOR cur_transf_lot_nos (p_org_id NUMBER, p_item_id NUMBER, p_subinv_code VARCHAR2)

IS SELECT mot.item, mot.uom, SUM (mot.on_hand) on_hand, mot.lot_number, mln.expiration_date FROM mtl_onhand_total_mwb_v mot, mtl_lot_numbers_all_v mln WHERE mot.organization_id = p_org_id AND mot.subinventory_code = p_subinv_code AND mot.inventory_item_id = p_item_id AND mot.lot_number IS NOT NULL AND (mln.disable_flag = 2 OR mln.disable_flag IS NULL) AND mln.lot_number = mot.lot_number AND mot.inventory_item_id = mln.inventory_item_id AND mot.organization_id = mln.organization_id GROUP BY mot.organization_id, mot.organization_code, mot.subinventory_code, mot.locator_id, mot.LOCATOR, mot.inventory_item_id, mot.item_description, mot.item, mot.uom, mot.lot_number, mot.item_lot_control, mln.expiration_date ORDER BY mln.expiration_date; ------------** ******************************************** **-----------CURSOR cur_req_hdr_cus (p_req_no VARCHAR2, p_org_id NUMBER, p_user_typ VARCHAR2, p_user_id NUMBER) IS SELECT * FROM xxey_requisition_hdrs WHERE nu_ou_su_user = 'NU' AND NVL (moh_flag, 'N') <> 'Y' AND segment1 = p_req_no AND org_id = p_org_id AND created_by = p_user_id; CURSOR cur_req_lns_cus (p_req_no VARCHAR2, p_org_id NUMBER, p_src_org NUMBER) IS SELECT * FROM xxey_requisition_lns WHERE p_req_no = segment1 AND org_id = p_org_id AND source_organization_id = p_src_org; CURSOR cur_req_hdr_cus_ou (p_req_no VARCHAR2, p_org_id NUMBER, p_user_typ VARCHAR2, p_user_id NUMBER) IS SELECT * FROM xxey_requisition_hdrs WHERE nu_ou_su_user = 'OU' AND NVL (moh_flag, 'N') <> 'Y' AND segment1 = p_req_no AND org_id = p_org_id AND created_by = p_user_id; CURSOR cur_req_lns_cus_ou (p_req_no VARCHAR2, p_org_id NUMBER, p_src_org NUMBER) IS SELECT * FROM xxey_requisition_lns

WHERE p_req_no = segment1 AND org_id = p_org_id AND source_organization_id = p_src_org; BEGIN p_retcode := 0; p_errbuf := NULL; -- To find the User Type based on which Move Order or Transfer option is decided FOR user_type IN type_of_user LOOP -- To find the transaction type id for Move Order from MTL_TRANSACTION_TYPES. SELECT transaction_type_id INTO x_mtl_trans_typ_id FROM mtl_transaction_types WHERE attribute10 = 'Y' AND transaction_type_name LIKE 'EY%' AND transaction_action_id = 1; SELECT INTO FROM WHERE fax x_user_type fnd_user user_id = user_type.user_id;

fnd_file.new_line (fnd_file.output, 2); fnd_file.put_line (fnd_file.output, 'User Type ' || x_user_type || ' User ID ' || user_type.user_id || ' MTL Trans type ' || x_mtl_trans_typ_id); IF x_user_type = 'NU' THEN BEGIN FOR var_cur_req_header IN cur_req_hdr_cus (user_type.segment1, user_type.org_id, user_type.fax, user_type.user_id ) --cur_req_header (user_type.segment1, user_type.org_id, user_type.fax) LOOP BEGIN SELECT COUNT (DISTINCT header_id) INTO l_count FROM mtl_txn_request_headers WHERE request_number = var_cur_req_header.segment1 AND organization_id = var_cur_req_header.source_organization_id; EXCEPTION WHEN OTHERS THEN l_count := 0; END; IF l_count = 0 THEN ----SELECT mtl_txn_request_headers_s.NEXTVAL INTO x_header_id FROM DUAL;

l_line_num := 0; l_trohdr_rec.created_by := var_cur_req_header.created_by; l_trohdr_rec.creation_date := SYSDATE; l_trohdr_rec.header_status := inv_globals.g_to_status_preapproved; l_trohdr_rec.last_updated_by := var_cur_req_header.created_by; l_trohdr_rec.last_update_date := SYSDATE; l_trohdr_rec.last_update_login := var_cur_req_header.created_by; l_trohdr_rec.request_number := var_cur_req_header.segment1; l_trohdr_rec.organization_id := var_cur_req_header.source_organization_id; l_trohdr_rec.status_date := SYSDATE; l_trohdr_rec.header_id := x_header_id; l_trohdr_rec.to_subinventory_code := NULL; l_trohdr_rec.move_order_type := inv_globals.g_move_order_requisition; l_trohdr_rec.transaction_type_id := x_mtl_trans_typ_id; l_trohdr_rec.db_flag := fnd_api.g_true; l_trohdr_rec.operation := inv_globals.g_opr_create; -- Initialization Parameters. fnd_global.apps_initialize (user_id => fnd_profile.VALUE ('USER_ID'), resp_id => fnd_profile.VALUE ('RESP_ID'), resp_appl_id => fnd_profile.VALUE ('RESP_APPL_ID') ); inv_move_order_pub.create_move_order_header (p_api_version_number => 1.0, p_init_msg_list p_return_values => fnd_api.g_true, x_return_status => l_msg_count, x_msg_data => l_msg_data, p_trohdr_rec p_trohdr_val_rec x_trohdr_rec x_trohdr_val_rec => l_trohdr_rec, => l_trohdr_val_rec, => l_trohdr_rec, => l_trohdr_val_rec ); fnd_file.new_line (fnd_file.output, 1); => l_return_status, x_msg_count => fnd_api.g_false, => fnd_api.g_true, p_commit

fnd_file.put_line (fnd_file.output, 'Create MO Header :' || l_return_status); IF (l_return_status != fnd_api.g_ret_sts_success) THEN IF l_msg_count IS NOT NULL THEN FOR i IN 1 .. l_msg_count LOOP fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'header - ' || fnd_msg_pub.get (i, NULL)); END LOOP; ELSE fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'MO error'); END IF; ELSE fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'Move Order Header Created Successfully and HEADER_ID=>' || x_header_id); END IF; IF l_return_status = 'S' THEN fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'Move Order Header Completed Successfully for Requisition Number=> ' || ' ' || var_cur_req_header.segment1); l_header_status := 'S'; ELSIF l_return_status <> 'S' THEN fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'Move Order Header Status=>' || ' ' || l_return_status); l_header_status := ''; END IF; --Update the Requisition......... IF l_header_status = 'S' THEN UPDATE po_requisition_headers_all SET attribute15 = 'Y', description = SUBSTR (description, 1, 210 ) || ' (Converted to Move Order)' WHERE segment1 = var_cur_req_header.segment1 AND org_id = var_cur_req_header.org_id; UPDATE xxey_requisition_hdrs SET moh_flag = 'Y' WHERE segment1 = var_cur_req_header.segment1 AND org_id = var_cur_req_header.org_id;

l_header_status := NULL; END IF; FOR var_cur_req_line IN cur_req_lns_cus (var_cur_req_header.segment1, var_cur_req_header.org_id, var_cur_req_header.source_organization_id ) LOOP SELECT mtl_txn_request_lines_s.NEXTVAL INTO x_line_id FROM DUAL; l_line_num := l_line_num + 1; l_trolin_tbl (l_line_num).created_by := var_cur_req_line.created_by; l_trolin_tbl (l_line_num).creation_date := SYSDATE; l_trolin_tbl (l_line_num).date_required := var_cur_req_line.need_by_date; l_trolin_tbl (l_line_num).from_subinventory_code := var_cur_req_line.source_subinventory; l_trolin_tbl (l_line_num).inventory_item_id := var_cur_req_line.item_id; l_trolin_tbl (l_line_num).last_updated_by := var_cur_req_line.created_by; l_trolin_tbl (l_line_num).last_update_date := SYSDATE; l_trolin_tbl (l_line_num).last_update_login := var_cur_req_line.created_by; l_trolin_tbl (l_line_num).line_id := x_line_id; l_trolin_tbl (l_line_num).line_number := l_line_num; l_trolin_tbl (l_line_num).header_id := x_header_id; l_trolin_tbl (l_line_num).line_status := inv_globals.g_to_status_preapproved; l_trolin_tbl (l_line_num).organization_id := var_cur_req_line.source_organization_id; l_trolin_tbl (l_line_num).quantity := var_cur_req_line.quantity; l_trolin_tbl (l_line_num).status_date := SYSDATE; l_trolin_tbl (l_line_num).to_subinventory_code := NULL; l_trolin_tbl (l_line_num).uom_code := var_cur_req_line.uom_code; l_trolin_tbl (l_line_num).transaction_type_id := x_mtl_trans_typ_id; l_trolin_tbl (l_line_num).to_account_id := var_cur_req_line.code_combination_id; l_trolin_tbl (l_line_num).db_flag := fnd_api.g_true; l_trolin_tbl (l_line_num).operation := inv_globals.g_opr_create; BEGIN SELECT inventory_location_id INTO l_trolin_tbl (l_line_num).from_locator_id

FROM mtl_item_locations_kfv WHERE subinventory_code = l_trolin_tbl (l_line_num).from_subinventory_code AND segment4 LIKE 'MAIN_WH'; EXCEPTION WHEN OTHERS THEN l_trolin_tbl (l_line_num).from_locator_id := NULL; END; -- Initialization Parameters. fnd_global.apps_initialize (user_id => fnd_profile.VALUE ('USER_ID'), resp_id => fnd_profile.VALUE ('RESP_ID'), resp_appl_id => fnd_profile.VALUE ('RESP_APPL_ID') ); inv_move_order_pub.create_move_order_lines (p_api_version_number => 1.0, p_init_msg_list p_return_values => fnd_api.g_true, x_return_status x_msg_count x_msg_data p_trolin_tbl p_trolin_val_tbl x_trolin_tbl x_trolin_val_tbl => l_return_status, => l_msg_count, => l_msg_data, => l_trolin_tbl, => l_trolin_val_tbl, => l_trolin_tbl, => l_trolin_val_tbl ); -fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'Create MO Lines :' || l_return_status); IF (l_return_status != fnd_api.g_ret_sts_success) THEN IF l_msg_count IS NOT NULL THEN FOR i IN 1 .. l_msg_count LOOP fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'line ' || fnd_msg_pub.get (i, NULL)); END LOOP; ELSE => fnd_api.g_false, => fnd_api.g_true, p_commit

fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'MO error'); END IF; ELSE fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'Move Order Line Created Successfully and HEADER_ID=>' || x_header_id); END IF; --Update the Requisition Lines ......... IF l_return_status = 'S' THEN -SELECT requisition_header_id INTO x_req_hdr_id FROM po_requisition_headers_all WHERE segment1 = var_cur_req_header.segment1 AND org_id = var_cur_req_header.org_id; -UPDATE po_requisition_lines_all l SET attribute15 = 'Y' WHERE requisition_header_id = (SELECT h.requisition_header_id FROM po_requisition_headers_all h WHERE h.segment1 = var_cur_req_header.segment1 AND h.org_id = var_cur_req_header.org_id) AND l.requisition_line_id = x_line_id AND l.org_id = var_cur_req_header.org_id; UPDATE xxey_requisition_lns SET mol_flag = 'Y' WHERE segment1 = var_cur_req_header.segment1 AND org_id = var_cur_req_header.org_id; END IF; IF l_return_status = 'S' THEN fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'Move Order Lines Completed Successfully for Requisition Number=>' || ' ' || var_cur_req_header.segment1); ELSIF l_return_status <> 'S' THEN fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'Move Order Lines Status=>' || ' ' || l_return_status); END IF; END LOOP; END IF; END LOOP;

p_errbuf := SQLERRM; p_retcode := 0; EXCEPTION WHEN OTHERS THEN fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, SQLCODE || '--' || SQLERRM); -fnd_file.put_line (fnd_file.LOG, SQLCODE || '--' || SQLERRM); END; ELSIF x_user_type = 'OU' THEN BEGIN FOR var_cur_req_hdr_ou IN cur_req_hdr_cus_ou (user_type.segment1, user_type.org_id, user_type.fax, user_type.user_id ) LOOP BEGIN SELECT COUNT (DISTINCT header_id) INTO l_count FROM mtl_txn_request_headers WHERE request_number = var_cur_req_hdr_ou.segment1 AND organization_id = var_cur_req_hdr_ou.source_organization_id; EXCEPTION WHEN OTHERS THEN l_count := 0; END; IF l_count = 0 THEN ----SELECT mtl_txn_request_headers_s.NEXTVAL INTO x_header_id FROM DUAL; ----fnd_file.new_line (fnd_file.output, 2); fnd_file.put_line (fnd_file.output, '+--------------------------------------------------------------------------+'); fnd_file.put_line (fnd_file.output, '--------------FOR CREATION OF MOVE ORDER HEADER FOR OUTSTATIONS----------------------'); fnd_file.put_line (fnd_file.output, 'Process Started At ' || TO_CHAR (SYSDATE, 'DD-MON-RRRR HH24:MI:SS')); fnd_file.put_line (fnd_file.output, '+--------------------------------------------------------------------------+'); fnd_file.put_line (fnd_file.output, 'Requisition Number ' || var_cur_req_hdr_ou.segment1);

fnd_file.new_line (fnd_file.output, 2); fnd_file.new_line (fnd_file.LOG, 2); fnd_file.put_line (fnd_file.LOG, '+--------------------------------------------------------------------------+'); fnd_file.put_line (fnd_file.LOG, '--------------FOR CREATION OF MOVE ORDER HEADER FOR OUTSTATIONS----------------------'); fnd_file.put_line (fnd_file.LOG, 'Process Started At ' || TO_CHAR (SYSDATE, 'DD-MON-RRRR HH24:MI:SS')); fnd_file.put_line (fnd_file.LOG, '+--------------------------------------------------------------------------+'); fnd_file.put_line (fnd_file.LOG, 'Requisition Number ' || var_cur_req_hdr_ou.segment1); fnd_file.new_line (fnd_file.LOG, 2); fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'CREATE MOVE ORDER OU'); l_line_num := 0; l_trohdr_rec.created_by := var_cur_req_hdr_ou.created_by; l_trohdr_rec.creation_date := SYSDATE; l_trohdr_rec.header_status := inv_globals.g_to_status_preapproved; l_trohdr_rec.last_updated_by := var_cur_req_hdr_ou.created_by; l_trohdr_rec.last_update_date := SYSDATE; l_trohdr_rec.last_update_login := var_cur_req_hdr_ou.created_by; l_trohdr_rec.request_number := var_cur_req_hdr_ou.segment1; l_trohdr_rec.organization_id := var_cur_req_hdr_ou.source_organization_id; l_trohdr_rec.status_date := SYSDATE; l_trohdr_rec.header_id := x_header_id; l_trohdr_rec.to_subinventory_code := NULL; l_trohdr_rec.move_order_type := inv_globals.g_move_order_requisition; l_trohdr_rec.transaction_type_id := x_mtl_trans_typ_id; l_trohdr_rec.db_flag := fnd_api.g_true; l_trohdr_rec.operation := inv_globals.g_opr_create; -- Initialization Parameters. fnd_global.apps_initialize (user_id => fnd_profile.VALUE ('USER_ID'), resp_id => fnd_profile.VALUE ('RESP_ID'), resp_appl_id => fnd_profile.VALUE ('RESP_APPL_ID') ); inv_move_order_pub.create_move_order_header (p_api_version_number => 1.0, p_init_msg_list p_return_values => fnd_api.g_true, => fnd_api.g_false, => fnd_api.g_true, p_commit

x_return_status => l_msg_count,

=> l_return_status, x_msg_count x_msg_data

=> l_msg_data, p_trohdr_rec p_trohdr_val_rec x_trohdr_rec x_trohdr_val_rec => l_trohdr_rec, => l_trohdr_val_rec, => l_trohdr_rec, => l_trohdr_val_rec

); fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'Create MO Header for OU:' || l_return_status); IF (l_return_status != fnd_api.g_ret_sts_success) THEN IF l_msg_count IS NOT NULL THEN FOR i IN 1 .. l_msg_count LOOP fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'header - ' || fnd_msg_pub.get (i, NULL)); END LOOP; ELSE fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'MO error'); END IF; ELSE fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'Move Order Header for OU Created Successfully and HEADER_ID=>' || x_header_id); END IF; IF l_return_status = 'S' THEN fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'Move Order Header for OU Completed Successfully for Requisition Number=> ' || ' ' || var_cur_req_hdr_ou.segment1); l_header_status := 'S'; ELSIF l_return_status <> 'S' THEN fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'Move Order Header Status=>' || ' ' || l_return_status); l_header_status := ''; END IF;

FOR var_cur_req_line_ou IN cur_req_lns_cus_ou (var_cur_req_hdr_ou.segment1, var_cur_req_hdr_ou.org_id, var_cur_req_hdr_ou.source_organization_id ) LOOP SELECT mtl_txn_request_lines_s.NEXTVAL INTO x_line_id FROM DUAL; fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'Line ID ' || x_line_id); l_line_num := l_line_num + 1; l_trolin_tbl (l_line_num).created_by := var_cur_req_line_ou.created_by; l_trolin_tbl (l_line_num).creation_date := SYSDATE; l_trolin_tbl (l_line_num).date_required := var_cur_req_line_ou.need_by_date; l_trolin_tbl (l_line_num).from_subinventory_code := var_cur_req_line_ou.source_subinventory; l_trolin_tbl (l_line_num).inventory_item_id := var_cur_req_line_ou.item_id; l_trolin_tbl (l_line_num).last_updated_by := var_cur_req_line_ou.created_by; l_trolin_tbl (l_line_num).last_update_date := SYSDATE; l_trolin_tbl (l_line_num).last_update_login := var_cur_req_line_ou.created_by; l_trolin_tbl (l_line_num).line_id := x_line_id; l_trolin_tbl (l_line_num).line_number := l_line_num; l_trolin_tbl (l_line_num).header_id := x_header_id; l_trolin_tbl (l_line_num).line_status := inv_globals.g_to_status_preapproved; l_trolin_tbl (l_line_num).organization_id := var_cur_req_line_ou.source_organization_id; l_trolin_tbl (l_line_num).quantity := var_cur_req_line_ou.quantity; l_trolin_tbl (l_line_num).status_date := SYSDATE; l_trolin_tbl (l_line_num).to_subinventory_code := NULL; l_trolin_tbl (l_line_num).uom_code := var_cur_req_line_ou.uom_code; l_trolin_tbl (l_line_num).transaction_type_id := x_mtl_trans_typ_id; BEGIN SELECT INTO FROM WHERE code_combination_id l_trolin_tbl (l_line_num).to_account_id gl_code_combinations_kfv concatenated_segments = (SELECT '11.' || (SELECT attribute1 FROM

mtl_secondary_inventories

WHERE organization_id = (SELECT organization_id FROM mtl_parameters WHERE organization_code = 'OSS') AND secondary_inventory_name = var_cur_req_line_ou.source_subinventory) || '.644.5191.0000.000' FROM DUAL); EXCEPTION WHEN OTHERS THEN l_trolin_tbl (l_line_num).to_account_id := var_cur_req_line_ou.code_combination_id; END; l_trolin_tbl (l_line_num).db_flag := fnd_api.g_true; l_trolin_tbl (l_line_num).operation := inv_globals.g_opr_create; -- Initialization Parameters. fnd_global.apps_initialize (user_id => fnd_profile.VALUE ('USER_ID'), resp_id => fnd_profile.VALUE ('RESP_ID'), resp_appl_id => fnd_profile.VALUE ('RESP_APPL_ID') ); inv_move_order_pub.create_move_order_lines (p_api_version_number => 1.0, p_init_msg_list p_return_values => fnd_api.g_true, x_return_status x_msg_count x_msg_data p_trolin_tbl p_trolin_val_tbl x_trolin_tbl x_trolin_val_tbl => l_return_status, => l_msg_count, => l_msg_data, => l_trolin_tbl, --l_trolin_rec => fnd_api.g_false, => fnd_api.g_true, p_commit

=> l_trolin_val_tbl, => l_trolin_tbl, => l_trolin_val_tbl

); fnd_file.put_line (fnd_file.output, 'Create MO Lines for OU :' || l_return_status); IF (l_return_status != fnd_api.g_ret_sts_success) THEN IF l_msg_count IS NOT NULL

THEN FOR i IN 1 .. l_msg_count LOOP fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'line ' || fnd_msg_pub.get (i, NULL)); END LOOP; ELSE fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'MO error'); END IF; ELSE fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'Move Order Line for OU Created Successfully and HEADER_ID=>' || x_header_id); END IF; --Update the Requisition Lines ......... IF l_return_status = 'S' THEN x_req_hdr_id := 0; SELECT requisition_header_id, description INTO x_req_hdr_id, x_req_descr FROM po_requisition_headers_all WHERE segment1 = var_cur_req_hdr_ou.segment1 AND org_id = var_cur_req_hdr_ou.org_id; UPDATE po_requisition_lines_all l SET attribute15 = 'Y' WHERE requisition_header_id = (SELECT h.requisition_header_id FROM po_requisition_headers_all h WHERE h.segment1 = var_cur_req_hdr_ou.segment1 AND h.org_id = var_cur_req_hdr_ou.org_id) AND requisition_line_id = x_line_id AND org_id = var_cur_req_hdr_ou.org_id; UPDATE xxey_requisition_lns SET mol_flag = 'Y' WHERE segment1 = var_cur_req_hdr_ou.segment1 AND org_id = var_cur_req_hdr_ou.org_id; END IF; IF l_return_status = 'S' THEN fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'Move Order Lines for OU Completed Successfully for Requisition Number=>' || ' ' || var_cur_req_hdr_ou.segment1);

ELSIF l_return_status <> 'S' THEN fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, 'Move Order Lines for OU Status=>' || ' ' || l_return_status); END IF; END LOOP; END IF; END LOOP; p_errbuf := SQLERRM; p_retcode := 0; EXCEPTION WHEN OTHERS THEN fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, SQLCODE || '--' || SQLERRM); -fnd_file.put_line (fnd_file.LOG, SQLCODE || '--' || SQLERRM); END; --------- Transfer Creation for OU User BEGIN FOR trans_rec_ou IN transfer_ou LOOP -- To get Transaction Type ID for InterOrg Transfer IF trans_rec_ou.destination_organization_id <> trans_rec_ou.source_organization_id THEN SELECT transaction_type_id INTO x_mtl_trans_typ_id FROM mtl_transaction_types WHERE transaction_type_name LIKE 'EY%' AND transaction_action_id = 3; -- Transaction_Action_Id 3 is InterOrg Transfer END IF; -- To get Transaction Type ID for SubIventory Transfer IF trans_rec_ou.destination_organization_id = trans_rec_ou.source_organization_id THEN IF trans_rec_ou.destination_subinventory <> trans_rec_ou.source_subinventory THEN SELECT transaction_type_id INTO x_mtl_trans_typ_id FROM mtl_transaction_types WHERE transaction_type_name LIKE 'EY%' AND transaction_action_id = 2; -- Transaction_Action_Id 2 is SubInventory Transfer END IF; END IF; fnd_file.new_line (fnd_file.output, 2); fnd_file.put_line (fnd_file.output, '+--------------------------------------------------------------------------+');

fnd_file.put_line (fnd_file.output, '--------------CREATION OF TRANSFERS IN MTL_TRANSACTIONS_INTERFACE FROM OU PO REQUISITIONS----------------------'); fnd_file.put_line (fnd_file.output, 'Process Started At ' || TO_CHAR (SYSDATE, 'DD-MON-RRRR HH24:MI:SS')); fnd_file.put_line (fnd_file.output, '+--------------------------------------------------------------------------+'); fnd_file.put_line (fnd_file.output, 'Requisition Number ' || trans_rec_ou.segment1); fnd_file.new_line (fnd_file.output, 2); fnd_file.new_line (fnd_file.LOG, 2); fnd_file.put_line (fnd_file.LOG, '+--------------------------------------------------------------------------+'); fnd_file.put_line (fnd_file.LOG, '--------------CREATION OF TRANSFERS IN MTL_TRANSACTIONS_INTERFACE FROM OU PO REQUISITIONS----------------------'); fnd_file.put_line (fnd_file.LOG, 'Process Started At ' || TO_CHAR (SYSDATE, 'DD-MON-RRRR HH24:MI:SS')); fnd_file.put_line (fnd_file.LOG, '+--------------------------------------------------------------------------+'); fnd_file.put_line (fnd_file.LOG, 'Requisition Number ' || trans_rec_ou.segment1); fnd_file.new_line (fnd_file.LOG, 2); fnd_file.new_line (fnd_file.output, 2); fnd_file.put_line (fnd_file.output, '+--------------------------------------------------------------------------+'); fnd_file.put_line (fnd_file.output, '----Transfer Transaction Creation for ----'); fnd_file.put_line (fnd_file.output, 'Reqn Number ' || trans_rec_ou.segment1); fnd_file.put_line (fnd_file.output, 'Source Org ' || trans_rec_ou.source_organization_id); fnd_file.put_line (fnd_file.output, 'Source SubInv ' || trans_rec_ou.source_subinventory); fnd_file.put_line (fnd_file.output, 'Dest Org ' || trans_rec_ou.destination_organization_id); fnd_file.put_line (fnd_file.output, 'Dest SubInv ' || trans_rec_ou.destination_subinventory); fnd_file.new_line (fnd_file.output, 2); INSERT INTO mtl_transactions_interface (transaction_interface_id, source_code, source_header_id, source_line_id, process_flag, transaction_date, transaction_mode, organization_id, subinventory_code, transaction_quantity, transaction_uom, transfer_organization, transfer_subinventory, inventory_item_id, transaction_type_id, last_update_date, last_updated_by, creation_date, created_by, transaction_source_name ) VALUES (mtl_material_transactions_s.NEXTVAL, 'EY TRANSFER ' || trans_rec_ou.segment1, 1, 1, 1, SYSDATE, 3, trans_rec_ou.source_organization_id, trans_rec_ou.source_subinventory, trans_rec_ou.quantity,

trans_rec_ou.uom_code, trans_rec_ou.destination_organization_id, trans_rec_ou.destination_subinventory, trans_rec_ou.item_id, x_mtl_trans_typ_id, SYSDATE, trans_rec_ou.created_by, SYSDATE, trans_rec_ou.created_by, trans_rec_ou.segment1 ); BEGIN x_lot_itm_flag := NULL; BEGIN SELECT 'Y' INTO x_lot_itm_flag FROM mtl_system_items WHERE lot_control_code = 2 AND inventory_item_id = trans_rec_ou.item_id AND ROWNUM < 2; EXCEPTION WHEN OTHERS THEN x_lot_itm_flag := 'N'; END; IF x_lot_itm_flag = 'Y' THEN x_lot_quantity_total := 0; FOR lot_rec_ou IN cur_transf_lot_nos (trans_rec_ou.source_organization_id, trans_rec_ou.item_id, trans_rec_ou.source_subinventory ) LOOP IF (x_lot_quantity_total >= trans_rec_ou.quantity) THEN EXIT; END IF; x_lot_quantity := 0; IF (lot_rec_ou.on_hand >= (trans_rec_ou.quantity x_lot_quantity_total)) THEN x_lot_quantity := trans_rec_ou.quantity x_lot_quantity_total; ELSE x_lot_quantity := lot_rec_ou.on_hand; END IF; x_lot_quantity_total := x_lot_quantity_total + x_lot_quantity; BEGIN INSERT INTO mtl_transaction_lots_interface

(lot_number, transaction_interface_id, last_update_date, last_updated_by, creation_date, created_by, transaction_quantity ) VALUES (NVL (lot_rec_ou.lot_number, 'Lot1'), mtl_material_transactions_s.CURRVAL, SYSDATE, -1, SYSDATE, -1, NVL (x_lot_quantity, trans_rec_ou.quantity) ); EXCEPTION WHEN OTHERS THEN fnd_file.new_line (fnd_file.output, 'MTL_TRANSACTION_LOTS_INTERFACE'); fnd_file.put_line (fnd_file.output, SQLCODE || '--' || SQLERRM); -fnd_file.put_line (fnd_file.LOG, SQLCODE || '--' || SQLERRM); END; END LOOP; IF (x_lot_quantity_total < trans_rec_ou.quantity) THEN BEGIN INSERT INTO mtl_transaction_lots_interface (lot_number, transaction_interface_id, last_update_date, last_updated_by, creation_date, created_by, transaction_quantity, lot_expiration_date ) VALUES ('Lot-1', mtl_material_transactions_s.CURRVAL, SYSDATE, -1, SYSDATE, -1, trans_rec_ou.quantity x_lot_quantity_total, SYSDATE + 1 ); EXCEPTION WHEN OTHERS THEN fnd_file.new_line (fnd_file.output, 'MTL_TRANSACTION_LOTS_INTERFACE'); fnd_file.put_line (fnd_file.output, SQLCODE || '--' || SQLERRM); END; END IF; END IF; END; UPDATE po_requisition_headers_all SET attribute15 = 'Y', description = SUBSTR (trans_rec_ou.description, 1, 210 ) || ' ' || '(Converted to Transfer)'

WHERE segment1 = trans_rec_ou.segment1 AND org_id = trans_rec_ou.org_id; x_req_descr := trans_rec_ou.description || ' ' || '(Converted to Transfer)'; END LOOP; IF x_req_hdr_id <> 0 THEN UPDATE po_requisition_headers_all SET attribute15 = 'Y', description = SUBSTR (x_req_descr, 1, 210 ) || ' & (Converted to Move Order)' WHERE requisition_header_id = x_req_hdr_id; SELECT INTO FROM WHERE segment1 xx_segment1 po_requisition_headers_all requisition_header_id = x_req_hdr_id;

UPDATE xxey_requisition_hdrs SET moh_flag = 'Y' WHERE segment1 = xx_segment1; END IF; EXCEPTION WHEN OTHERS THEN fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, SQLCODE || '--' || SQLERRM); END; ELSIF x_user_type = 'SU' THEN BEGIN fnd_file.new_line (fnd_file.output, 2); fnd_file.put_line (fnd_file.output, '+--------------------------------------------------------------------------+'); fnd_file.put_line (fnd_file.output, '--------------CREATION OF TRANSFERS IN MTL_TRANSACTIONS_INTERFACE FROM SU PO REQUISITIONS----------------------'); fnd_file.put_line (fnd_file.output, 'Process Started At ' || TO_CHAR (SYSDATE, 'DD-MON-RRRR HH24:MI:SS')); fnd_file.put_line (fnd_file.output, '+--------------------------------------------------------------------------+'); fnd_file.new_line (fnd_file.output, 2); fnd_file.new_line (fnd_file.LOG, 2); fnd_file.put_line (fnd_file.LOG, '+--------------------------------------------------------------------------+'); fnd_file.put_line (fnd_file.LOG, '--------------CREATION OF TRANSFERS IN MTL_TRANSACTIONS_INTERFACE FROM SU PO REQUISITIONS----------------------');

fnd_file.put_line (fnd_file.LOG, 'Process Started At ' || TO_CHAR (SYSDATE, 'DD-MON-RRRR HH24:MI:SS')); fnd_file.put_line (fnd_file.LOG, '+--------------------------------------------------------------------------+'); fnd_file.new_line (fnd_file.LOG, 2); EXCEPTION WHEN OTHERS THEN fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, SQLCODE || '--' || SQLERRM); -fnd_file.put_line (fnd_file.LOG, SQLCODE || '--' || SQLERRM); END; END IF; END LOOP; COMMIT; EXCEPTION WHEN OTHERS THEN fnd_file.new_line (fnd_file.output, 1); fnd_file.put_line (fnd_file.output, SQLCODE || '--' || SQLERRM); -fnd_file.put_line (fnd_file.LOG, 'Procedure Exception Error ' || SQLCODE || '--' || SQLERRM); END create_move_order; FUNCTION run_requests (p_prog_name VARCHAR2, p_user_id NUMBER, p_resp_id NUMBER, p_resp_appl_id NUMBER) RETURN NUMBER IS ret NUMBER; v_msg VARCHAR2 (1000); l_return_code BOOLEAN; BEGIN l_return_code := fnd_request.set_options ('n', 'n'); fnd_global.apps_initialize (user_id => p_user_id, resp_id => p_resp_id, resp_appl_id => p_resp_appl_id ); ret := fnd_request.submit_request (application => 'XXCUST', program => p_prog_name, start_time => SYSDATE, sub_request => FALSE ); IF ret = 0 THEN fnd_message.retrieve (msgout ELSE

=> v_msg);

COMMIT; END IF; fnd_file.put_line (fnd_file.output, ret || ' test ' || v_msg); RETURN (ret); END run_requests; END xxey_move_order; /

Form to view the approved internal requisitions and to convert the requisitions into Move Orders

Copy the fmb attachment and save it in the folder. Then open the fmb file in Forms Builder.

You might also like