WIP 完工事务处理Demo
来源:互联网 发布:js怎么写乘法表 编辑:程序博客网 时间:2024/06/05 00:52
DECLARE l_itface_move_rec wip_move_txn_interface%ROWTYPE; l_itface_cst_rec cst_comp_snap_interface%ROWTYPE; l_itface_mtran_rec mtl_transactions_interface%ROWTYPE; l_itface_serial_rec mtl_serial_numbers_interface%ROWTYPE; l_error_status VARCHAR2(2); l_error_count NUMBER := 0; l_error_message VARCHAR2(10000); l_count NUMBER := 0; l_verify_count NUMBER; ln_request_no NUMBER := 0; l_assembly_id NUMBER; l_available_qty NUMBER; l_completion_date DATE; l_max_seq_num NUMBER; l_min_seq_num NUMBER; l_wip_entity_id NUMBER; l_date_released DATE; l_subinventory VARCHAR2(50); l_serial_ctl NUMBER; l_qty_completed NUMBER; l_locator_id NUMBER; l_serial_num VARCHAR2(50);BEGIN fnd_global.apps_initialize(user_id => 2411, resp_id => 50647, resp_appl_id => 20003); dbms_output.put_line('Organization' || chr(9) || 'Job No.' || chr(9) || 'Assembly' || chr(9) || 'Quantity' || chr(9) || 'Serial Number' || chr(9) || 'Completion Date' || chr(9) || 'Status' || chr(9) || 'Error Message'); l_itface_move_rec := NULL; l_itface_cst_rec := NULL; l_itface_mtran_rec := NULL; l_itface_serial_rec := NULL; l_itface_move_rec := NULL; l_error_status := 'S'; l_error_message := NULL; l_serial_num := NULL; l_assembly_id := NULL; l_available_qty := NULL; l_completion_date := NULL; l_max_seq_num := NULL; l_min_seq_num := NULL; l_wip_entity_id := NULL; l_date_released := NULL; l_subinventory := NULL; l_serial_ctl := NULL; l_qty_completed := NULL; l_serial_num := NULL; l_error_status := 'S'; l_error_message := NULL; l_count := l_count + 1; --Validate organization BEGIN SELECT ood.organization_id, ood.organization_code INTO l_itface_move_rec.organization_id, l_itface_move_rec.organization_code FROM org_organization_definitions ood WHERE ood.organization_code = 'WE1'; EXCEPTION WHEN OTHERS THEN l_error_status := 'E'; l_error_message := 'The organization is invalid!'; END; --Validate job IF l_itface_move_rec.organization_id IS NOT NULL THEN BEGIN SELECT wen.wip_entity_name, wen.wip_entity_id, wdj.primary_item_id, wdj.start_quantity - wdj.quantity_completed - wdj.quantity_scrapped, wdj.quantity_completed, wdj.date_released, wdj.completion_subinventory, wdj.completion_locator_id, wdj.attribute3 serial INTO l_itface_move_rec.wip_entity_name, l_wip_entity_id, l_assembly_id, l_available_qty, l_qty_completed, l_date_released, l_subinventory, l_locator_id, l_serial_num FROM wip_discrete_jobs wdj, wip_entities wen WHERE wdj.wip_entity_id = wen.wip_entity_id AND wdj.organization_id = wen.organization_id AND wen.wip_entity_name = 'LCY_TEST01' AND wdj.organization_id = l_itface_move_rec.organization_id AND wdj.status_type = 3; --status released EXCEPTION WHEN OTHERS THEN l_error_status := 'E'; l_error_message := l_error_message || '|' || 'The job is invalid!'; END; END IF; --Validate item IF l_assembly_id IS NOT NULL THEN BEGIN SELECT msi.primary_uom_code, msi.serial_number_control_code INTO l_itface_move_rec.transaction_uom, l_serial_ctl FROM mtl_system_items_b msi WHERE msi.inventory_item_id = l_assembly_id AND msi.organization_id = l_itface_move_rec.organization_id /*AND msi.segment1 = ''*/; EXCEPTION WHEN OTHERS THEN l_error_status := 'E'; l_error_message := l_error_message || '|' || 'The item is invalid!'; END; IF l_subinventory IS NULL THEN l_error_status := 'E'; l_error_message := l_error_message || '|' || 'The job default subinventory is null!'; END IF; END IF; IF l_available_qty < nvl(1, 0) OR nvl(1, 0) < 0 THEN l_error_status := 'E'; l_error_message := l_error_message || '|' || 'The qty is invalid!'; END IF; --Validate completion_date BEGIN l_completion_date := SYSDATE;--to_date(jobc.completion_date, 'dd/mm/yyyy hh24:mi:ss'); IF l_completion_date < l_date_released OR l_completion_date > SYSDATE THEN l_error_status := 'E'; l_error_message := l_error_message || '|' || 'The completion date should between release date and system date!'; END IF; EXCEPTION WHEN OTHERS THEN l_error_status := 'E'; l_error_message := l_error_message || '|' || 'The completion date is dd/mm/yyyy hh24:mi:ss!'; END; --get seq IF l_wip_entity_id IS NOT NULL THEN SELECT MIN(wop.operation_seq_num), MAX(wop.operation_seq_num) INTO l_min_seq_num, l_max_seq_num FROM wip_operations wop WHERE wop.wip_entity_id = l_wip_entity_id AND wop.organization_id = l_itface_move_rec.organization_id; IF l_min_seq_num IS NULL OR l_wip_entity_id IS NULL THEN l_error_status := 'E'; l_error_message := l_error_message || '|' || 'Faild to get operation seq!'; END IF; --validate serial IF l_serial_num IS NULL THEN IF l_serial_ctl <> 1 THEN l_error_status := 'E'; l_error_message := l_error_message || '|' || 'The assembly need a serial!'; END IF; l_itface_move_rec.transaction_type := 2; ELSE IF 1 > 1 THEN l_error_status := 'E'; l_error_message := l_error_message || '|' || 'The qty can not greater than 1 with serial!'; END IF; SELECT COUNT(*) INTO l_verify_count FROM mtl_serial_numbers msn WHERE msn.inventory_item_id = l_assembly_id AND msn.serial_number = l_serial_num AND msn.current_subinventory_code = l_subinventory --l_transaction_record.subinventory_code AND (msn.current_locator_id = nvl(l_locator_id, msn.current_locator_id) OR msn.current_locator_id IS NULL AND l_locator_id IS NULL) AND msn.current_organization_id = l_itface_move_rec.organization_id; IF l_verify_count > 0 THEN l_error_status := 'E'; l_error_message := l_error_message || '|' || 'The serial number is invalid!'; END IF; l_itface_move_rec.transaction_type := 1; END IF; END IF; IF l_error_status = 'S' THEN l_itface_mtran_rec.last_update_date := SYSDATE; l_itface_mtran_rec.last_updated_by := -1; l_itface_mtran_rec.creation_date := SYSDATE; l_itface_mtran_rec.created_by := -1; l_itface_mtran_rec.last_update_login := -1; SELECT mtl_material_transactions_s.nextval INTO l_itface_mtran_rec.transaction_interface_id FROM dual; l_itface_mtran_rec.transaction_header_id := l_itface_mtran_rec.transaction_interface_id; l_itface_mtran_rec.transaction_mode := 3; l_itface_mtran_rec.process_flag := 1; l_itface_mtran_rec.transaction_type_id := 44; l_itface_mtran_rec.transaction_source_id := l_wip_entity_id; l_itface_mtran_rec.operation_seq_num := l_max_seq_num; l_itface_mtran_rec.organization_id := l_itface_move_rec.organization_id; l_itface_mtran_rec.inventory_item_id := l_assembly_id; l_itface_mtran_rec.subinventory_code := l_subinventory; l_itface_mtran_rec.transaction_quantity := 1; l_itface_mtran_rec.transaction_uom := l_itface_move_rec.transaction_uom; l_itface_mtran_rec.transaction_date := l_completion_date; l_itface_mtran_rec.final_completion_flag := 'Y'; l_itface_mtran_rec.source_code := 'Manual Import'; l_itface_mtran_rec.source_header_id := 987654321; l_itface_mtran_rec.source_line_id := 987654321; INSERT INTO inv.mtl_transactions_interface VALUES l_itface_mtran_rec; FOR opera IN (SELECT wop.operation_seq_num FROM wip_operations wop WHERE wop.wip_entity_id = l_wip_entity_id AND wop.organization_id = l_itface_move_rec.organization_id ORDER BY wop.operation_seq_num) LOOP l_itface_cst_rec.transaction_interface_id := l_itface_mtran_rec.transaction_interface_id; l_itface_cst_rec.last_update_date := SYSDATE; l_itface_cst_rec.last_updated_by := 1124; l_itface_cst_rec.creation_date := SYSDATE; l_itface_cst_rec.created_by := 1124; l_itface_cst_rec.last_update_login := -1; l_itface_cst_rec.wip_entity_id := l_wip_entity_id; l_itface_cst_rec.operation_seq_num := opera.operation_seq_num; l_itface_cst_rec.quantity_completed := 1; --l_qty_completed; l_itface_cst_rec.primary_quantity := 1; INSERT INTO cst_comp_snap_interface VALUES l_itface_cst_rec; END LOOP; l_itface_serial_rec.last_update_date := SYSDATE; l_itface_serial_rec.last_updated_by := -1; --l_user_id; l_itface_serial_rec.creation_date := SYSDATE; l_itface_serial_rec.created_by := -1; --l_user_id; l_itface_serial_rec.last_update_login := -1; l_itface_serial_rec.transaction_interface_id := l_itface_mtran_rec.transaction_interface_id; l_itface_serial_rec.fm_serial_number := l_serial_num; l_itface_serial_rec.to_serial_number := l_serial_num; INSERT INTO mtl_serial_numbers_interface VALUES l_itface_serial_rec; ELSE l_error_count := l_error_count + 1; END IF; dbms_output.put_line(/*jobc.organization || chr(9) || jobc.job_no || chr(9) || jobc.assembly || chr(9) || jobc.quantity || chr(9) || jobc.serial_number || chr(9) || jobc.completion_date || chr(9) ||*/ l_error_status || chr(9) || l_error_message); --END LOOP; dbms_output.put_line('Total:' || l_count); dbms_output.put_line('Error:' || l_error_count); IF l_error_count > 0 THEN ROLLBACK; ELSE COMMIT; ln_request_no := apps.fnd_request.submit_request(application => 'INV' --cv_wip_app_name , program => 'INCTCM' --cv_move_api , description => NULL); IF ln_request_no > 0 THEN COMMIT; dbms_output.put_line('Request_id:' || ln_request_no); ELSE COMMIT; dbms_output.put_line('Submit standrd request faild'); END IF; END IF;END;
0 0
- WIP 完工事务处理Demo
- WIP 物料事务处理 API Demo
- WIP 移动事务处理API Demo
- WIP 完工入库单
- WIP完工入库及完工退回的几个重要问题
- WIP 离散工单导入 API Demo
- WIP
- 资源事务处理导入Demo
- 微信小程序精品demo完工:We重邮
- wip 預備提覆
- WIP Study
- wip.wip_job_schedule_interface
- WIP基础知识
- 面包WIP
- 网站完工
- 搭建完工
- Lib完工
- 项目完工
- Linux常用命令
- redis第三篇:redis 服务器和客户端常用的命令
- 字典树
- 【Leetcode长征系列】Length of Last Word
- Swing编程小结
- WIP 完工事务处理Demo
- java编码表GBK、GB2312与UTF-8的区别
- linux之pthread_atfork()函数讲解
- poi 实现excle 数据转入数据库 (已实现) 支持2007
- Spring注解入门
- 对动态增加menu的item时title过长的处理
- 【linux小菜鸟】根文件系统
- OSGI环境中集成struts2
- FPGA开发之FPGA开发流程简介